Tuesday, October 20, 2009 9:01 PM
michalowo
Smrt jménem Workflow for Windows Sharepoint Services
Nedávno se na mne obrátil znamý s prosbou o pomoc s vývojem malého state-machine workflow pro Windows Sharepoint Services. Říkal jsem si, že když znám Workflow Foundation, ASP.NET a standardní vývoj pro Sharepoint Server, tak proč do toho nejít, že … A to byla chyba, Worfklow pro WSS je něco za co bych celému vývojovému týmu WF zakázal nadobro programovat, aby již neudělali více škod! A proč?
- 99% všech ukázek a dem na internetu jsou zaměřeny na sekvenčí workflow …. což naprosto nechápu, protože WSS/MOSS je document-based systém, kde oběh dokumentů lze velmi špatně popsat pomocí sekvenčního workflow
- Když už máte to štěstí, že najdete ukázky na tvorbu state-machine workflow, tak jsou z 99,99999% zaměřeny na vývoj pro MOSS tj. tvorba workflow formulářů pomocí InfoPath services, které jaksi nejsou dostupné pro WSS.
- Když se dostanete k těm pár ojedinělým ukázkám jak vytvořit task formuláře pomocí ASP.NET, tak začnete proklínat do čeho jste se to dali :)
- Formuláře pro workflow jsou dvojího druhu. Formuláře pro inicializaci, asociaci a modifikaci workflow. To jsou “jednoduché” ASP.NET formuláře. Pomocí nich se provádí inicializace workflow, kde se informace předávají pomocí AssociationData struktury. Informace o těchto formulářích se vkládají do konfiguračního .XML souboru workflow.
- Druhým typem jsou formuláře pro editaci Tasku, jsou to taky normální ASP.NET formuláře…jenže je nelze nikde nakonfigurovat v .XML souboru, ale je nutné vytvoři něco co se jmenuje ContentType…fakt pakárna.
- Když už překousnete, že je šílená pakárna s ASP.NET formuláři, tak narazíte na věci typu, že některé parametry získáte z query-stringu, jiné z objektového modelu a jiné jako vlastnosti workflow….O pomoci z dokumentace si nechte zdát
- A aby tomu nebyl konec, tak error logging je nad WSS/MOSSEm night mare. Když nastane chyba, tak se to dozvíte hláškou Error Okurek (Error Occured) a více detailů v gigantickém log adresáři…..ladění workflow přímo z VS má za následek stopnutí celého WSS/MOSS portálu a nejsou zpracovány žádné jiné požadavky.
- Další NightMare jsou tzv. Correlation Tokens, kterými se řídí scope operací ve State-machine workflow. Pokud používáte tokens tak jak byste očekávali dle logiky, tak se sice workflow přeloží, ale nic neudělá … a jelikož nedojde k chybě nelze fakt dobře zjistit, kde je problém ….
- Nasazení Workflor na WSS se trošku liší od nasazení pro MOSS… Konfigurační soubor .XML obsahuje pro WSS jiné položky než pro instalaci na MOSS.
- A takhle bych mohl postupovat dále a dále …..
Proč to ale píšu…Pokud se někdo dostal do stavu, že ho čeká tato sebevražda, či je již ve stavu totálního chaosu, tak dejte vědět a pokusím se připravit nějaký použitelný manuál/průvodce jak na toto zvěrstvo…