elguardian opened a new issue, #1107:
URL: https://github.com/apache/incubator-kie-issues/issues/1107

   At present, it is very difficult adding new nodes and new states to
   the workflow engine.
   
   In the medium/long term, additional node types that only serve certain
   requirements will be needed. The reasons for adding them can be really
   different and they might only be useful in certain situations or
   process definitions.
   
   The idea of the proposal is to create a set of extension points for
   making the engine more reusable and allow other process definitions
   add their own node types and execution types without polluting the
   engine with basic primitives of execution.
   
   This will have an impact at three different levels.
   
   * Add capability to create node instances (node states) from the
   nodes. This will impact the NodeInstanceFactory.
   * Add capability to store that node instance This will impact the
   marshaller and unmarshaller
   * Add capability to extends the flow builder to allow code generation
   
   As the responsibility of compiling into an intermediate representation
   relies on parser, that should not impact other modules.
   This will allow a clear boundary among compilers and a clean
   responsibility among modules to accept new features.
   
   This is a general idea of how this would look at the end:
   
   
   * jbpm-flow:
        - will contain the compiled process definition
        - will contain the execution algorithm
        - primitive nodes that cannot break down into smaller pieces
   
   * jbpm-marshaller
        - contains the extension point for new nodes.
   
   * jbpm-flow-builder
        - contains the extension point for generating code.
   
   * jbpm-flow-bpmn2-extension
        - will contain nodes related exclusively to bpmn2 like human task
   or ruleset
        - contains marshall/unmarshalling logic for the new nodes
   
   * jbpm-flow-bpmn2-builder-extension
        - contain logic for code generation
   
   * jbpm-flow-cmmn-extension
        - nodes related to cmmn like sentries, plan, stages, milestones....
        - contains marshall/unmarshalling logic for the new nodes
   
   * jbpm-flow-cmmn-builder-extension
        - contain logic for code generation
   
   * jbpm-flow-swf-extension
        - will contain any special/optimized node for serverless workflow
   execution.
        - contains marshall/unmarshalling logic for the new nodes
   
   * jbpm-flow-swf-builder-extension
        - contain logic for code generation
   
   As this is considered a Java component the mechanism to be used would
   be the service loader approach without relying on any runtime like
   quarkus or spring boot.
   
   This impact in the code should be rather small in this case but allow
   more independency around working on process definitions
   implementations (swf, bpmn2 or event future cmmn)
   It reduces the friction among process definition implementations
   It allows to focus in implementation details of process definitions
   instead of changing primitives in the workflow engine causing
   unnecessary changes.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to