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č?

  1. 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
  2. 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.
  3. 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 :)

    1. 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.
    2. 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.
  4. 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
  5. 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.
  6. 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 ….
  7. 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.
  8. 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…