archivi categoria: SharePoint Workflow

Creare siti (SPWeb) tramite SharePoint Designer Workflow

Questo blog è più di un "nel Regno del possibile" entrata vs. informazioni di calcestruzzo.

Abbiamo un disegno tecnico che chiede di creare un sito in una raccolta di siti tramite un processo di workflow manualmente lanciato. Fondamentalmente, gli utenti immettere i dati in un nuovo cliente di"" elenco personalizzato e poi quando hanno finito e convalidato il processo di immissione dei dati, abbiamo bisogno di creare un sito per quel cliente.

Io sono un grande fan del flusso di lavoro dichiarativo così come un programmatore di flusso di lavoro debole visual studio, così ho voluto soddisfare il requisito di SharePoint Designer.

Intenzione di scrivere su questo più dettagliatamente (e si spera di presentare ad un gruppo di utenti o due l'anno prossimo), ma ecco la soluzione globale:

  • Creare un'azione personalizzata che si integra con SPD.
  • L'azione personalizzata consente SPD richiamare un servizio web e passarlo a una stringa di XML.
  • Servizio Web individua la riga nell'elenco personalizzato e crea un nuovo sito, come per i dati per quel nuovo client utilizzando una definizione di sito personalizzato.
  • Servizio Web quindi aggiorna l'elenco personalizzato con alcune informazioni, ad esempio un collegamento al nuovo sito.

Abbiamo preso in considerazione altri approcci, ad esempio i gestori eventi e flussi di lavoro di visual studio in base. L'approccio SPD dà nostri utenti finali un po' più controllo sul processo di. Concesso, c'è un sacco di codice c# in questa soluzione, ma esso è racchiuso in un flusso di lavoro dichiarativo, così ottenere alcuni dei benefici del flusso di lavoro dichiarativo mentre agganciando il servizio di creazione del sito.

Tutto ciò di cui abbiamo bisogno ora è uno strumento semplice per migrare automaticamente i flussi di lavoro SPD il più facilmente possibile per i flussi di lavoro di visual studio e cucineremo davvero con il gas 🙂 Capisco che alcune persone stanno lavorando su questo problema e spero che lo abbiano fatto qualche buon successo con esso presto.

</fine>

Iscriviti al mio blog.

Technorati Tags: ,

Integrare i flussi di lavoro di SharePoint Designer con i servizi Web

Ho giocato con azioni personalizzate per SharePoint Designer per qualche tempo (vedi qui per alcune cose dettagliate, Se che ti interessa).

Nel mio progetto attuale, Abbiamo bisogno di fare qualche lavoro abbastanza pesante e vogliamo utilizzare flussi di lavoro dichiarativi SPD per gestire il processo di business associate.

Lunga storia breve, Questo è del tutto possibile. Ho allungato il mio progetto Codeplex per richiamare un servizio di supporto"" e ora possiamo invocare un servizio web direttamente da un flusso di lavoro SPD.

Ecco la firma:

 pubblica stringa Oggetto Dispatcher(
        GUID WebID, // Passati per l'ambiente di runtime
        GUID SiteID, // Passati per l'ambiente di runtime
        stringa ListID, // Passavano la RTE (non so perché questa è una stringa, non un GUID)
        int ListItemID, // Passavano la RTE.
        stringa XmlMessage) // Passati da parte dell'utente, come dichiarato nella SPD.

Questo sfrutta il fatto che possiamo ottenere informazioni importanti del flusso di lavoro, come il sito, elenco ID, ecc. Questo è ben documentato in diversi posti per coloro che sono interessati nella creazione di proprie azioni personalizzate. L'idea è di estrarre la stringa XML come forniti dall'utente per inviare una procedura appropriata. Fun Stuff Fun stuff!

Purtroppo, Questo è ovviamente un biglietto di sola andata giù per "Loosey Goosey" Terra anti-pattern, ma è meglio che colpire un muro di mattoni 🙂

Esso è un anti-modello, se lo si fa anche se sai che è un anti-modello?

Spero di concludere questa all'interno di Codeplex nel prossimo futuro. Se siete interessati a me in questo modo, Dammi poke (Posta elettronica o lasciare un commento) e sarò più entusiasta di farlo 🙂

</fine>

Iscriviti al mio blog.

Technorati Tags: ,

SPD Workflow “Raccogliere dati da un utente”: Modificare la forma di attività generato

Sto lavorando su un progetto che utilizza cinque diversi flussi di lavoro di SharePoint Designer per gestire alcune approvazioni dei documenti. SPD fornisce i "raccogliere dati da un utente" azione affinché noi possiamo richiedere all'utente diversi bit di informazione, come se essi approvarlo, alcuni commenti e forse chiedere ciò che avevano per la cena l'altra sera.

Le forme sono perfettamente funzionali. Essi sono legati ad un elenco di attività come un tipo di contenuto. Essi sono 100% generati dal sistema. Questa è la loro forza e debolezza. Se possiamo vivere con un modulo predefinito, Allora siamo bene posto. Tuttavia, non abbiamo troppo controllo sopra come SPD crea il modulo. Se non ci piace che il comportamento predefinito, abbiamo bisogno di ricorrere a vari trucchi per ottenere intorno ad esso (per esempio, l'impostazione di priorità su un compito).

Avevo bisogno di fornire un link su queste forme di attività che aprono le proprietà di visualizzazione (DispForm.ASXP) dell'articolo correlato"" in una nuova finestra. Questo fornisce accesso one-click per i meta dati del rispettivo articolo. Questo è quello che voglio dire:

immagine

Per fortuna, possiamo farlo e non è molto difficile. In linea generale, fuoco su SPD, spostarsi nella directory contenente i file di flusso di lavoro e aprire il file ASPX che si desidera modificare. Queste sono le istruzioni di trasformazione XSL appena classiche e se tu hai muck con itemstyle.xsl, ricerca o ad altri scenari XSL, Questo sarà facile per voi. Infatti, Ho trovato ad essere generalmente più facile dal momento che il form generato è un po ' più facile da seguire rispetto ad una web part risultati di ricerca (o il CWQP da incubo).

Naturalmente, C'è un trabocchetto principale. Editor di workflow di SPD si aspetta pieno controllo su quel file. Se lo si modifica, SPD felicemente sovrascriverà il vostro dare modifiche il giusto set di circostanze. Ho fatto due test rapido per vedere quanto male si potrebbe ottenere. Entrambe presuppongono che tu hai realizzato un flusso di lavoro SPD valido che utilizza i "raccogliere dati da un utente" passo.

Test 1:

  • Modificare manualmente il file ASPX.
  • Prova (verificare che le modifiche sono state salvate correttamente e non rompono nulla).
  • Aprire il flusso di lavoro e aggiungere un'azione correlata (come il "Registro di storia").
  • Salvare il flusso di lavoro.

Risultato: In questo caso, SPD ha fatto non ricreare la forma.

Test 2:

  • Fare lo stesso #1 tranne direttamente modificare la "raccolta di dati da un utente" azione.

Risultato: Questo ricrea la forma da zero, sovrascrivere le modifiche.

Note finali:

  • Almeno due azioni di SPD creare forme come questo: "Raccogliere dati da un utente" e "Assegnare a fare la voce". Entrambe queste azioni’ forme possono essere modificate manualmente.
  • Sono stato in grado di generare il mio link per DispForm perché, in questo caso, l'elemento di riferimento ha sempre un ID incorporato nell'URL dell'elemento correlate. Sono stato in grado di estrarre e poi costruire un <href> Basato su di esso per fornire la funzionalità di accesso di un solo clic meta dati. È improbabile che il tuo URL segue questa regola. Ci possono essere altri modi per ottenere l'ID del rispettivo articolo ma non ho dovuto attraversare quel ponte, quindi non so se ottiene da altra parte del baratro.
  • Non esaminare, ma non sarebbe sorpreso se c'è qualche tipo di file di modello nella 12 alveare che potrei modificare per interessare come SPD genera le forme predefinite (come possiamo modificare modelli alert).

</fine>

Iscriviti al mio blog!

Soluzione (sorta di): Impostare la priorità su un'attività tramite SharePoint Designer

Ho uno scenario aziendale come questo:

  • Un utente che carica un documento in una raccolta documenti.
  • Lei sceglie un tipo di contenuto ed entra nella meta dati, come necessario. Uno dei campi dati meta è una bandiera, "Urgente".
  • Ciò fa scattare un flusso di lavoro SharePoint Designer che, tra le altre cose, utilizza la "raccogliere dati da un utente" azione.

"Raccogliere dati da un utente" Crea un elemento in un elenco di attività che richiede l'approvazione di tale documento.

Avevo bisogno di creare una visualizzazione dell'elenco attività che hanno mostrato le richieste urgenti di approvazione.

Soluzione: Mettere la parola "urgente:" nel titolo di questi compiti.

Avrei preferito per specificare il campo priorità direttamente. Tuttavia, Non sono riuscito a farlo per diversi motivi:

  1. L'azione di raccogliere dati non fornisce un meccanismo per aggiornare qualsiasi campo diverso dal titolo (e quei campi aggiuntivi per cui si desidera raccogliere dati).
  2. Il "assegna un a voce" azione ha lo stesso problema.
  3. È possibile inserire un elemento in un elenco (vale a dire. inserire un elemento nell'elenco attività direttamente) ma questo non un'azione di blocco. Ciò significa che il flusso di lavoro non vi aspetterà all'utente di completare l'attività.

Considerato alcuni approcci prima (per fortuna) Rendendosi conto che abbiamo potuto appena messo "urgente" nel titolo.

  1. Avviare un flusso di lavoro elenco attività stessa, in modo che quando viene creata una nuova attività, esso in qualche modo attraversare di nuovo i riferimenti al documento che è iniziato il primo flusso di lavoro, estrarre il valore del flag urgente e aggiornare la priorità secondo le necessità.
  2. Fare qualcosa di simile con un ricevitore di eventi. Su Crea dell'attività, individuare il documento associato e la priorità di aggiornamento come necessario.
  3. Utilizzare il "Crea elemento elenco" azione in concomitanza con l'attesa"per il cambiamento di campo" azione e un ricevitore di eventi. Se creiamo una voce di elenco, possiamo specificare tutti i campi che vogliamo. Utilizzare un ricevitore di eventi per aggiornare l'elemento originale quando l'utente completa l'attività e l'attesa"per il cambiamento di campo" condizione dell'azione sarebbe stati accolti e il flusso di lavoro procederebbe. (Per qualche motivo, Avevo più o meno si insediarono su questo approccio prima di decidere saggiamente a piedi per un po').

C'è un inconveniente alla mia soluzione (a parte il fatto ovvio che solo il testo del titolo indica urgenza). Dal "raccolta commenti e suggerimenti" accetta solo i nomi di titolo codificato duro, Ho bisogno di usare due azioni differenti raccolta commenti e suggerimenti cui unica differenza è che duro titolo codificato.

Ma, almeno c'è una soluzione che non richiede ricevitori di eventi o azioni personalizzate di SPD.

Se qualcuno ha risolto questo in un modo più intelligente, per favore fatemi sapere.

</fine>

Facile e veloce: Aprire automaticamente il modulo di InfoPath da SharePoint Designer E-mail

AGGIORNAMENTO: Madjur Ahuja fa notare questo link da un discussione del gruppo di discussione: http://msdn2.microsoft.com/en-us/library/ms772417.aspx. È abbastanza definitivo.

===

Spesso si vuole incorporare collegamenti ipertestuali ai moduli di InfoPath nelle email inviate da flussi di lavoro SharePoint Designer. Quando gli utenti ricevere queste email, possono cliccare sul link da email e andare direttamente al modulo di InfoPath.

Questa costruzione URL mostro lavora per me:

http://server/sites/departments/Technical Services/InformationTechnology/HelpDesk/_layouts/FormServer.aspx?XmlLocation=/sites/departments/Technical Services/InformationTechnology/HelpDesk/REC REM RED Forms/REC2007-12-18T11_33_48.XML&Fonte = http % 3A % 2F % 2Fserver % 2Ecorp % 2Edomain % 2Ecom % 2Fsites % 2Fdepartments % 2FTechnical % 2520Services % 2FInformationTechnology % 2FHelpDesk % 2FREC % 2520REM % 2520RED % 2520Forms % 2FForms % 2FAllItems % 2Easpx&DefaultItemOpen = 1

Sostituire il testo in grassetto rosso con il nome del modulo, come illustrato nella seguente schermata:

immagine

Notare che c'è un sacco di percorso hardcoded in quell'URL, così come un componente con codifica URL. Se questo è troppo difficile da tradurre alla propria situazione specifica, provare ad attivare gli avvisi per la raccolta di moduli. Post una forma e quando si riceve l'email, visualizzare l'origine dell'email e vedrai che tutto il che necessario per includere.

Lettori astute possono notare che il corpo di posta elettronica sopra mostra anche un link che accede direttamente l'attività tramite una visualizzazione filtrata. Ho intenzione di spiegare che in maggiore dettaglio in un post futuro.

</fine>

Technorati Tags:

MUSCHIO mi dice “Accesso negato” per modificare un Task di Workflow, Ma davvero hanno accesso

Io ho implementato un flusso di lavoro tramite SharePoint Designer in un sito che è principalmente sola lettura agli utenti di NT_AUTHORITYAuthenticated"" (vale a dire. tutti). C'è una libreria di moduli per un modulo di InfoPath. C'è un elenco di attività del flusso di lavoro associato pure in modo che quando il flusso di lavoro opera, è possibile assegnare compiti a persone.

Rompo il permesso per la lista di biblioteca e attività di forme così che qualsiasi utente autenticato può creare forme e aggiornare i loro compiti assegnati.

I test con il mio account di prova di basso-privilegi.

Posso riempire fuori e salva una forma alla biblioteca? –>

Posso accedere il compito da un collegamento di posta elettronica? –>

Posso vedere un collegamento attività di modifica del flusso di lavoro –>

Posso fare clic su quel link? –> NO … Autorizzazione negata.

Perché posso vedere un link modifica che mi nega l'autorizzazione quando clicco su di esso? Che è non come si suppone di lavorare…

Vado attraverso la configurazione di sicurezza nuovo, molto da vicino. Farlo di nuovo. Ritengo che l'eliminazione di questo post perché ovviamente non so nulla circa la sicurezza.

Infine, Cerco Internets. Trovo questo thread del forum MSDN altamente improbabile: http://forums.microsoft.com/TechNet/ShowPost.aspx?PostID=1838253&SiteID=17

I manifesti sembrano essere suggerendo che il semplice atto di esportazione del flusso di lavoro in un piatto a trazione risolverà un problema di sicurezza MOSS? Non riesco a credere che ho scritto. Mi viene in mente l'episodio di South Park circa il 9/11 cospirazione dove Stan sta chiedendo il nostro Preznit, "Davvero?" più e più volte.

Così, niente da perdere, Accendi SPD, fare clic destro sul flusso di lavoro e salvarlo sul mio c:\ in auto. Che sarebbe la c:\ unità sul mio portatile. Sto guardando sopra la mia spalla tutto il tempo affinché nessuno mi chiederà, "perché si salvano quel flusso di lavoro in computer portatile?"

Incredibilmente, che risolve il mio problema. Posso modificare l'attività.

Nomino dichiara che questa sia la soluzione Workflow più bizzarro di 2007.

</fine>

Technorati Tags:

SharePoint Designer, Elemento corrente “URL assoluto codificato” e HTTPS

Spesso si vuole inviare un'e-mail contenente un collegamento ipertestuale al documento che ha attivato il flusso di lavoro o elemento. Possiamo usare "con codifica URL dell'elemento corrente assoluto" per questo scopo. Tuttavia, sembra sempre di usare "http" per il protocollo dell'URL. Se il tuo sito viene eseguito su HTTPS allora non funzionerà per voi.

immagine

Per quanto ne so, non c'è nessun out soluzione a questo problema. Se è necessario utilizzare HTTPS, avete no fuori l'opzione casella.

Per risolverlo, creare un'azione personalizzata che fornisce una funzione di sostituzione di stringa da utilizzare nel vostro flusso di lavoro. In alternativa, utilizzare uno strumento di terza parti come il pacchetto eccellente qui: http://www.codeplex.com/spdwfextensions 🙂

</fine>

Invia Email SharePoint Designer ???? via email

Gli utenti del forum di tanto in tanto chiedere: Perché SharePoint Designer mettere ???? nel mio email invece di un valore di campo?

Una ragione per che questo accade è perché la variabile a cui fa riferimento è null.

Ciò può accadere perché si sta cercando di fare riferimento a un campo dall'elemento corrente"" ma l'utente mai immesso un valore nel campo del form.

<fine />

Technorati Tags:

Confrontare / Test per vuote date nel flusso di lavoro SharePoint Designer

Scenario: In un flusso di lavoro SharePoint Designer, è necessario determinare se un campo data è vuoto.

Problema: SPD non fornisce un metodo diretto per il confronto di date per qualcosa di diverso da una data. Non è possibile creare una condizione come questa: "Se [DateField] è uguale a vuoto".

Soluzione: Convertire la data in una stringa. Utilizzare il confronto di stringhe per determinare se la data è vuota.

Screen Shots:

Le schermate seguenti mostrano come eseguire questa operazione. In questo scenario, un campo su un elemento, "Permessi ambientali:Data primo promemoria di soggiorno", è presentato e il flusso di lavoro viene generato in risposta.

immagine

immagine

Note:

Quando ho provato questo, Sono rimasto piacevolmente sorpreso di imparare che funziona. Ero preoccupato che SharePoint Designer potrebbe non consentire l'assegnazione della stringa (Variabile:StringReminderDateDate) ma esso ha fatto permettono.

Ero anche preoccupato che permettendo, il valore potrebbe essere null e o blow up WF in fase di esecuzione o forse alzare la temperatura globale 1/2 un grado, ma questi timori erano infondati.

</fine>

Technorati Tags:

SharePoint Designer del flusso di lavoro azione personalizzata — Osservazione delle <FieldBind Designer Type =”StringBuilder” … />

Solo un'osservazione rapida che c'è una differenza molto importante tra queste due definizioni:

<Campo FieldBind = "InParam1" DesignerType = "StringBuilder" ID = "2" Testo = "Parametri di Input # 1" />

contro:

<Campo FieldBind = "InParam1" ID = "2" Testo = "Parametri di Input # 1" />

La prima mostra come questo in SPD:

immagine

mentre la mostra di quest'ultima come questo:

immagine

Non sono sicuro di quanto siano utili queste schermate, ma mi impegno a farle in modo che tu debba vederle 🙂

L'osservazione è questo: StringBuilder consente di generare una stringa (ovviamente) mescolando insieme le stringhe letterali e dati di flusso di lavoro (tramite il "Add Lookup" pulsante in basso a sinistra). Quando si utilizza il pulsante Aggiungi ricerca, inserisce un token in forma"[%token %]". Quando SharePoint richiama l'azione personalizzata, (Codice c# nel mio caso), SharePoint passa il token stesso, non il valore del token. Se si utilizza il tipo predefinito di progettazione (il secondo tipo), SharePoint si espande il token e passa il valore effettivo del token a vostra azione.

StringBuilder = cattivo, tipo di finestra di progettazione di default = buono.

Naturalmente, che è non quello che voglio dire davvero. Basta non cercare di passare un parametro per l'azione personalizzata quando la finestra di progettazione digitare = StringBuilder. Utilizzare il tipo di progettazione predefinita e catena un StringBuilder ad esso davanti se è necessario costruire stringhe complesse nel vostro flusso di lavoro (che per inciso è esattamente ciò che si fa per creare un oggetto dinamico per l'azione di e-mail, ma questo è un argomento per un altro blog, har har).

<fine />