maandelikse Argiewe: November 2007

Kan jy nie Klits SharePoint se bereik

Gedurende die laaste twee dae, 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. van bemarking, Verskeie direkteure verteenwoordig HR, Logistiek, Vervaardiging, Kapitaalprojekte, Gehalte, Aankoop, Korporatiewe ontwikkeling en ander departemente (Sommige van hulle is selfs nie direk betrokke in die huidige fase). That’s a mighty wide audience.

In my vorige lewe, 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 (wat een of ander manier op sy kop gedraai hier 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.

Soos enigiets, dit is nie volmaak, maar dit is 'n goeie verdoem plek om te wees.

Vir die liefde van [Vul in jou mees geliefde persoon / hoër], don’t change the ‘Title’ site kolom.

Op die SharePoint forums, someone occasionally asks about "changing the label of Title" or about "removing title from lists".

Bottom line: Doen dit nie!

Ongelukkig, die gebruikerskoppelvlak kan 'n een-rigting verandering van die kolom etiket soos:

beeld

Title is a column associated with the "Item" die tipe inhoud. Baie, baie, baie CT se gebruik van hierdie kolom en as jy dit hier verander, 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’ maak net nie sin as 'n kolom naam, 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’, elke lys se titel (insluitend dokument biblioteke) changes to "Status Code" en jy sal waarskynlik het nie van plan om dit om te gebeur.

Die werklike probleem is dat hierdie is 'n een-rigting verandering. The UI "knows" that "title" is a reserved word. So, if you try and change "Status Code" back to "Title", Dit sal verhoed dat jy en het jy nou geverf jouself in 'n hoek using paint that never dries 🙂

So wat gebeur as jy dit reeds verander? 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.

Ek het 'n paar ander idees wat op my te-doen lys van dinge om navorsing:

  • Kontak Microsoft.
  • Iets te doen met die voorwerp model, Miskien in samewerking met 'n funksie.
  • Uit te vind die databasis skedule en die hand te werk SQL. (Jy moet kontak met Microsoft voor om dit te doen al; sal dit waarskynlik tot niet u ondersteuning kontrak).

As iemand weet hoe om dit op te los, post a comment.

Werk laatmiddag, 11/15: Ek het gevind dat hierdie skakel wat beskryf 'n metode vir die skep van 'n tipe van die lys wat nie 'n titel kolom: http://www.venkat.org/index.php/2007/09/03/how-to-remove-title-column-from-a-custom-list/

Die BDC ADF en jou vriend, CDATA

Ek het opgemerk 'n paar ongemaklike en onnodige hand-enkodering van RdbCommandText in 'n paar voorbeelde (MSDN dokumentasie).

Ek wou daarop te wys nuwelinge BDC dat opdragte binne-in 'n CDATA tag kan toegedraai word in hul "natuurlike" form. So, hierdie ongemaklike konstruksie:

<Eiendom Naam="RdbCommandText" Tipe="System.String">
KIES dbo.MCRS_SETTLEMENT.id, dbo.MCRS_SETTLEMENT.settlement van dbo.MCRS_SETTLEMENT
WAAR (ID &gt;= @ MinID) EN (ID &Dit;= @ MaxId)
</Eiendom>

kan beter verteenwoordig op hierdie manier:

<Eiendom Naam="RdbCommandText" Tipe="System.String">
<![CDATA[
KIES dbo.MCRS_SETTLEMENT.id, dbo.MCRS_SETTLEMENT.settlement van dbo.MCRS_SETTLEMENT
WAAR (ID >= @ MinID) EN (ID <= @ MaxId)
]]>
</Eiendom>

</einde>

BDC Voorbeeld

Inleiding tot BDC

Funksionele Voorbeeld: BDC ADF wat gekoppel is aan die SQL databasis met ingeboude gebruikersnaam en wagwoord

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 hierdie sjabloon (http://msdn2.microsoft.com/en-us/library/ms564221.aspx), Ek het 'n ADF wat gekoppel is aan 'n bepaalde SQL bediener byvoorbeeld en stompe in met 'n spesifieke gebruiker-ID en wagwoord wat in hierdie uittreksel:

  <LobSystemInstances>
    <LobSystemInstance Naam="ClaimsInstance">
      <Eiendomme>
        <Eiendom Naam="AuthenticationMode" Tipe="System.String">Pass through</Eiendom>
        <Eiendom Naam="DatabaseAccessProvider" Tipe="System.String">SQLServer</Eiendom>
        <Eiendom Naam="RdbConnection Data Bron" Tipe="System.String">werklike bediener  werklike byvoorbeeld</Eiendom>
        <Eiendom Naam="RdbConnection Aanvanklike Winkel" Tipe="System.String">werklike aanvanklike katalogus</Eiendom>
        <Eiendom Naam="RdbConnection Geïntegreerde Security" Tipe="System.String">SSPI</Eiendom>
        <Eiendom Naam="RdbConnection Poel" Tipe="System.String">valse</Eiendom>

        <!-- Dit is die sleutel waardes: -->
        <Eiendom Naam="RdbConnection Gebruiker ID" Tipe="System.String">1Werklike Gebruiker ID</Eiendom>
        <Eiendom Naam="RdbConnection Vergeet" Tipe="System.String">werklike Vergeet</Eiendom>
        <Eiendom Naam="RdbConnection Trusted_Connection" Tipe="System.String">valse</Eiendom>

      </Eiendomme>
    </LobSystemInstance>
  </LobSystemInstances>

Dit is nie 'n beste praktyk, 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 ingeboude id en wagwoord
  • insluit gebruiker-ID en wagwoord in ADF
  • insluit gebruiker-ID en wagwoord in ADF BDC
  • sharepoint BDC primer
  • sharepoint embed gebruiker-ID en wagwoord in ADF

</einde>

Skryf in op my blog.

SPD persoonlike workflow aksies — string manipulasie uitbreidings

Sowat 'n week gelede, 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.

Hier is die huidige beplande funksies vir weergawe 1.0: https://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=spdwfextensions&ReleaseId=8280

As iemand het 'n belangstelling in hierdie projek, los 'n kommentaar of begin / voeg by 'n bespreking hier: http://www.codeplex.com/spdwfextensions/Thread/List.aspx

Hier is die huidige stel van funksies wat reeds gekodeer (maar nie ten volle getoets as van 11/08/07):

Funksie Description (indien nie dieselfde as Netto funksie)
Num-inskrywings() Retour volgens die aantal inskrywings" in a string as per a specified delimiter.

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

Entry() Returns the nth token in a string as per a specified delimiter.
Lengte String.Length
Vervang() String.Replace()
Bevat() String.Contains()
Returns the word "true" or the word "false".
Substring(begin) String.Substring(begin)
Substring(begin,einde) String.Substring(begin,einde)
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".

Vinnige & maklik url Encoding lessenaar nut

Ek het nodig om te url-enkodeer 'n paar snare hierdie week en geklap saam aa bietjie nut wat ek gedink ek wil sit op SkyDrive vir die gemeenskap.

Kry die binêre hier: http://cid-1cc1edb3daa9b8aa.skydrive.live.com/self.aspx/SharePoint/WinUrlEncode.zip

Kry die Visual Studio oplossing hier: http://cid-1cc1edb3daa9b8aa.skydrive.live.com/self.aspx/SharePoint/WinUrlEncodeVS2005.zip

Hier is 'n skerm prent:

beeld

Vinnige en maklike: Embed 'n skakel in die data View web deel XSLT

UPDATE (01/17/08): Hierdie blog inskrywing praat oor meer hyperlink XSL goedheid: http://www.sharepointsecurity.com/blog/sharepoint/sharepoint-2007-development/rewriting-links-in-search-results-xslt.

Oorsig en objektiewe: 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, maar ek het nie uitvind dat die tegniek (of die vraagteken, vir die saak). 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. Byvoorbeeld, 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".

Stappe:

  1. Gebruik visuele ateljee vir Sharepoint-bewus IntelliSense.
  2. Kopieer die DVWP se XSLT in Visual Studio (die skep van 'n leë projek, voeg 'n XSL-lêer aan die projek).
  3. Kopieer die skakel wat jy wil gebruik in die knipbord.
  4. Plak dit in die regte plek in die XSL.
  5. Skakel URL argument skeiers op die navraag string uit "&" na "&amp;"
  6. Url-enkodeer individuele argumente.
  7. Draai dat binne 'n <a href…> </1>

Voorbeeld:

Ek het 'n URL:

http://[bediener]/[webwerf]/Lyste / Open% 20Positions/AllItems.aspx?Sien ={84EEA2F5-121B-40B7-946F-0FA704A1DAA1}&FilterField1 = Recruiter&FilterValue1 = Hou

Ek sit dit in:

     <1 href="Lyste / Open% 20Positions/AllItems.aspx?Sien =% 7b84EEA2F5-121B-40B7-946F-
0FA704A1DAA1% 7d&amp;FilterField1 = Recruiter&amp;FilterValue1 = Hou"> Hou: </1>

Ek het die hand omskep die eerste argument van:

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

aan:

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

(In hierdie, die oop stut verander na% 7b en die sluitingsdatum stut transformeer na% 7d)

Die tweede en derde argumente’ parameters ("FilterField1 =Recruiter" en "FilterValue1 =Hou" onderskeidelik) hoef nie te URL-geïnkripteer wees omdat hulle nie 'n onveilige karakters bevat.

Notas:

Hierdie tegniek word in die algemeen werk waar jy wil 'n skakel in die XSLT waar die hyperlink sluit parameters op die URL soos in te sluit:

http://[bediener]/[webwerf]/Lyste / Open% 20Positions/AllItems.aspx?Sien ={84EEA2F5-121B-40B7-946F-0FA704A1DAA1}&FilterField1 = Recruiter&FilterValue1 = Hou

Ek het die URL self deur die toegang tot die persoonlike lys, en met die hand filter op die status kolom (gemerk "Recruiter" bo).

Vinnige en maklike: Aktiveer SharePoint Designer workflow 'n Path vorm te werk

Scenario: I have an InfoPath form that front-ends a workflow process implemented using SharePoint Designer. At one point, a manager must approve the form. Vandat ek kan nie tel op workflow geskiedenis my ouditvereistes te ontmoet, Ek besluit om my eie ouditering boodskap direk te slaan op die vorm self.

Oorsig:

Ontwerp die vorm en publiseer dit as 'n die tipe inhoud 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" 'n vorm biblioteek (of baie, as jy wil). Write a workflow that updates the field.

Spesifieke stappe:

  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. Publiseer die vorm as 'n tipe inhoud (Nie 'n dokument).
  5. Vul uit die publikasie vensters:
    1) Slaan die. Xsn-lêer na die dokument biblioteek (stap #1).
    b) Publiseer die "Oudit boodskap" veld en die punt waar: "Laat gebruikers data in hierdie veld deur gebruik te maak van 'n gegewensblad of eiendomme bladsy te wysig.".
    c) Skep 'n nuwe tipe inhoud en gee dit 'n gepaste naam.
  6. Toegang tot die vorme biblioteek.
    1) Gaan na die gevorderde instellings en in staat stel om die vorms biblioteek inhoud tipes.
    b) Kies die nuutgeskepte tipe inhoud (5c bo). It will be grouped under "Microsoft InfoPath" (of 'n soortgelyke).
    c) Verwyder die default "vorm" tipe inhoud van die biblioteek.
    d) Merk die biblioteek "wys as webblad" so dat die vorm van SharePoint sal begin en nie die Path werkstasie kliënt.
  7. Gaan terug na die vorms biblioteek behoorlike en kliek op "New" om net te bevestig dat die vorm korrek geplaas word en op te tree as jy wil.
  8. Fire up SharePoint Designer en na die werf wat jou vorm biblioteek huisves (uit stap 2).
  9. Skep 'n nuwe workflow verbonde aan die vorms biblioteek.
  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. Kliek voltooi en gaan terug na die vorm biblioteek.
  12. Skep 'n nuwe vorm en sit 'n paar toets waarde in die "oudit boodskap" veld.
  13. Stoor en gaan terug na die biblioteek.
  14. Regs-kliek, kies "Workflow" en begin om jou workflow.
  15. It should run almost immediately. Pull up the form (uit stap 12) en as alles het gegaan om te beplan, "Oudit boodskap" opgedra is die waarde wat jy voorsien in stap 10.

Notas:

Not all controls may configured for this bi-directional communication. Byvoorbeeld, 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 omgewing en waarskynlik vereis dat selfs 'n Enterprise SharePoint omgewing.

Die Beagle het geland (Oktober 2007 kwessie)

(Dit is eintlik 'n bietjie ou nuus, maar as my gunsteling brandweerstasie leuse verkondig, "Better late than never").

Check dit uit hier: http://www.sharepointbeagle.com/

As jy nie reeds, seker wees om te teken.

Natuurlik, seker wees om te lees my artikel about a real-world SharePoint project (insluitend vereistes definisie, KPI's, inhoud tipes, dashboards and more) as well as my kollega se article about the content query web part.

Daar is baie ander goeie dinge te.

Hoe om te verwyder “Sien alle inhoud van die webtuiste” skakel

Ek vra hierdie vraag byna elke week, gewoonlik in die konteks van 'n sekuriteit bespreking. An administrator/site creator has provisioned a site, ingestel sekuriteit, arranged web parts and customized the quick launch to provide that oh-so-perfect set of options to the end user. Maar, uit die boks, you can’t remove the "view all site content" skakel.

Mark Wagner gee die antwoord hier (http://www.crsw.com/mark/Lists/Posts/Post.aspx?ID=36). Sy skryf-up is 'n uitstekende op twee vlakke. Dit bied 'n antwoord op die vraag, "How do I remove the View All Site Content" skakel? Toe, Dit beantwoord die onmiddellike opvolg vraag: Hoe kan ek in staat stel om maklik nie die uitsig inhoud van die webtuiste skakel op 'n webwerf-by-site basis?

As 'n bonus: Sy benadering werk vir WSS, nie net MOSS.

</einde>

Skryf in op my blog!