Buwanang Archive: Disyembre 2007

Pag-iisip Tungkol sa Commercial mga Produkto

Ko bang ilagay up ng isang SharePoint Designer extension ng proyekto hanggang sa CodePlex mas maaga taon na ito at kahit na talagang ito ay medyo limitado sa saklaw, Tantyahin ko na itong ma-download sa pamamagitan ng 40 upang 60 (marahil kahit na 100) companies in just about two months. That indicates to me that there’s a market for that solution and if I were to successfully commercialize it, na maaaring isalin sa isang mahusay na halaga ng beer 🙂

Ang aking background ay talagang marami pang iba sa pagbuo ng produkto at alam ko kung ano ang kinakailangan upang dalhin sa isang top-bingaw produkto, na taliwas sa isang proyekto CodePlex kinagigiliwang libangan, to market. In my antesedente, Ako ay may pananagutan para sa produkto R&D for all software products. The difference between then and now is that I’m a consultant now working for an (mahusay na mahusay) consulting firm (Conchango). Dati, Mayroon akong isang buong kumpanya sa likod ng akin at sa harap ng akin, selling and supporting the products we brought to market. Ngayon, Gusto kong mapag-isa.

Mayroon akong ilang mga ideya ng produkto sa isip, but I think the easiest would be to create a commercial version of the above-mentioned CodePlex project that uses that as a starting point and extends it further. My fuzzy off-the-cuff thinking is to charge something like $100 para sa isang walang limitasyong lisensya developer at $500 per production web front end. I think I would also give away the source code.

Kung mayroon kang mga saloobin o mga karanasan na handa mong ibahagi, mangyaring mag-iwan ng komento o email sa akin nang direkta. I’d like to hear opinions like:

  • Ay ito ang lahat ng may halaga?
  • Praktikal na mga mungkahi para sa marketing, pagkolekta ng pera, nagbabaha-bahagi.
  • Pagpepresyo.
  • Suporta.
  • Anumang iba pang mga komento na gusto mong umalis.

It’s "easy" upang makabuo ng mga ideya ng produkto at ipatupad ang mga ito, though many dozens of hours of work are required. The other stuff is not as easy for me.

</dulo>

Technorati Tags:

Linggo Umaga ng nakakatawang: “Si Jesus Dapat Die”

Binili namin ang aming mga unang (at lamang) "luxury" car back when hurricane Floyd nailed the east coast of the U.S. We got a LOT of rain here in New Jersey and ilang araw na lumipas before life returned to normal. Just before Floyd struck, gumawa kami ng isang alok para sa isang ginamit Volvo 850 GL at pagkatapos Floyd struck, ito ay nagdulot bahay.

It was our first car with a CD player. Like most new car owners, nagpunta kami ng isang maliit na mabaliw CD, revived our dormant CD collection and went on long drives just to listen to CD’s in the car. Like all fads, this passed for us and we ended listening to the same CD over and over again. Sa aming kaso, ito ay Si Jesu-Cristo superstar.

Ang isa sa mga (marami) makinang na piraso sa rock na opera ay Sung sa pamamagitan ng pagtatatag ng mga uri ng relihiyon, pinangunahan ng Caiaphas, the "High Priest". They sing their way into deciding how to handle the "Jesus problem" and Caiaphas directs them to the conclusion that "Jesus must die". The refrain on the song is "Just must die, dapat mamatay, dapat mamatay, this Jesus must die". You hear that refrain a lot in that piece.

Sa oras, my son was about three years old. You can probably see where this is going.

I came home from work one day and my son is in the living room playing with toys and humming to himself. I’m taking off my jacket, Naghahanap sa pamamagitan ng mail at lahat ng aking mga karaniwang walk-in-the-door bagay-bagay at ako biglang mapagtanto na lamang niya sinasabi, hindi tunay na pag-awit: "Jesus must die, dapat mamatay, must die." I was mortified. I could just see him doing that while on one of his baby play dates at a friend’s house — marahil ang huling petsa ng pag-play sa kaibigang iyon sanggol.

We pulled that CD out of the Volvo after that 🙂

</dulo>

Nagustuhan Google Tanggapin ang Aking Live Spaces Blog Sa Program ng AdSense

I-UPDATE: Tulad ng 03/09, I have found no way to integrate my live spaces account with Google Adsense. Microsoft’s system here seems to prevent all of the technical mechanisms that Google provides would-be adsense hosters. I tend to believe this is mainly a side effect of the security they’ve built into live spaces, not a direct effort to disable Adsense.

Ito ay hindi isang SharePoint post, ngunit maaaring maging ng interes sa mga blogger sa pangkalahatan.

Someone commented on their Windows Live Spaces blog that Google affirmatively denied their application to participate in AdSense. She theorized that Google denied her because Windows Live Spaces hosts her blog. Gayunman, Kamakailan lamang ako ay natanggap sa programa para sa aking live na mga puwang blog, kaya ang patakaran ay alin man sa binago o Google tinanggihan ang kanyang para sa ilang iba pang mga kadahilanan.

Talaga, Hindi ko makita ang anumang halata na paraan upang isama ang Google AdSense sa aking live na espasyo, but it’s a start 🙂

</dulo>

Technorati Tags: ,

Pagpapatupad ng Master / Detalye ng Relasyon Paggamit ng Custom na Mga Listahan

Forum users frequently as questions like this:

> Hello,
>
> Mangyaring sabihin sa akin kung may anumang mga posibilidad upang bumuo ng isang pasadyang listahan na may
> master at detalye ng uri (tulad ng mga invoice) without using InfoPath.
>

SharePoint ay nagbibigay ng ilang mga out ng mga tampok kahon na sumusuporta sa mga uri ng mga kinakailangan sa negosyo na katulad ng.

Kalimitan, one links two lists together using a lookup column. List A contains the invoice header information and list B contains invoice details.

Use additional lists to maintain customer numbers, product numbers, at iba pa.

Use a content query web part (in MOSS only) and/or a data view web part to create merged views of the lists. SQL Server Reporting Services (SRS) is also available for the reporting side of it.

Gayunman, there are some important limitations that will make it difficult to use pure out-of-the-box features for anything that is even moderately complex. These include:

  • Size of related lookup lists vs. "smartness" of the lookup column type. A lookup column type presents itself on the UI differently depending on whether you’ve enabled multi-select or not. In either case, the out-of-the-box control shows all available items from the source list. If the source list has 1,000 mga item, that’s going to be a problem. The lookup control does not page through those items. Sa halip, it pulls all of them into the control. That makes for a very awkward user interface both in terms of data entry and performance.
  • Lookups "pull back" one column of information. You can never pull back more than one column of information from the source list. Halimbawa, you cannot select a customer "12345" and display the number as well as the customer’s name and address at the same time. The lookup only shows the customer number and nothing else. This makes for an awkward and difficult user interface.
  • No intra-form communication. I’ve written about this here. You can’t implement cascading drop-downs, conditionally enable/disable fields, at iba pa.
  • No cascading deletes or built-in referential integrity. SharePoint treats custom lists as independent entities and does not allow you to link them to each other in a traditional ERD sense. Halimbawa, SharePoint allows you to create two custom lists, "customer" and "invoice header". You can create an invoice header that links back to a customer in the customer list. Pagkatapos, you can delete the customer from the list. Sa labas ng kahon sa, there is no way to prevent this. To solve this kind of problem, you would normally use event handlers.

It may seem bleak, but I would still use SharePoint as a starting point for building this kind of functionality. Though there are gaps between what you need in a solution, SharePoint enables us to fill those gaps using tools such as:

  • Kaganapan handler. Use them to enforce referential integrity.
  • Custom columns: Create custom column types and use them in lieu of the default lookup column. Add paging, buffering and AJAX features to make them responsive.
  • BDC. This MOSS-only feature enables us to query other SharePoint lists with a superior user interface to the usual lookup column. BDC can also reach out to a back end server application. Use BDC to avoid replication. Rather than replicating customer information from a back end ERP system, use BDC instead. BDC features provide a nice user interface to pull that information directly from the ERP system where it belongs and avoids the hassle of maintaining a replication solution.

    BDC is a MOSS feature (not available in WSS) and is challenging to configure.

  • ASP.NET web form: Create a full-featured AJAX-enabled form that uses the SharePoint object model and/or web services to leverage SharePoint lists while providing a very responsive user interface.

The last option may feel like you’re starting from scratch, but consider the fact that the SharePoint platform starts you off with the following key features:

  • Security model with maintenance.
  • Menu system with maintenance.
  • "Master table" (i.e. custom na mga listahan) with security, built-in maintenance and auditing.
  • Hanapin.
  • Back end integration tools (BDC).

If you start with a new blank project in visual studio, you have a lot of infrastructure and plumbing to build before you get close to what SharePoint offers.

I do believe that Microsoft intends to extend SharePoint in this direction of application development. It seems like a natural extension to the existing SharePoint base. Microsoft’s CRM application provides a great deal of extensibility of the types needed to support header/detail application development. Although those features are in CRM, the technology is obviously available to the SharePoint development team and I expect that it will make its way into the SharePoint product by end of 2008. If anyone has an knowledge or insight into this, mangyaring mag-iwan ng komento.

</dulo>

Quick Tip: Bahagi ng nilalaman Query Web, Lookup Haligi Halaga at XSL

I have a column name in a content type named "Real Estate Location".

That column is of type "lookup".

Ako nabago <CommonViewFields> at ItemStyle.xsl upang ipakita ang mga haligi.

Isang simple <xsl:sulit ng piliin =…> Ibinabalik ng likod ng isang panloob na halaga na kasama ang ORDINAL data posisyon, tulad ng:

1;#Miami

Upang makuha ang pantao-friendly na halaga, gamitin xsl substring-pagkatapos, tulad ng ipinapakita:

<xsl:value-of select="substring-after(@ Real_x005F_x0020_Estate_x005F_x0020_Location,'#')"></xsl:halaga-ng>

Gamitin ang diskarteng ito sa tuwing ikaw ay nagtatrabaho sa paghahanap ng mga halaga sa XSL transforms at kailangan upang makuha ang pantao-friendly na halaga.

<katapusan />

Technorati Tags: , ,

SharePoint Beagle Disyembre Maglabas Up & Mabuhay

Marami sa kilala mo na ito, but the December edition of SharePoint Beagle is live.

Ang bawat artikulo ay nagkakahalaga ng pagbabasa sa aking opinyon.

I want to give a little extra bump to my colleague’s article (Natalya Voskrensenskya). She provides a screen-shot extravaganza while describing how she used custom lists, workflow, SharePoint Designer, data views and other elements to implement a self-service training feature in MOSS. She describes techniques that can be applied in many different business scenarios. Check out her blog while you’re at it.

Don’t forget to check out ang aking mga artikulo as well 🙂 I wrote about using MOSS to help an HR department manage open positions.

</dulo>

Moss ay nagsasabi sa Akin “Access denied” i-edit ang isang daloy ng trabaho Task, Ngunit ko Talagang Mayroon ba Magkaroon ng Access

I’ve implemented a workflow using SharePoint Designer in a site which is mainly read-only to "NT_AUTHORITY\Authenticated Users" (i.e. lahat). There is a forms library for an InfoPath form. There is an associated workflow tasks list as well so that when the workflow operates, maaari itong magtalaga ng mga gawain sa mga tao.

I break permission for the forms library and task list so that any authenticated user can create forms and update their assigned tasks.

I test with my low-privileges test account.

Can I fill out and save a form to the library? –> YES

Can I access the task from an email link? –> YES

Can I see an Edit workflow task link –> YES

Can I click on that link? –> NO … Permission Denied.

Why can I see an edit link that denies me permission when I click on it? That’s not how it’s supposed to work…

I go through the security configuration again, very closely. I do it again. I consider deleting this post because I obviously don’t know anything about security.

Sa wakas, I search the Internets. I find this highly unlikely MSDN forum thread: http://forums.microsoft.com/TechNet/ShowPost.aspx?PostID=1838253&SiteID=17

The posters appear to be suggesting that the simple act of exporting the workflow to a drive platter will fix a MOSS security issue? I can hardly believe I just typed that. I’m reminded of the South Park episode about the 9/11 conspiracy where Stan is asking our Preznit, "Really?" over and over again.

Kaya, nothing to lose, I fire up SPD, right-click on the workflow and save it to my c:\ drive. That would be the c:\ drive on my laptop. I’m looking over my shoulder the whole time so that no one will ask me, "why are you saving that workflow to your laptop?"

Incredibly, that solves my problem. I can edit the task.

I hereby nominate this to be the Most Bizarre Workflow Workaround of 2007.

</dulo>

Technorati Tags:

SharePoint Designer, Kasalukuyang Item ni “Ganap na nai-encode na URL” at HTTPS

We often want to send an email that includes a hyperlink to the item or document that triggered the workflow. We can use current item’s "Encoded Absolute URL" for this purpose. Gayunman, it always seems to use "http" for the URL protocol. If your site runs on HTTPS then it will not work for you.

imahen

Sa pagkaalam ko, there is no out of the box solution to this problem. If you need to use HTTPS, wala kang sumali sa pagpipilian na kahon.

Upang malutas ito, create a custom action that provides a string replace function to use in your workflow. Alternatively, gumamit ng isang 3rd party na tool tulad ng mga mahuhusay na package dito: http://www.codeplex.com/spdwfextensions 🙂

</dulo>

Technorati Tags: ,

Mabilis at madali: Matukoy ang Panloob na Haligi Pangalan ng isang Haligi ng Site

I-UPDATE: Jeremy Thake Na-blog tungkol sa mga ito at ilagay up ng ilang mga code para sa isang application console na nagpapakita ng panloob na mga pangalan.

I was trying to get a content query web part to display a due date from a task and because the screen label is "Due Date", Ako ipinapalagay na ang Pangalan ng hanay upang gamitin sa <CommonViewFields> is "Due_x0020_Date".

Mali!

The real column name in this case was "DueDate".

Paano ko mahanap ito? I re-read Heather Entry sa blog ni Solomon sa pagbabago ng CQWP to show additional columns of data. She describes this process at step #13. Trust it. It’s correct. Kahit, it was correct for me. I did not trust it at first for another column with a much longer name.

I say "Trust it" because I did not trust it and probably wasted near two hours butting my head up against a wall. After I resolved the "DueDate" pangalan, Nais kong magdagdag ng isa pang field upang <CommonViewFields>. Using the Solomon technique, I was getting a column name like "XYZ_x0020_Project_x0020_Due_x00".

Akala ko sa sarili ko, that’s clearly a truncated name. I went ahead and un-truncated it with no success. I finally used the seemingly truncated name and it worked.

Bonus tip: Kapag ako ay nagtatrabaho kasama ang CQWP, kung ako ay nagdagdag ng isang masamang pangalan ng panloob na <CommonViewFields>, the CQWP would tell me that the query had returned no results. Pero, kung ako ay nagdagdag ng isang uri ng data upang ang pangalan ng field, it would return a result. Adding the data type actually masked a problem since I was referencing a non-existent field. I could add it, ngunit kapag sinubukan ko upang ipakita ang halaga nito, I would always get a blank.

Ito ay hindi mask ang error:

<CommonViewFields>Due_x0020_Date;</CommonViewfields>

Ito ang mask ang error:

<CommonViewFields>Due_x0020_Date,DATETIME;</CommonViewfields>

</dulo>

Mag-ingat sa paglabag ng mga Pagbabago upang ItemStyle.xsl

Ako ay nagtatrabaho may ItemStyle.xsl upang i-customize ang hitsura ng Bahagi ng Nilalaman Query sa Web at karapatan tungkol sa oras ng tanghalian, I made a breaking change to the xsl. I didn’t realize it, but this had far reaching effects throughout the site collection. I went off to lunch and upon my return, napansin ang mensaheng ito lumilitaw sa isang bungkos ng mga lugar:

Hindi upang ipakita ang Web Bahagi. Upang i-troubleshoot ang problema, buksan ang Web page na ito ng Windows SharePoint Mga Serbisyo katugma sa HTML editor tulad ng Microsoft Office SharePoint Designer. Kung magpapatuloy ang problema, makipag-ugnay sa administrator ng iyong Web server.

Blamed ko ang client (hindi napagtatanto bilang pa na ito ay ang aking kasalanan sa puntong ito) but eventually noticed that visual studio intellisense was warning me that I had malformed XSL. I corrected it and everything started working.

Darned ingat kapag nagtatrabaho sa ItemStyle.xsl (at anumang ng pandaigdigang XSL file) — paglabag sa mga ito ay nakakaapekto sa maraming mga artifacts sa koleksyon ng site.

<katapusan />