Presentation is loading. Please wait.

Presentation is loading. Please wait.

Pitfalls of Complex Content Workflow Development.

Similar presentations

Presentation on theme: "Pitfalls of Complex Content Workflow Development."— Presentation transcript:

1 Pitfalls of Complex Content Workflow Development

2 Short Intro Axel Faust Alfresco Architect Frankfurt, Germany Community Alfresco Forums (EN / DE) Challenged Jeff Potts (and won !?) Twitter: @ReluctantBird83 Blog: (EN / DE) Summary 2011 – 2012: Level up

3 Definition / Scope Complex Workflow User perspective Number of tasks / collaborators Pattern of interaction Technical perspective System integrations Automation complexity Content Workflow Content-centric – not just peripheral Interaction with / manipulation of content items

4 Definition / Scope Not considered: unnecessary / excessive BPM Business + development agree on KISS Alternative approaches Dynamic BPM BPM + collaboration hybrid (e.g. with task data list) Pitfall categories Usability Development Cost of Ownership

5 Usability #1 – Long click-streams #2 – Unclear / ambigous context

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 DD #3 DL #A DD #C FD #B DD #1 MT TE #1.1 WD #1 DD #2

7 Issues of End-Users Isolated overviews / filters Content in tasks assigned to Me ? (Assigned | Pooled) Tasks in Site X ? Limitation by lack of context Process information in Document Library Metadata / content in Forms Distribution of actions Simple editing Relevant business actions

8 Context in Document Library Simple customizations Virtual Metadata Indicators Custom filters Methods DocLib Customization Repo WebScript Override 4.0 / 4.1 Surf Extensibility 4.2

9 Context / Actions in Forms Related data Virtual fields via Forms API Customized controls Related actions Hook in association.ftl Reusing Alfresco modules Control configuration Start location Node resolver …

10 Other Improvements UI Mediator pattern Delayed page redirection Check for follow-up task Adapted notifications Specific templates with relevant metadata Optional: offline-package as attachment Additional views Task list for supervisors / process owners Recently updated tasks

11 Development #3 – Unknown BPM limits / features

12 Knowing whats possible Alfresco 4.0: Activiti 5.7 Incomplete BPMN 2.0 No asynch. continuations Alfresco 4.2: Activiti 5.10 Suspension of processes? Signals / messages? Potential issues Modelling effort wasted Unnecessary complexity Unstable process / solution

13 Process Relevance Task Compensation Undo handler Only completed tasks E.g. un-synch content Asynch. Continuation Decoupling tasks Error Event Explicit handling of business faults

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

15 Development #4 – Handling permissions / policies incorrectly

16 Issues with Permissions / Policies Large number of errors / questions in forums (>2,5 %) 447 / 1.190 topics: Access Denied / runAs 756 topics: Failed to signal transition (jBPM) Statistical assumption: ~75 % permissions / policies Limited control in process User-managed permissions and state Unrelated services and processes

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

18 Suggested Options Handle core aspects Explicit version management Detect locks / working copies and deal appropriately Decouple user and service tasks Asynch. continuations run as System Avoid habitual use of runAs in process Avoid overlap with policies / rules

19 Cost of Ownership #5 – Overloading process with implementation

20 Affected elements Overloading Non-trivial code in process Logic in 2nd tier handlers Issues BPM engine versioning Bugfixing in-flight? Minor changes? Redundant code Core process Web scripts + utils Limited debugging support

21 Externalizing Scripts Default import mechanism

22 Externalizing Scripts Default import mechanism (not debuggable) ALF-13631 Import API (debuggable)

23 Externalizing Scripts Default import mechanism (not debuggable) ALF-13631 Import API (debuggable, customizable) Process specific importer Version- and process- aware importer

24 Moving Logic into Services (Almost) A role model: Alfresco invitation workflow Highly advisable BPM-specific code only for mapping and delegation Auditable service interface Utilities for script access Room for improvement Conclusion handled by BPM helper instead of service => Audit incomplete Lack of service / process-specific permissions

25 Cost of Ownership #6 – Not considering backwards compatibility

26 Process Evolution Issues Conflicts / blockages in existing processes Confusion of users Support effort Causes Existing state in arbitrary combination Lack of uniform versioning concept Var. points of incom- patibility 1.0 1.1 2.0 2.1 Task model changed Process refactoring Java handler updates Form config change Process Instances

27 Approaches to Process Evolution Basic strategies Throw Away active processes Migrate process instances Parallel existence / operation Predominant: parallel operation Distinct artefacts after change Alt.: code handles old process instances explicitly

28 Handling Distinct Artefacts Explicit versions Java: package / class name JavaScript: path / import context Model / forms: namespaces / types Version handling support Reference update via filtering in build automation Import resolution based on version ranges Extension / import Not from scratch

29 Time is running out…

30 Conclusion Limited pitfall selection Analysis and design Training and business deployment Measuring process success / metrics Sufficient tooling to avoid dev pitfalls Strong and innovative platform Active community Thanks for your attention

31 Questions / Feedback

32 Unreliable Indicator of Complexity

33 Pitfall categories Usability Process acceptance / work effort of users Insufficient view and control of active processes Development Delays in realization / limited functionality Stability of execution Cost of Ownership Support and maintenance of active processes Process enhancements / evolution

34 Usability #1 – Excessive / unnecessary BPM

35 Excessive BPM Usages Attractive BPM Out-of-the-Box features User guideance Matters of scale Instance count Emails sent Common issues Task / email overload Unflexible workflows

36 Critical Consideration Key aspects Business criticality / relevance Level of formality / granularity Alternatives Unobtrusive DMS-solution Metadata, filtered views and policies / rules Audit log for history Abstraction: Dynamic BPM Loosely coupled workflows Complementary solutions (e.g. task data list)

37 Content-oriented Navigation (simplified) Legend UD: User Dashboard SD: Site Dashboard TE: Task Edit WD: Workflow Details DD: Document Details DL: Document Library UD TE #1.2 DD #4 DD #5 DL #E WD #1 SD

38 Building plan of The Place That Sends You Mad The Twelve Tasks of Asterix Les Productions René Goscinny / Dargaud Films / Studios Idefix

39 Indications Did this happen to you? Update jBPM / Activiti tables to … Bugfix embedded script Bugfix parameter mapping for Java handler Restart process to force use of embedded script update Similar code in embedded script, service and web scripts logger.log() in embedded script for debugging

40 Challenges of Process Evolution High effort of thorough tests Arbitrary process state / data Deployment history and runtime Weak (version) binding Primarily name-based Pure Java / JavaScript without version concept Differentiation of changes Immediate vs. delayed effect Development vs. quick fix / hack Layer 0 (Definition) Layer 1 (Model, Listener, Delegate) Layer 2 (Forms, Filters) Layer 3 (Services, Actions …) Time of deployment Model URI / arbitrary Implied model URI / arbitrary Arbitrary Versioning schemes

Download ppt "Pitfalls of Complex Content Workflow Development."

Similar presentations

Ads by Google