Månadsarkiv: November 2007

MOSS säger mig min kolumnnamn är reserverad eller Använd i … Men det är inte

UPPDATERING 12/04/07: Se Denna Microsoft KB (http://support.microsoft.com/kb/923589) relaterad information.

Faktiskt, Det visar sig det är, Men tricksy MOSS hade att göra det svårt.

Min kund gör vissa utvecklingsarbete på hans mossa webbplats under helgen. Det är lite av ett virrvarr om vad han faktiskt gjorde, men slutresultatet är detta:

  • Han försöker lägga till en webbplatskolumn som kallas "kvantitet" och MOSS svar: "Kolumnnamnet som du har angett används redan eller reserverade. Välja ett annat namn."
  • Han försöker lägga till en annan miljö och som fungerar. Därför, "Kvantitet" inte är ett reserverat namn.
  • Han försöker hitta en befintlig webbplatskolumn som heter "kvantitet" i den webbplatssamlingen. Han kan inte hitta det.

Jag gjorde en del forskning, och även en del kodning, vaxade filosofiska och slutligen tyckte att en kolumn med namnet kvantitet, I själva verket, finns. Det var i "_dold" grupp. Därav, Vi kunde inte hitta den via användargränssnittet i SharePoint.

Hur fick det det? Jag vet inte, men jag har en teori (eller som min fru skulle kalla det, "bla bla bla"). Någonstans längs linjen, en fantastiska fyrtio mall lades och förmodligen aktiverat på en plats i webbplatssamlingen. Det var då avaktiveras (eller webbplatsen tas bort). Webbplatskolumnen, men, återstod men i den "_dold" grupp. Om någon vet bättre, Låt mig veta via e-post eller inlägg i kommentarerna.

SharePoint berättade sanningen. Det är knappast värt att påpeka att detta budskap inte är så hjälpsamma som det kan vara. Det skulle vara trevligt att se detta meddelande gaffel in två olika meddelanden i framtiden: 1) Säga att kolumnnamnet är reserverad inte eller. 2) Om det inte är reserverad, Visa platsen, eller åtminstone gruppen, där kolumnnamnet används redan.

</slutet>

Presentera OM Data Via en anpassad lista (eller, Ännu en annan OM Data Displayor [liksom YACC, men olika])

Idag, Jag tillbringade en handfull timmar spåra orsaken bakom meddelandet "kolumnnamnet som du har angett används redan eller reserverade. Välja ett annat namn."

Kolumnen i fråga kunde skapas, tas bort och återskapas i en annan miljö, så jag visste att det inte var ett reserverat namn. Men, Jag inte kunde helt enkelt hitta kolumnen någonstans via standard SharePoint-användargränssnittet alla webbplatser i webbplatssamlingen.

Jag postat till MSDN forum här och den okuvliga Andrew Woodward pekade mig i riktning mot underliggande objekt modelldata.

Jag gick till CodePlex hitta några verktyg som skulle hjälpa mig peer i underliggande OM data och hjälpa mig hitta problem.

Jag försökte flera verktyg och de var väldigt cool och intressant men i slutändan, UI var inte tillräckligt bra för mitt syfte. Jag kritiserar inte dem på något sätt, men klart verktyg-skaparna hade inte mitt problem i åtanke när de skapade sina UI :). De flesta människor tycks vara att investera en hel del tid och kraft på att skapa arbetsstation / klientprogram som ger trädet visningar, Högerklicka på snabbmenyer och så vidare. Detta är trevligt och alla, men det är en hel del arbete att skapa en top-of-the-line användarupplevelse som också är mycket flexibel.

Jag behövde verkligen ett svar på detta problem. Det slog mig att om jag kunde få alla webbplatskolumner i webbplatssamling till en anpassad lista, Jag kunde filtrera, sortera och skapa vyer som skulle hjälpa mig att hitta denna förment befintlig kolumn (vilket den gjorde, BTW). Jag gick vidare och gjorde det och en timme eller två senare, hade alla mina webbplatskolumner laddat in en anpassad lista med gruppering, sortering och så vidare. Jag hittade mitt svar fem minuter senare.

Om och när jag lyckats ta över världen, Jag tror jag kommer dekret att alla SharePoint verktyg leverantörer måste allvarligt överväga beläggningsarbeten deras modell objektdata i en anpassad lista. På så sätt, Jag har makt Om du vill söka någon vill sätt jag (begränsad, Självklart, av standard sharepoint-funktioner).

SharePoint Designer anpassade arbetsflödesåtgärden — Observation om <FieldBind Designer typ =”StringBuilder” … />

Bara en snabb iakttagelse att det finns en mycket viktig skillnad mellan dessa två definitioner:

<FieldBind fältet = "InParam1" DesignerType = "StringBuilder" ID = "2" Text = "Input parametern # 1" />

kontra:

<FieldBind fältet = "InParam1" ID = "2" Text = "Input parametern # 1" />

Först visar såhär i SPD:

bild

medan de sistnämnda visar såhär:

bild

I’m not sure how helpful these screen shots are but I put in the effort to make them so you have to view them 🙂

Iakttagelsen är detta: StringBuilder kan du skapa en sträng (uppenbarligen) genom att blanda ihop teckensträngar och arbetsflödesdata (via den "Lägg till sökning" knappen i det nedre vänstra hörnet). När du använder knappen Lägg till uppslag, den infogar i stället ett token i form"[%variabeln %]". När SharePoint åberopar din anpassade åtgärden, (C#-kod i mitt fall), SharePoint passerar token som sig själv, inte värdet av token. Om du använder standardtypen för designer (den andra typen), SharePoint utökar token och skickar det verkliga värdet för token till åtgärden.

StringBuilder = BAD, standardtyp för designerns = bra.

Självklart, Det är inte vad jag egentligen menar. Bara inte prova och passera en parameter till din anpassade åtgärden när formgivaren skriver = StringBuilder. Använda designer av standardtyp och kedja en StringBuilder att det på framsidan om du behöver för att bygga komplexa strängar i arbetsflödet (vilket är för övrigt exakt vad gör för att skapa en dynamisk ämne för e-post, men det är ett ämne för en annan blogginlägg, har har).

<slutet />

Tidigt arbetsflöde aktivering — En icke-medicinsk lösning

UPPDATERING: Se diskussionen MSDN, särskilt den sista posten: http://forums.microsoft.com/MSDN/showpost.aspx?postid=2631057&siteid=1. Den beskriver ett tillstånd som kan kort sagt går runt hela denna sak. I korthet, Det kan vara så enkelt som att minst ett av fälten obligatorisk.

Jag har ett dokumentbibliotek som stöder åtta innehållstyper.

Jag har en SharePoint Designer-arbetsflöde som vill beräkna och tilldela en påminnelsedatum"" genom att helt enkelt subtrahera 30 dagar från en annan kolumn, "due date". Detta bör endast ske för en av innehållstyper, "Försäkring". Verksamheten syftar till att producera en KPI som visar två kategorier av bilförsäkringshandlingar: "omkring till andas ut" och "gått ut." (Du kan läsa mer om denna typ av KPI och mer betydande drill-down Här).

Jag har konfigurerat arbetsflödet för brand när en ny artikel skapas och när ett objekt ändras. Tanken är att när en försäkring dokument laddas, Vi beräknar en "varning datum" baserat på förfallodatumet. Ett par visningar arbeta i samband med en KPI-lista att belysa dessa förhållanden när användare trycker sin hemsida.

Denna strategi fungerar inte när jag ladda upp ett dokument.

Jag ladda upp dokumentet och presenterade jag meta data träder skärmen. Vid denna punkt, Jag har redan problem. SharePoint har redan, från mitt perspektiv i förtid, sparken i arbetsflödet. Jag har inte haft en chans att plocka rätt innehållstypen eller tilldela en förfallodag. På samma gång, arbetsflödet aktiveras inte när jag trycker på Skicka-knappen på denna tid. Det finns vissa inbyggda logik som "anser" att först skicka är en del av den "skapa" händelse. Så … mitt arbetsflöde har sparken och när det körs, Det var passerade standarddatavärden meta.

Den bästa verk-runt omkring jag känner till är att infoga en "paus tills" aktivitet i arbetsflödet. Jag har arbetsflödet paus för 1 minut. Medan det paus, Jag väljer rätt innehållstyp, anger metadata och skickar. Pausen är klar och arbetsflödet fortsätter som behövs. (Observera att i min omgivning, timer arbetsflödesaktiviteter från SPD fungerar inte ur lådan. Du kan ha samma problem. Se Här för mer information).

Jag gillar inte "magiska dröjsmål" verk-runt omkring. Vad händer om användaren överför ett dokument och telefonen ringer och den efterföljande konversationen outlasts paus? Jag kan göra paus längre, men jag gillar det fortfarande inte.

Jag skrev om detta på MSDN forum här: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2430725&SiteID=1

SharePoint säkerhet Fundamentals Primer / Undvika vanliga fallgropar

UPPDATERING 12/18/07: Se Paul Liebrand artikel för några tekniska konsekvenser av att ta bort eller ändra gruppnamn standard (se hans kommentar nedan samt).

Översikt:

SharePoint-säkerhet är lätt att konfigurera och hantera. Men, Det har visat sig vara svårt för vissa första gången administratörer att verkligen Linda sina händer runt den. Inte bara det, Jag har sett några administratörer komma till en perfekt förståelse på måndag bara för att ha förlorat det genom fredag eftersom de behövde inte göra någon konfiguration i den mellanliggande tiden. (Jag erkänna att jag har detta problem jag själv). Denna bloggpost förhoppningsvis ger en användbar SharePoint security primer och pekar mot några metodtips för konfiguration.

Viktigt att notera:

Denna beskrivning är baserad på ur lådan SharePoint security. Min personliga erfarenhet är orienterade kring mossa så det kan vara lite mossa specifika saker här, men jag tror det är exakt för WSS. Jag hoppas att någon ser eventuella fel eller utelämnanden kommer att påpeka det i kommentarer eller maila mig. Jag ska göra korrigeringar post brådska.

Grunderna:

Vid tillämpningen av denna översikt, Det finns fyra grundläggande aspekter på säkerhet: användare/grupper, objekt, behörighetsnivåer och arv.

Användare och grupper bryta ner till:

  • Enskilda användare: Drog från active directory eller skapade direkt i SharePoint.
  • Grupper: Mappade direkt från active directory eller skapade i SharePoint. Grupper är en samling av användare. Grupper är globala i en webbplatssamling. De är aldrig "bundna" till specifika objekt.

Objekt bryta ner till minst:

  • Platser
  • Dokumentbibliotek
  • Enskilda objekt i listor och dokumentbibliotek
  • Mappar
  • Olika BDC-inställningar.

Det andra objekt, men du får bilden.

Behörighetsnivåer: En bunt av granulat / låg nivå åtkomsträttigheter som inkluderar sådana saker som skapa/läsa/ta bort poster i listor.

Arv: Som standard ärver enheter säkerhetsinställningar från deras som innehåller objekt. Underwebbplatser ärver behörighet från deras överordnade. Dokumentbibliotek ärver från deras webbplats. Och så vidare.

Användare och grupper relaterar till objekt via behörighetsnivåer och arv.

De viktigaste säkerhetsreglerna att förstå, Någonsin 🙂 :

  1. Grupper är helt enkelt samlingar av användare.
  2. Grupper är globala inom en webbplatssamling (dvs. Det finns inget sådant som en grupp som definierats på en webbplatsnivå).
  3. Gruppens namn inte motstå, grupper inte, i och för sig, har någon särskild nivå av säkerhet.
  4. Grupper har säkerhet inom ramen för ett specifikt objekt.
  5. Du kan tilldela olika behörighetsnivåer till samma grupp för varje objekt.
  6. Web ansökan politik trumf allt detta (se nedan).

Säkerhetsadministratörer vilse i ett hav av användare och användargrupper listor kan alltid lita på dessa axiom att hantera och förstå deras säkerhetskonfiguration.

Vanliga fallgropar:

  • Namn innebär falskeligen tillstånd: Ur lådan, SharePoint definierar en uppsättning grupper vars namn antyda en inneboende säkerhetsnivå. Anser gruppen "Bidragsgivare". En obekant med SharePoint security kanske titta på det namnet och antar att varje medlem i gruppen kan "bidra" till någon webbplats/lista/bibliotek i portalen. Det kan vara sant men inte för att gruppens namn råkar vara "bidragsgivare". Detta gäller endast ur lådan eftersom gruppen har lämnats en behörighetsnivå som ger dem möjlighet att lägga till/redigera/radera innehållet på rotwebbplatsen. Genom arv, "bidragsgivarna" gruppen kan också lägga till/redigera/radera innehållet på varje underwebbplats. Man kan "bryta" i arvskedjan och ändrar behörighetsnivån för en underwebbplats så att medlemmar av den så kallade "bidragsgivaren" grupp inte kan bidra på alla, men bara läsa (till exempel). Detta skulle inte vara en bra idé, uppenbarligen, eftersom det skulle vara mycket förvirrande.
  • Grupperna definieras inte på en webbplatsnivå. Det är lätt att förväxla med användargränssnittet. Microsoft tillhandahåller en bra länk till användare/grupp förvaltning via varje webbplats "människor och grupper" länk. Det är lätt att tro att när jag är på plats "xyzzy" och jag skapa en grupp via xyzzy's människor och grupper länk som jag har just skapat en grupp som bara finns på xyzzy. Så är inte fallet. Jag har faktiskt skapat en grupp för hela webbplatssamlingen.
  • Grupper medlemskap varierar inte webbplats (dvs. Det är samma överallt gruppen används): Anser gruppen "ägare" och två platser, "HR" och "Logistik". Det skulle vara normalt att tror att två separata individer skulle äga dessa webbplatser — en HR och en logistik ägare. Användargränssnittet gör det enkelt för en säkerhetsadministratör misshandla detta scenario. Om jag inte visste bättre, Jag kan komma åt de personer och grupper länkar via webbplatsen HR, Välj "ägarna" grupp och lägga till min HR ägare till gruppen. En månad senare, Logistik kommer på rad. Jag åt personer och grupper från webbplatsen logistik, Lägg till dra upp "ägarna" grupp. Jag se HR ägare det och ta bort henne, tänker att jag är att ta bort henne från ägarna på webbplatsen logistik. I själva verket, Jag är att ta bort henne från den globala gruppen ägare. Munterhet följer.
  • Underlåta att namnet grupper baserat på specifika roll: "Godkännare" gruppen är ett perfekt exempel. Vad kan medlemmar i denna grupp Godkänn? Där kan de godkänner det? Vill jag verkligen människor logistikavdelning för att kunna godkänna HR dokument? Naturligtvis inte. Alltid namn grupper baserat på deras roll inom organisationen. Detta minskar risken att gruppen tilldelats en olämplig behörighetsnivå för ett visst objekt. Namn grupper baserat på deras avsedda roll. I det föregående scenariot som HR/logistik, Jag borde ha skapat två nya grupper: "HR ägare" och logistik ägare"" och tilldela förnuftiga behörighetsnivåer för varje och det minsta belopp som krävs för dessa användare att göra sitt jobb.

Andra användbara referenser:

Om du har gjort så här långt:

Låt mig veta dina tankar via kommentarerna eller maila mig. Om du vet andra goda referenser, gör samma!

Technorati Tags:

Snabb och enkel: Skapa en datavywebbdel (DVWP)

Det finns en uppsjö av bra information på WSS 3.0 Datavywebbdelen (DVWP) på webben från flera källor. Men, Jag fann det vara förvånansvärt svårt att hitta information om detta första mycket grundläggande steg. Här är en annan artikel i "snabb och lätt" serien ta det.

Följ dessa steg för att skapa en datavywebbdel (DVWP). De bygger på en "meddelanden" webbdelen, men gäller de flesta listor.

  1. Skapa en webbdel för meddelanden och lägga till en webbplats.
  2. Öppna webbplatsen i SharePoint Designer.
  3. Öppna webbplatsens default.aspx.
  4. Markera meddelanden webbdelen och högerklicka på.
  5. På snabbmenyn, Välj "Konvertera till XSLT Data View".

SharePoint Designer meddelar dig att denna webbplats är nu anpassat från dess webbplatsdefinitionen. Det är inte nödvändigtvis dåligt, men det finns viktiga konsekvenser (prestanda, uppgradera, andra) som är utanför ramen för denna lilla "snabb och lätt" posten. Att få mer information om detta ämne, Jag rekommenderar båda böckerna Här och din favorit Internetsökning.

Bekräfta att du gjorde det rätt:

  1. Stänga och åter öppna webbläsaren (att undvika misstag Återläggning det ursprungliga "Lägg till en ny webbdel").
  2. Markera webbdelens pilen listrutan och välj "Ändra delad webbdel" från menyn.
  3. Panelen verktyg öppnas till höger.
  4. Panelen har ändrats från sin vanliga ange alternativ till detta:
bild

“Går inte att hämta egenskapen lista schemat kolumn från SharePoint-listan” — Beskrivning/genvägar

Denna vecka, vi slutligen återges ett problem som hade rapporterats av en fjärranvändare: När hon försökte exportera innehållet i en lista till excel, saker verkar börja arbeta, men sedan Excel skulle dyka upp ett fel: "Kan inte få kolumnegenskapen listan schema från SharePoint-listan". Hon var igång office 2003, Windows XP och ansluter till MOSS.

Jag sökte på Internet och såg vissa spekulationer men ingenting 100% slutgiltiga. Därav, Det här inlägget.

Problemet: Exportera en vy till excel som innehåller ett datum (datum = datatypen för kolumnen).

Vad som fungerade för oss: Konvertera datum till en "enskild rad med text". Sedan, konvertera den till ett datum.

Som löste det. Det var trevligt att se att omvandlingen arbetat, faktiskt. Det var ganska nervös att konvertera saker detta sätt skulle misslyckas, men det gjorde inte.

Detta fel har kastat en stor skugga över datatypen Datum i klientens sinne, så vi kommer att söka ut ett definitivt svar från Microsoft och förhoppningsvis jag kommer post och uppdatera här under nästa kort period av tid med deras officiella svar och snabbkorrigeringen information.

Andra referenser:

http://www.kevincornwell.com/blog/index.php/cannot-get-the-list-schema-column-property-from-the-sharepoint-list/

http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2383611&SiteID=1

<slutet>

Prenumerera på min blogg.

Technorati Tags: ,

Snabb och enkel: Skicka ett e-postmeddelande med inbäddade hyperlänk från SharePoint Designer arbetsflöde

En eller två gånger månad, någon inlägg en forum-fråga: "Hur jag inkludera hyperlänkar till URLS som är klickbara från ett e-postmeddelande med SharePoint Designer?"

Presenteras utan ytterligare kommentarer: (väl, faktiskt finns det ytterligare kommentar efter bilden):

bild

Becky Isserman följer upp med en bra förklaring om hur du bäddar in en länk till ett objekt i e-: http://www.sharepointblogs.com/mosslover/archive/2007/11/20/addition-to-paul-galvin-s-post-about-sending-an-e-mail-with-hyperlinks-in-spd.aspx

Ny release: SharePoint Designer arbetsflöde Extensions (manipulering strängfunktioner)

UPPDATERING: Se här för mina tankar om kommersialisera detta projekt: http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!569.entry

Jag har varit upptagen i min Codeplex-projektet som närvarande fokuserar på att tillhandahålla strängen manipulation tillägg till arbetsflöden som skapats via SharePoint Designer.

För mer information se här:

Projekt hem: http://www.codeplex.com/spdwfextensions

Release: https://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=spdwfextensions&ReleaseId=8280

Version 1.0 innehåller följande nya funktioner:

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,längd) String.substring(Starta,längd)
ToUpper() String.ToUpper()
ToLower() String.ToLower()
StartsWith() String.StartsWith()
Returnerar ordet "true" eller ordet "false".
EndsWith() String.EndsWith()
Returnerar ordet "true" eller ordet "false".

Ett BDC körningsfel förklaras

Jag orsakat en BDC fel denna vecka som visat sig på användargränssnittet och i den 12 bikupa Stock vid körning.

Första, Detta visades i användargränssnittet:

Kunde inte hitta fält för att infoga alla identifierare värdena för att korrekt utföra en SpecificFinder MethodInstance med namn … Kontrollera att indataparametrarna har typbeskrivare (TypeDescriptor) associerade med varje identifierare som definierats för denna entitet.

Här är en skärmdump:

clip_image001

Jag kan också orsaka detta meddelande att visas i den 12 bikupa stock på kommer (använder min patenterade high-tech-don't-try-this-at-home "mystiska fel" metoden):

11/14/2007 09:24:41.27 W3wp.exe (0x080C) 0x0B8C SharePoint Portal Server Business Data 6q4x hög undantag i BusinessDataWebPart.OnPreRender: System.InvalidOperationException: Identifierarvärde ”, av typ ”, är ogiltig. Förväntade identifierarvärde av typen System.String. på Microsoft.Office.Server.ApplicationRegistry.MetadataModel.Entity.FindSpecific(Objekt[] subIdentifierValues, LobSystemInstance lobSystemInstance) på Microsoft.SharePoint.Portal.WebControls.BdcClientUtil.FindEntity(Enhet enhet, Objekt[] userValues, LobSystemInstance lobSystemInstance) på Microsoft.SharePoint.Portal.WebControls.BusinessDataItemBuilder.GetEntityInstance(Visa desiredView) på Microsoft.SharePoint.Portal.WebControls.BusinessDataDetailsWebPart.GetEntityInstance() på Microsoft.SharePoint.Portal.WebControls.BusinessDataDetailsWebPart.SetDataSourceProperties()

Jag sökte runt och hittade några leads i den MSDN-forumet för, men de var inte nog för mig att förstå vad jag gjorde fel. Jag såg en webbsändning av Ted Pattison som min företaget har squirreled bort på en server och kom att inse mitt problem.

I min ADF, Jag ansluter till en SQL databas som visas:

            <Egenskapen Namn="RdbCommandText" Typ="System.String">
              <![CDATA[
                VÄLJ SETID, CARRIER_ID, EFFDT, DESCR, EFF_STATUS, TAXPAYER_ID, NETWORK_ID, FRT_FORWARD_FLG, ALT_NAME1, ALT_NAME2, LANGUAGE_CD,
                      LAND, ADRESS1, ADRESS2, ADDRESS3, ADDRESS4, STADEN, NUM1, NUM2, HOUSE_TYPE, ADDR_FIELD1, ADDR_FIELD2, ADDR_FIELD3,
                      COUNTY, STATLIGA, POST-, GEO_CODE, IN_CITY_LIMIT, COUNTRY_CODE, TELEFON, EXTENSION, FAX, LAST_EXP_CHK_DTTM, FREIGHT_VENDOR,
                      INTERLINK_DLL, TMS_EXCLUDE_FLG från dbo.PS_CARRIER_ID_VW med (nolock)
                DÄR
                  (SETID <> "DELA") och
                  (lägre(CARRIER_ID) >= lägre(@MinId)) och
                  (lägre(CARRIER_ID) <= lägre(@ MaxId)) och
                  (lägre(DESCR) SOM lägre(@InputDescr))
                ]]>
            </Egenskapen>

Jag lämnades det SQL från en DBA person och jag får att förstå att det är en särskilda Visa de skapade bara för mig. Den unika nyckeln det är CARRIER_ID.

Här är felet jag infört:

      <Kännetecken>
        <Identifierare Namn="CARRIER_ID" TypeName="System.String" />
        <Identifierare Namn="DESCR" TypeName="System.String" /> 
</Kännetecken>

Någonstans längs linjen, Jag hade lyckats förväxla mig själv över menande av <Kännetecken> och lagt till DESCR även om det inte är faktiskt en identifierare. Jag tog DESCR ur den identifierare set och presto! Det hela fungerade.

I hope this saves someone some grief 🙂

Technorati Tags: , , ,