Buwanang Archive: Nobyembre 2007

Hindi mo Puwede Talunin SharePoint ni Abot

During the last two days, I have participated in two meetings during which we presented the results of a SharePoint project. The CIO and his team joined the first meeting. That’s standard and not especially notable. The IT department is obviously involved in an enterprise rollout of any technology project. The second meeting expanded to include a V.P. from marketing, several directors representing HR, Logistics, Manufacturing, Capital Projects, Quality, Purchasing, Corporate development and other departments (some of whom were not even directly involved in the current phase). That’s a mighty wide audience.

In my prior life, I primarily worked on ERP and CRM projects. They both have a fairly wide solution domain but not as wide as SharePoint. To be fully realized, SharePoint projects legitimately and necessarily reach into every nook and cranny of an organization. How many other enterprise solutions have that kind of reach? Not many.

SharePoint clearly represents an enormous opportunity for those of us fortunate enough to be in this space. It provides a great technical opportunity (na kung saan ay sa paanuman naka-on ang kanyang ulo dito under "Technologies You Must Master"). But even better, SharePoint exposes us to an extensive and wide range of business processes through these engagements. How many CRM specialists work with the manufacturing side of the company? How many ERP consultants work with human resources on talent acquisition? SharePoint exceeds them both.

Tulad ng anumang bagay, hindi ito perpektong, subalit ito ay sinumpa magandang lugar upang maging.

Dahil sa [punan ang iyong pinaka-mahal sa tao / mas mataas na pagiging], don’t change the ‘Title’ haligi site.

Sa SharePoint mga forum, someone occasionally asks about "changing the label of Title" or about "removing title from lists".

Ika-line: Huwag gawin ito!

Sadly, ang user interface ay nagbibigay-daan sa isang one-way na pagbabago ng label na iyon haligi tulad ng ipinapakita:

imahen

Title is a column associated with the "Item" uri ng nilalaman. Marami, marami, maraming CT ni gamitin ang hanay na ito at kung baguhin mo ito dito, it ripples out everywhere. There’s a good chance that you didn’t intend for that to happen. You were probably thinking to yourself, "I have a custom lookup list and ‘Title’ lamang ay hindi magkaroon ng kahulugan ng isang pangalan ng hanay, so I’m going to change it to ‘Status Code’ and add a description column." But if you follow through on that thought and rename ‘Title’ to ‘Status Code’, pamagat ng bawat listahan ng (kabilang ang mga dokumento aklatan) changes to "Status Code" at marahil ay ay hindi nilayon para sa na mangyari.

Ang tunay na problema ay na ito ay isang one-way na pagbabago. The UI "knows" that "title" is a reserved word. Kaya, if you try and change "Status Code" back to "Title", ito ay pumipigil sa iyo at ngayon ikaw lagyan ng kulay ang iyong sarili sa isang sulok using paint that never dries 🙂

Kaya kung ano ang mangyayari kung mayroon ka nang ito ay nagbago? I haven’t seen the answer we all want, which is a simple and easy method to change the label back to ‘Title’. Right now, the best advice is to change it to something like "Doc/Item Title". That’s a generic enough label that may not be too jarring for your users.

Mayroon akong ilang mga iba pang mga ideya na kung saan ay sa aking to-do list ng mga bagay upang pananaliksik:

  • Makipag-ugnay sa Microsoft.
  • Gawin ang isang bagay sa modelo bagay, siguro sa pagsama ng isang tampok.
  • Figure out ang database schema at mano-manong i-update ang SQL. (Dapat kang makipag-ugnay sa Microsoft bago gawin ito bagaman; ito ay malamang na walang bisa ang iyong suporta sa kontrata).

Kung sinuman ay alam kung paano upang malutas ito, paki-post ng komento.

I-update ang late afternoon, 11/15: Nakita ko ang link na ito na naglalarawan ng pamamaraan para sa paglikha ng isang uri ng mga listahan na ito ay walang isang pamagat ng haligi: http://www.venkat.org/index.php/2007/09/03/how-to-remove-title-column-from-a-custom-list/

BDC ADF at ang iyong mga kaibigan, CDATA

Napansin ko ang ilang mga hindi akma at hindi kailangan hand-encode ng RdbCommandText sa ilang mga halimbawa (kabilang ang MSDN dokumentasyon).

I wanted to point out to newcomers to BDC that commands can be wrapped inside a CDATA tag in their "natural" form. Kaya, ito nakahihiya konstruksiyon:

<Ari-arian Pangalan="RdbCommandText" Uri="System.String">
Piliin dbo.MCRS_SETTLEMENT.id, dbo.MCRS_SETTLEMENT.settlement mula dbo.MCRS_SETTLEMENT
WHERE (ID &gt;= @MinId) AT (ID &lt;= @ MaxId)
</Ari-arian>

Maaaring mas mahusay na kinakatawan sa ganitong paraan:

<Ari-arian Pangalan="RdbCommandText" Uri="System.String">
<![CDATA[
Piliin dbo.MCRS_SETTLEMENT.id, dbo.MCRS_SETTLEMENT.settlement mula dbo.MCRS_SETTLEMENT
WHERE (ID >= @MinId) AT (ID <= @ MaxId)
]]>
</Ari-arian>

</dulo>

BDC aklat ng baguhan

Intro sa BDC

Halimbawa functional: BDC ADF na nag-uugnay sa SQL database na may naka-embed na user id at password

I needed to wire up MOSS to a SQL database via BDC. For testing/POC purposes, I wanted to embed the SQL account user id and password in the ADF. Starting with ang template na ito (http://msdn2.microsoft.com/en-us/library/ms564221.aspx), Nilikha ko ang isang ADF na nag-uugnay sa isang partikular na halimbawa SQL server at mga log in gamit ang isang tiyak na user id at password at ipinakita ang snippet na ito:

  <LobSystemInstances>
    <LobSystemInstance Pangalan="ClaimsInstance">
      <Katangian>
        <Ari-arian Pangalan="AuthenticationMode" Uri="System.String">Ipinasang</Ari-arian>
        <Ari-arian Pangalan="DatabaseAccessProvider" Uri="System.String">SqlServer</Ari-arian>
        <Ari-arian Pangalan="RdbConnection Pinagmulan ng Data" Uri="System.String">aktwal na server  aktwal na halimbawa</Ari-arian>
        <Ari-arian Pangalan="RdbConnection Paunang Catalog" Uri="System.String">aktwal na paunang catalog</Ari-arian>
        <Ari-arian Pangalan="RdbConnection Integrated Security" Uri="System.String">SSPI</Ari-arian>
        <Ari-arian Pangalan="RdbConnection Pooling" Uri="System.String">hindi totoo</Ari-arian>

        <!-- Ito ang mga mahahalagang halaga: -->
        <Ari-arian Pangalan="RdbConnection User ID" Uri="System.String">isangctual User ID</Ari-arian>
        <Ari-arian Pangalan="RdbConnection Password" Uri="System.String">aktwal Password</Ari-arian>
        <Ari-arian Pangalan="RdbConnection Trusted_Connection" Uri="System.String">hindi totoo</Ari-arian>

      </Katangian>
    </LobSystemInstance>
  </LobSystemInstances>

Ito ay hindi isang pinakamahusay na kasanayan, but it’s useful for a quick and simple configuration for testing. This was surprisingly difficult to figure out. I never found a functional example with search keywords:

  • adf naka-embed na userid at password
  • i-embed ang user id at password sa adf
  • i-embed ang user id at password sa adf bdc
  • sharepoint bdc aklat ng baguhan
  • sharepoint embed user id at password sa adf

</dulo>

Mag-subscribe sa aking blog.

SPD workflow pasadyang mga aksyon — string pagmamanipula ng mga pagpapabuti

Tungkol sa isang linggo na ang nakakalipas, I started up a codeplex project that provides a simple and reasonably generic method for adding custom action functions to SharePoit Designer workflow. It’s described here: http://www.codeplex.com/spdwfextensions. Beyond simply providing a framework, it also aims to provide a set of useful functions that will make SPD more useful/flexible/powerful.

Narito ang mga kasalukuyang nakaplanong tampok para sa bersyon 1.0: https://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=spdwfextensions&ReleaseId=8280

Kung sinuman ay may anumang mga interes sa proyektong ito, mangyaring mag-iwan ng komento o simulan / idagdag sa isang talakayan dito: http://www.codeplex.com/spdwfextensions/Thread/List.aspx

Narito ang mga kasalukuyang hanay ng mga pag-andar na naka-code (bagaman hindi ganap na nasubukan bilang ng 11/08/07):

Tungkulin Paglalarawan (kung hindi pareho. Net function na)
Num-entry() Returns the number "entries" in a string as per a specified delimiter.

Halimbawa: Num-entries in a string "a,b,c" with delimiter "," = 3.

Pagpasok() Returns the nth token in a string as per a specified delimiter.
Haba String.Length
Palitan() String.Replace()
Naglalaman ng() String.Contains()
Returns the word "true" or the word "false".
Substring(simulan) String.Substring(simulan)
Substring(simulan,dulo) String.Substring(simulan,dulo)
ToUpper() String.ToUpper()
ToLower() String.ToLower()
StartsWith() String.StartsWith()
Returns the word "true" or the word "false".
EndsWith() String.EndsWith()
Returns the word "true" or the word "false".

Mabilis & madaling url Encoding desktop utility

Ako nangangailangan na url-encode ng ilang mga string na ito linggo at slapped magkasama ee kaunti utility na naisip ko na gusto kong ilagay up sa SkyDrive para sa komunidad.

Kunin ang binary dito: http://cid-1cc1edb3daa9b8aa.skydrive.live.com/self.aspx/SharePoint/WinUrlEncode.zip

Kumuha ng visual studio solusyon dito: http://cid-1cc1edb3daa9b8aa.skydrive.live.com/self.aspx/SharePoint/WinUrlEncodeVS2005.zip

Narito ang isang screen shot:

imahen

Mabilis at madali: I-embed ang isang hyperlink sa view ng data web bahagi XSLT

I-UPDATE (01/17/08): Ang blog entry uusap tungkol sa mas kabutihan hyperlink XSL: http://www.sharepointsecurity.com/blog/sharepoint/sharepoint-2007-development/rewriting-links-in-search-results-xslt.

Pangkalahatang-ideya at Layunin: I had created a simple bar chart to serve as component on a dashboard. I’ll save the details on building charts for another post, ngunit hindi ko na kumatha diskarteng (o ang mga tandang pananong, para sa na mahalaga). It turned out there was a bug in the chart and while I fixed that, I took the opportunity to convert some labels into hyperlinks that pointed at the underlying list behind the graph. Halimbawa, there is a label with value "Hold". I wanted to turn the label into a hyperlink so that the user could click on it and drill down to the specific entries in the list whose status value is "Hold".

Mga Hakbang:

  1. Gamitin ang visual studio para sa sharepoint-aware intellisense.
  2. Kopyahin ang DVWP ni XSLT sa visual studio (lumikha ng isang blangko proyekto, magdagdag ng isang XSL file sa proyekto).
  3. Kopyahin ang link na gusto mong gamitin sa clipboard.
  4. Ilagay ito sa tamang lokasyon sa XSL.
  5. Convert URL argument separators on the query string from "&" to "&amp;"
  6. Url-encode ang mga indibidwal na mga argumento.
  7. Pakibalot na sa loob ng isang <a href…> </isang>

Halimbawa:

Mayroon akong isang URL:

http://[server]/[lugar]/Listahan / Buksan ang% 20Positions/AllItems.aspx?Tingnan ={84EEA2F5-121B-40B7-946F-0FA704A1DAA1}&FilterField1 = Recruiter&FilterValue1 = Hold

I-convert ito sa:

     <isang href="Listahan / Buksan ang% 20Positions/AllItems.aspx?Tingnan =% 7b84EEA2F5-121B-40B7-946F-
0FA704A1DAA1% 7a&amp;FilterField1 = Recruiter&amp;FilterValue1 = Hold"> Hawakan: </isang>

Manu-mano ko pa transformed ang unang argumento mula sa:

{84EEA2F5-121B-40B7-946F-0FA704A1DAA1}

upang:

%7b84EEA2F5-121B-40B7-946F-0FA704A1DAA1% 7a

(Sa ganitong, Bukas ang suhay transforms sa% 7b at ang pangwakas suhay transforms sa% 7a)

Ang pangalawa at pangatlong argumento’ mga parameter ("FilterField1=Recruiter" and "FilterValue1=Hawakan" buong galang) hindi kailangang ma-url-encode nang dahil hindi sila naglalaman ng anumang hindi ligtas na mga character.

Mga Tala:

Diskarteng ito ay dapat pangkalahatan ay gumagana sa kahit saan nais mong i-embed ng isang hyperlink sa XSLT hyperlink kung saan ang may kasamang mga parameter sa URL tulad ng:

http://[server]/[lugar]/Listahan / Buksan ang% 20Positions/AllItems.aspx?Tingnan ={84EEA2F5-121B-40B7-946F-0FA704A1DAA1}&FilterField1 = Recruiter&FilterValue1 = Hold

Nakatanggap ako ang URL mismo sa pamamagitan ng pag-access ang listahan ng custom at mano-manong pag-filter sa hanay ng katayuan (labeled "Recruiter" sa itaas).

Mabilis at simpleng: Paganahin ang SharePoint Designer workflow i-update ang isang form na ng InfoPath

Senaryo: I have an InfoPath form that front-ends a workflow process implemented using SharePoint Designer. At one point, a manager must approve the form. Dahil hindi ko maaaring bilangin sa ng workflow kasaysayan upang matugunan ang aking mga pangangailangan sa pag-awdit, Na maghusga ko upang i-imbak ang aking sariling pag-awdit ng mensahe nang direkta sa form mismo.

Pangkalahatang-ideya ng:

Idisenyo ang form at mag-publish ang mga ito bilang isang uri ng nilalaman and the form itself to a document library. Mark desired form fields as being updateable from MOSS. The form is tied to the content type and the content type is "attached" sa isang form ng library (o maraming, kung gusto mong). Write a workflow that updates the field.

Tiyak na Hakbang:

  1. Create a document library. This will hold your InfoPath template.
  2. Create a forms library.
  3. Create the InfoPath form. Include a text field, "Audit Message".
  4. I-publish ang form bilang isang uri ng nilalaman (Hindi ng isang dokumento).
  5. Habang pagpuno ng dialog publish:
    isang) I-save ang ang. Xsn na file sa library dokumento (hakbang #1).
    b) Publish the "Audit Message" patlang at mark totoo: "Allow users to edit data in this field by using a datasheet or properties page".
    c) Lumikha ng isang bagong uri ng nilalaman at bigyan ito ng isang naaangkop na pangalan.
  6. Ma-access ang mga form ng library.
    isang) Pumunta sa mga advanced setting nito at paganahin ang mga form ng library upang pamahalaan ang mga uri ng nilalaman.
    b) Piliin ang nilikhang bagong uri ng nilalaman (5c itaas). It will be grouped under "Microsoft InfoPath" (o katulad na).
    c) Remove the default "Form" uri ng nilalaman mula sa library.
    d) Mark the library to "show as web page" kaya form na iyon ay ilunsad mula sa SharePoint at hindi ang InfoPath client workstation.
  7. Go back to the forms library proper and click "New" sa lamang na i-verify ang form na iyon ay nai-post sa tama at kumikilos hangga't gusto mo.
  8. Painitin SharePoint Designer at mag-navigate sa site na nagho-host ng iyong form library (mula sa hakbang 2).
  9. Lumikha ng isang bagong daloy ng trabaho na naka-attach sa library form.
  10. Add a single action "Set Field in Current Item". You should expect SharePoint Designer to list your your field, "Audit Message". Assign it a value.
  11. I-click ang Tapos na at bumalik sa form na ang library.
  12. Create a new form and put some test value into the "Audit Message" patlang.
  13. I-save ito at bumalik sa form na ang library.
  14. Mag-right click, select "Workflow" at simulan ang iyong workflow.
  15. It should run almost immediately. Pull up the form (mula sa hakbang 12) at kung lahat ay nawala upang magplano, "Audit Message" ay bibigyan ng anumang halaga na iyong ibinigay sa hakbang 10.

Mga Tala:

Not all controls may configured for this bi-directional communication. Halimbawa, it does not seem to implement an SPD workflow that modifies text fields wrapped inside repeating sections.

One of the key take-away’s here is that we’ve really created a content type with an associated template. This also enables us to store multiple InfoPath form templates in the same form library.

This requires forms server. It’s most certainly not going to work in a WSS 3.0 kapaligiran at marahil kahit na nangangailangan ng isang Enterprise SharePoint kapaligiran.

Ang Beagle Ang ay Lumapag (Oktubre 2007 problema)

(Ito ay talagang isang maliit na lumang balita, ngunit bilang aking mga paboritong salawikain himpilan ng bumbero proclaims, "Better late than never").

Tingnan ito dito: http://www.sharepointbeagle.com/

Kung hindi mo pa nagagawa, tiyaking mag-sign up.

Talaga, tiyakin na basahin ang aking mga artikulo about a real-world SharePoint project (kabilang ang mga kinakailangan sa kahulugan, KPI ni, uri ng nilalaman, dashboards and more) as well as aking kasamahan ni article about the content query web part.

Mayroong maraming iba pang mga magagandang bagay-bagay masyadong.

Paano mag-alis “Tingnan ang lahat ng nilalaman ng site” link

Ako nagtanong tanong na ito halos bawat linggo, normal sa konteksto ng isang talakayan seguridad. An administrator/site creator has provisioned a site, configure seguridad, arranged web parts and customized the quick launch to provide that oh-so-perfect set of options to the end user. Pero, sa labas ng kahon, you can’t remove the "view all site content" link.

Mark Wagner Nagbibigay ang kasagutan dito (http://www.crsw.com/mark/Lists/Posts/Post.aspx?ID=36). Ang kanyang write-up ay kasindak-sindak sa dalawang mga antas. Ito ay nagbibigay ng isang sagot sa tanong, "How do I remove the View All Site Content" link? Pagkatapos, ito sasagutin ng agarang follow-sa tanong: Paano ko madaling paganahin ang view ng lahat ng mga link ng site ng nilalaman sa isang site-by-site na batayan?

Bilang bonus: Ang kanyang diskarte ay gumagana para sa WSS, hindi lamang Moss.

</dulo>

Mag-subscribe sa aking blog!