Månadsarkiv: November 2007

Du kan inte slå SharePoint Reach

Under de senaste två dagarna, Jag har deltagit i två möten där vi presenterade resultaten av ett SharePoint-projekt. CIO och hans team gick det första mötet. Det är standard och inte särskilt anmärkningsvärt. IT-avdelningen är uppenbarligen inblandad i en enterprise utbyggnaden av någon teknik projekt. Det andra mötet utvidgas till att omfatta en V.P. från marknadsföring, flera regissörer som representerar HR, Logistik, Tillverkning, Kapital projekt, Kvalitet, Inköp, Företagsutveckling och andra avdelningar (varav en del var inte ens direkt involverade i den nuvarande fasen). Det är en väldig bred publik.

I mitt tidigare liv, Jag arbetat främst med affärssystem och CRM projekt. De båda har en ganska bred lösning domän men inte så bred som SharePoint. Realiseras fullt ut, SharePoint-projekt nå legitimt och nödvändigtvis in i alla vinklar och vrår i en organisation. Hur många andra företagslösningar har som typ av nå? Inte många.

SharePoint tydligt innebär en enorm möjlighet för oss turen att vara i detta utrymme. Det ger en stor teknisk möjlighet (som är på något sätt vände på huvudet Här under "Teknik måste du behärska"). Men ännu bättre, SharePoint utsätter oss till ett omfattande och brett utbud av affärsprocesser genom dessa åtaganden. Hur många CRM-specialister arbeta med tillverkningssidan av företaget? Hur många ERP konsulter arbetar med mänskliga resurser på talang förvärv? SharePoint överskrider dem båda.

Som allt, Det är inte perfekt, men det är en förbannat bra plats att vara.

For the love of [Fyll i din mest älskade personen/högre som], Ändra inte den "titel’ webbplatskolumn.

På den SharePoint Forum, någon frågar ibland om att "ändra etiketten för avdelning" eller om "borttagning titel från listor".

Nedersta raden: Gör det inte!

Tyvärr, användargränssnittet gör en enkelriktad förändring av denna kolumnetiketten som visas:

bild

Titeln är en kolumn som är associerad med artikeln"" innehållstyp. Många, många, många CTS använder denna kolumn och om du ändrar det här, det ripples ut överallt. Det finns en god chans att du inte hade för avsikt för att det ska ske. Du var nog tänka dig själv, "Jag har en anpassad uppslagslista och" titel’ bara meningsfullt inte som ett namn, så jag ska ändra det till "statuskod’ och lägga till en beskrivning kolumn." Men om du fullfölja den tanken och byta namn på ' titel’ att "statuskoden", varje lista avdelning (inklusive dokumentbibliotek) ändringar av "statuskod" och du förmodligen inte avser för att det ska hända.

Det verkliga problemet är att detta är en enkelriktad förändring. UI vet"" titeln"" är ett reserverat ord. Så, Om du försöker och ändra "statuskod" tillbaka till "Titel", Det hindrar dig och nu du har målat själv i ett hörn using paint that never dries 🙂

Så vad händer om du redan ändrat? Jag har inte sett svaret vi alla vill ha, vilket är en enkel och enkel metod att ändra etiketten tillbaka till 'Title'. Nu, det bästa råd är att ändra den till något liknande "Doc/artikel titel". Det är en tillräckligt generisk etikett som inte får alltför skärande för dina användare.

Jag har några andra idéer som är på min att-göra-lista över saker att forskning:

  • Kontakta Microsoft.
  • Göra något med objektmodellen, kanske tillsammans med en funktion.
  • Räkna ut databasschemat och manuellt uppdatera SQL. (Du bör kontakta Microsoft innan du gör detta men; Det kommer sannolikt att makulera supportavtalet).

Om någon vet hur man ska lösa detta, Vänligen skriv en kommentar.

Uppdatera sen eftermiddag, 11/15: Jag hittade denna länk som beskriver en metod för att skapa en typ av lista som inte har en avdelning kolumn: http://www.venkat.org/index.php/2007/09/03/how-to-remove-title-column-from-a-custom-list/

BDC ADF och din vän, CDATA

Jag har lagt märke till några besvärliga och onödiga handen-kodning av RdbCommandText i några exempel (inklusive MSDN-dokumentationen).

Jag ville påpeka för nykomlingar till BDC att kommandon kan förpackas i en CDATA-tagg i naturligt"" form. Så, denna besvärliga konstruktion:

<Egenskapen Namn="RdbCommandText" Typ="System.String">
Välj dbo.MCRS_SETTLEMENT.ID, dbo.MCRS_SETTLEMENT.Settlement från dbo.MCRS_SETTLEMENT
DÄR (ID &gt;= @ MinId) OCH (ID &LT;= @ MaxId)
</Egenskapen>

kan bättre representeras detta sätt:

<Egenskapen Namn="RdbCommandText" Typ="System.String">
<![CDATA[
Välj dbo.MCRS_SETTLEMENT.ID, dbo.MCRS_SETTLEMENT.Settlement från dbo.MCRS_SETTLEMENT
DÄR (ID >= @ MinId) OCH (ID <= @ MaxId)
]]>
</Egenskapen>

</slutet>

BDC Primer

Intro till BDC

Funktionella exempel: BDC ADF som ansluter till SQL-databas med inbäddade användar-id och lösenord

Jag behövde till tråd upp mossa till en SQL-databas via BDC. För testning/POC, Jag ville bädda in SQL-konto förbrukaren id och lösenord i den automatiska Dokumentmataren. Från och med den här mallen (http://msdn2.microsoft.com/en-us/library/ms564221.aspx), Jag skapade en ADM som ansluter till en viss SQL server-instansen och loggar in med en viss användar-id och lösenord och visas i detta utdrag:

  <LobSystemInstances>
    <LobSystemInstance Namn="ClaimsInstance">
      <Egenskaper>
        <Egenskapen Namn="AuthenticationMode" Typ="System.String">Genomströmning</Egenskapen>
        <Egenskapen Namn="DatabaseAccessProvider" Typ="System.String">SqlServer</Egenskapen>
        <Egenskapen Namn="RdbConnection datakälla" Typ="System.String">faktiska serveractual instans</Egenskapen>
        <Egenskapen Namn="RdbConnection Initial Catalog" Typ="System.String">faktiska initial catalog</Egenskapen>
        <Egenskapen Namn="RdbConnection integrerad säkerhet" Typ="System.String">SSPI</Egenskapen>
        <Egenskapen Namn="RdbConnection sammanslagning" Typ="System.String">falskt</Egenskapen>

        <!-- Dessa är de viktigaste värdena: -->
        <Egenskapen Namn="RdbConnection användar-ID" Typ="System.String">enctual användar-ID</Egenskapen>
        <Egenskapen Namn="RdbConnection lösenord" Typ="System.String">faktiska lösenord</Egenskapen>
        <Egenskapen Namn="RdbConnection Trusted_Connection" Typ="System.String">falskt</Egenskapen>

      </Egenskaper>
    </LobSystemInstance>
  </LobSystemInstances>

Det är inte en bästa praxis, men det är användbart för en snabb och enkel konfiguration för testning. Detta var förvånansvärt svårt att räkna ut. Jag hittade aldrig en funktionell exempel med sökord:

  • ADF inbäddade användar-ID och lösenord
  • bädda in användar-id och lösenord i adf
  • bädda in användar-id och lösenord i adf bdc
  • SharePoint bdc primer
  • SharePoint bädda in användar-id och lösenord i adf

</slutet>

Prenumerera på min blogg.

SPD anpassade arbetsflödesåtgärder — sträng manipulering förbättringar

Om en vecka sedan, Startade jag upp ett codeplex projekt som ger en enkel och tämligen generisk metod för att lägga till anpassade åtgärden funktioner till SharePoit Designer arbetsflöde. Det beskrivs här: http://www.codeplex.com/spdwfextensions. Utöver att helt enkelt skapa en ram, Syftet är också att tillhandahålla en uppsättning användbara funktioner som kommer att göra SPD mer användbar/flexibel/kraftfull.

Här är de aktuella planerade funktionerna för version 1.0: https://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=spdwfextensions&ReleaseId=8280

Om någon har något intresse av detta projekt, Vänligen lämna en kommentar eller start/lägga till en diskussion här: http://www.codeplex.com/spdwfextensions/Thread/List.aspx

Här är den aktuella uppsättningen funktioner som har varit kodade (även om inte testat som av 11/08/07):

Funktionen Beskrivning (om inte samma som .net funktion)
NUM-transaktioner() Returnerar tal "poster" i en sträng enligt angivna avgränsare.

Till exempel: NUM-transaktioner i en sträng "en,b,c" med avgränsare"," = 3.

Posten() Returnerar den n: te token i en sträng enligt angivna avgränsare.
Längd String.length
Ersätt() String.Replace()
Innehåller() String.contains()
Returnerar ordet "true" eller ordet "false".
Delsträng(Starta) String.substring(Starta)
Delsträng(Starta,slutet) String.substring(Starta,slutet)
ToUpper() String.ToUpper()
ToLower() String.ToLower()
StartsWith() String.StartsWith()
Returnerar ordet "true" eller ordet "false".
EndsWith() String.EndsWith()
Returnerar ordet "true" eller ordet "false".

Snabb & enkelt url kodning stationära utility

Jag har behöva url-koda vissa strängar i veckan och smällde ihop ett litet verktyg som jag trodde jag skulle sätta upp SkyDrive för gemenskapen.

Få den binära här: http://cid-1cc1edb3daa9b8aa.skydrive.live.com/self.aspx/SharePoint/WinUrlEncode.zip

Få den visual studio-lösningen här: http://cid-1cc1edb3daa9b8aa.skydrive.live.com/self.aspx/SharePoint/WinUrlEncodeVS2005.zip

Här är en skärmdump:

bild

Snabb och enkel: Bädda in en hyperlänk i datavywebbdelen XSLT-

UPPDATERING (01/17/08): Detta blogginlägg talar om mer hyperlänk XSL godhet: http://www.sharepointsecurity.com/blog/sharepoint/sharepoint-2007-development/rewriting-links-in-search-results-xslt.

Översikt och mål: Jag hade skapat ett enkelt liggande diagram som komponent på en instrumentpanel. Jag ska spara information om att bygga diagram för en annan tjänst, men jag uppfinna inte denna teknik (inte heller frågetecken, för övrigt). Det visade sig att det var en bugg i diagrammet och medan jag fixade som, Jag passade på att konvertera några etiketter till hyperlänkar som pekade på den underliggande listan bakom grafen. Till exempel, Det finns en etikett med värde "Hold". Jag ville göra etiketten till en hyperlänk så att användaren kan klicka på den och gå ned till de specifika adresserna i listan vars statusvärde är "Hold".

Steg:

  1. Använd visual studio för SharePoint-medveten intellisense.
  2. Kopiera den DVWP XSLT till visual studio (skapa ett tomt projekt, lägger till en XSL-fil i projektet).
  3. Kopiera in länken som du vill använda till Urklipp.
  4. Klistra in det i rätt plats i XSL.
  5. Konvertera URL-argumentet avgränsare på frågesträngen från"&" till"&amp;"
  6. URL-koda individuella argument.
  7. Radbryt att insidan en <en href…> </en>

Exempel:

Jag har en URL:

http://[servern]/[webbplats]/Lists/Open Positions/AllItems.aspx?Visa ={84EEA2F5-121B-40B7-946F-0FA704A1DAA1}&FilterField1 = Rekryterarens&FilterValue1 = Hold

Jag omvandla den till:

     <en href="Lists/Open Positions/AllItems.aspx?Visa = % 7b84EEA2F5-121B-40B7-946F-
0FA704A1DAA1% 7 d&amp;FilterField1 = Rekryterarens&amp;FilterValue1 = Hold"> Håll: </en>

Jag har manuellt förändrat det första argumentet från:

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

till:

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

(I detta, Öppna klammerparentes transformeringar till % 7b och avslutande hängslen transformeringar till % 7 d)

De andra och tredje argument’ parametrar ("FilterField1 =Rekryterarens" och "FilterValue1 =Håll" respektive) behöver inte vara url-kodade eftersom de inte innehåller några osäkra tecken.

Anteckningar:

Denna teknik bör generellt arbeta var du vill bädda in en hyperlänk i XSLT där hyperlänken innehåller parametrar i URL-adressen som:

http://[servern]/[webbplats]/Lists/Open Positions/AllItems.aspx?Visa ={84EEA2F5-121B-40B7-946F-0FA704A1DAA1}&FilterField1 = Rekryterarens&FilterValue1 = Hold

Jag fick den URL-adressen själv genom att besöka den anpassade listan och manuellt filtrering på statuskolumnen (märkt "Rekryterarens" ovan).

Snabb och enkel: Aktivera SharePoint Designer arbetsflödet att uppdatera ett InfoPath-formulär

Scenariot: Jag har ett InfoPath-formulär som front-avslutar en arbetsflödesprocess som genomförs med hjälp av SharePoint Designer. Vid ett tillfälle, en chef måste godkänna form. Eftersom jag inte kan räkna med arbetsflödeshistoriken till min revision krav, Jag bestämmer mig att lagra min egen revision meddelande direkt på själva formuläret.

Översikt:

Designa formuläret och publicera den som en innehållstyp och själva formuläret till ett dokumentbibliotek. Markera önskad formulärfält som kan uppdateras från MOSS. Formuläret är knuten till innehållstypen och innehållstypen är "kopplad" till ett formulärbibliotek (eller många, Om du vill). Skriva ett arbetsflöde som uppdateras fältet.

Specifika åtgärder:

  1. Skapa ett dokumentbibliotek. Detta kommer att hålla din InfoPath-mall.
  2. Skapa ett formulärbibliotek.
  3. Skapa InfoPath-formuläret. Inkludera ett textfält, "Revision Message".
  4. Publicera formuläret som en innehållstyp (INTE ett dokument).
  5. Samtidigt fyller publicerar dialoger:
    en) Spara XSN-filen till dokumentbiblioteket (steg #1).
    b) Publicera meddelandet"revision" fält och markera sant: "Tillåt användare att redigera data i fältet med hjälp av ett datablad eller egenskaper sida".
    c) Skapa en ny innehållstyp och ge det ett namn.
  6. Tillgång till formulärbibliotek.
    en) Gå till dess avancerade inställningar och aktivera formulärbiblioteket att hantera innehållstyper.
    b) Välj den nyskapade innehållstypen (5c ovan). Det kommer att grupperas under "Microsoft InfoPath" (eller liknande).
    c) Ta bort standard "Form" innehållstyp från biblioteket.
    d) Mark biblioteket "Visa som webbsida" så att formuläret kommer att starta från SharePoint och inte InfoPath workstation-klient.
  7. Gå tillbaka till det korrekta formulärbiblioteket och klicka på "ny" att helt enkelt kontrollera att formuläret är bokförda korrekt och tillförordnad som du vill.
  8. Brand upp SharePoint Designer och navigera till den webbplats som är värd för din formulärbibliotek (från steg 2).
  9. Skapa ett nytt arbetsflöde som bifogas formulärbiblioteket.
  10. Lägga till en enda åtgärd "Ställa in fältet i aktuellt objekt". Du bör räkna med SharePoint Designer att lista du är ditt område, "Revision Message". Tilldela den ett värde.
  11. Klicka på Slutför och gå tillbaka till formulärbiblioteket.
  12. Skapa ett nytt formulär och sätta vissa testvärdet i meddelandet"revision" fältet.
  13. Spara den och gå tillbaka till formulärbiblioteket.
  14. Högerklicka på, Välj "arbetsflöde" och starta upp ditt arbetsflöde.
  15. Det ska köras nästan omedelbart. Dra upp form (från steg 12) och om alla har gått för att planera, "Revision Message" har tilldelats oavsett värde du angav i steg 10.

Anteckningar:

Inte alla kontroller kan konfigureras för denna dubbelriktad kommunikation. Till exempel, Det verkar inte att genomföra en SPD arbetsflöde som ändrar textfält insvept inuti upprepande avsnitt.

En av de viktigaste take-away's här är att vi verkligen har skapat en innehållstyp med en tillhörande mall. Detta också ger oss möjlighet att lagra flera InfoPath-formulärmallar i samma formulärbiblioteket.

Detta kräver forms server. Det kommer säkerligen inte att arbeta i en WSS 3.0 miljö och förmodligen även kräver en Enterprise SharePoint-miljön.

Beagle har landat (Oktober 2007 frågan)

(Detta är faktiskt lite gamla nyheter, men som min favorit brandstation mottot utropar, "Bättre sent än aldrig").

Kolla här: http://www.sharepointbeagle.com/

Om du inte redan har, se till att Registrera sig.

Självklart, Läs min artikel om verkliga SharePoint projekt (inklusive krav definitionen, KPI, innehållstyper, instrumentpaneler och mer) som min kollega artikel om webbdelen Innehållsfråga.

Det finns massor av andra bra saker även.

Ta bort “Visa allt webbplatsinnehåll” länk

Uppmanas jag denna fråga nästan varje vecka, normalt i samband med en säkerhet-diskussion. En administratör/site creator har etablerats en webbplats, konfigurerade säkerhet, ordnade web delar och anpassade Snabbstart för att ge det oh-så-perfekt uppsättningen av alternativ till slutanvändaren. Men, i kartongen, Du kan inte ta bort den "Visa allt webbplatsinnehåll" länk.

Mark Wagner ger svaret Här (http://www.crsw.com/mark/Lists/Posts/Post.aspx?ID=36). Hans write-up är fantastiskt på två nivåer. Det ger ett svar på frågan, "Hur tar jag bort den Visa allt webbplatsinnehåll" länk? Sedan, det besvarar den omedelbara tillskottsnäring frågan: Hur aktiverar jag lätt kan visa allt webbplatsinnehåll länk på en webbplats webbplatser?

Som en bonus: Hans strategi som fungerar för WSS, inte bara MOSS.

</slutet>

Prenumerera på min blogg!