1 / 31

Pitfalls of Complex Content Workflow Development

Pitfalls of Complex Content Workflow Development. Short Intro. Axel Faust Alfresco Architect Frankfurt, Germany Community Alfresco Forums (EN / DE) Challenged Jeff Potts ( and won !?) Twitter : @ReluctantBird83 Blog: axel-faust.de (EN / DE) Summary 2011 – 2012: „Level up “.

jetta
Download Presentation

Pitfalls of Complex Content Workflow Development

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. PitfallsofComplex Content Workflow Development

  2. Short Intro • Axel Faust • AlfrescoArchitect • Frankfurt, Germany • Community • Alfresco Forums (EN / DE) • Challenged Jeff Potts (andwon !?) • Twitter: @ReluctantBird83 • Blog: axel-faust.de (EN / DE) • Summary 2011 – 2012: „Level up“

  3. Definition / Scope • „Complex“ Workflow • User perspective • Numberoftasks / collaborators • Pattern ofinteraction • Technical perspective • System integrations • Automation complexity • „Content“ Workflow • Content-centric – not just peripheral • Interaction with / manipulationofcontentitems

  4. Definition / Scope • Not considered: unnecessary / excessive BPM • Business + developmentagree on KISS • Alternative approaches • Dynamic BPM • BPM + collaboration hybrid (e.g. withtaskdatalist) • Pitfallcategories • Usability • Development • Costof Ownership

  5. Usability#1 – Long click-streams#2 – Unclear / ambigouscontext

  6. Task-oriented Navigation • Legend • UD: User Dashboard • MT: My Tasks • TE: Task Edit • WD: Workflow Details • DD: Document Details • FD: Folder Details • DL: Document Library • Explicit Navigation • History / Back UD MT TE #1.1 WD #1 DD #1 DD #2 DD #3 DL #A FD #B DD #C

  7. Issues of End-Users • Isolatedoverviews / filters • „Content in tasksassignedtoMe“ ? • „(Assigned | Pooled) Tasks in Site X“ ? • Limitation by lack ofcontext • Processinformation in Document Library • Metadata / content in Forms • Distribution ofactions • Simple editing • Relevant businessactions

  8. Context in Document Library • Simple customizations • Virtual Metadata • Indicators • Custom filters • Methods • DocLibCustomization • RepoWebScript • Override 4.0 / 4.1 • Surf Extensibility 4.2

  9. Context / Actions in Forms • Relateddata • Virtual fields via Forms API • Customizedcontrols • Relatedactions • Hook in association.ftl • ReusingAlfrescomodules • Controlconfiguration • Start location • Noderesolver • …

  10. Other Improvements • UI Mediator pattern • Delayedpageredirection • Check forfollow-uptask • Adaptednotifications • Specifictemplateswith relevant metadata • Optional: offline-packageasattachment • Additional views • Task listforsupervisors / processowners • Recentlyupdatedtasks

  11. Development#3 – Unknown BPM limits / features

  12. Knowing what‘s possible • Alfresco 4.0: Activiti 5.7 • Incomplete BPMN 2.0 • Noasynch. continuations • Alfresco 4.2: Activiti 5.10 • Suspension ofprocesses? • Signals / messages? • Potential issues • Modellingeffortwasted • Unnecessarycomplexity • Unstableprocess / solution

  13. ProcessRelevance • Task Compensation • „Undo“ handler • Onlycompletedtasks • E.g. un-synchcontent • Asynch. Continuation • Decouplingtasks • Error Event • Explicit handlingofbusinessfaults

  14. Example: Complexityof Content Distribution Alfresco 4.0 / 4.1 + Activiti 5.7 Alfresco 4.2 + Activiti 5.10 Asynch Queue Signal Alfresco Node Store Outgoing Message Queue 30m Message Bundle X Search & Acquire Remove Process Alfresco Job (Quartz)

  15. Development#4 – Handling permissions / policiesincorrectly

  16. IssueswithPermissions / Policies • Large numberoferrors / questions in forums (>2,5 %) • 447 / 1.190 topics: „Access Denied“ / „runAs“ • 756 topics: „Failedtosignaltransition“ (jBPM) • Statistical assumption: ~75 % permissions / policies • Limited control in process • User-managedpermissionsandstate • Unrelatedservicesandprocesses

  17. Common Constellations Txn Start UserTaskListener (JavaScript) Policy A Public Service Service Impl. Public Service Service Impl. Policy B ServiceTask (Java) Policy C Commit Queue RunAs „User X“ Listener (JavaScript) Public Service Service Impl. Policy D Txn Begin Commit Policy B Public Service Service Impl. Policy D Txn End Commit

  18. Suggested Options • Handle coreaspects • Explicit versionmanagement • Detectlocks / workingcopiesand deal appropriately • Decoupleuserandservicetasks • Asynch. continuationsrunas „System“ • AvoidhabitualuseofrunAs in process • Avoidoverlapwithpolicies / rules

  19. Costof Ownership#5 – Overloadingprocesswithimplementation

  20. Affectedelements • „Overloading“ • Non-trivial code in process • Logic in 2nd tierhandlers • Issues • BPM engineversioning • Bugfixing in-flight? • Minor changes? • Redundant code • Core process • Web scripts+ utils • Limited debuggingsupport

  21. Externalizing Scripts Default importmechanism

  22. Externalizing Scripts Default importmechanism (not debuggable) ALF-13631 Import API (debuggable)

  23. Externalizing Scripts Default importmechanism (not debuggable) ALF-13631 Import API (debuggable, customizable) Processspecificimporter Version- andprocess- awareimporter

  24. MovingLogicinto Services • (Almost) A rolemodel: Alfrescoinvitationworkflow • Highlyadvisable • BPM-specificcodeonlyformappinganddelegation • Auditableserviceinterface • Utilities forscriptaccess • Roomforimprovement • Conclusionhandledby BPM helperinsteadofservice => Audit incomplete • Lack ofservice / process-specificpermissions

  25. Costof Ownership#6 – Not consideringbackwardscompatibility

  26. Process Evolution ProcessInstances • Issues • Conflicts / blockages in existingprocesses • Confusionofusers • Support effort • Causes • Existingstate in arbitrarycombination • Lack of uniform versioningconcept • Var. pointsofincom-patibility 1.0 Task modelchanged 1.1 Processrefactoring Java handlerupdates 2.0 Java handlerupdates Form configchange 2.1

  27. ApproachestoProcess Evolution • Basic strategies • „ThrowAway“ activeprocesses • Migrateprocessinstances • Parallel existence / operation • Predominant: parallel operation • Distinctartefacts after change • Alt.: codehandlesoldprocessinstancesexplicitly

  28. Handling DistinctArtefacts • Explicit versions • Java: package / classname • JavaScript: path / importcontext • Model / forms: namespaces / types • Version handlingsupport • Reference update via filtering in buildautomation • Import resolutionbased on versionranges • Extension / import • Not „fromscratch“

  29. Time isrunning out…

  30. Conclusion • Limited pitfallselection • Analysis and design • Training andbusinessdeployment • Measuringprocesssuccess / metrics • Sufficienttoolingtoavoiddevpitfalls • Strong and innovative platform • Activecommunity • Thanksforyourattention

  31. Questions / Feedback

More Related