Workflow Generator
The main idea of the workflow generation within the platform is to allow users to create workflows for their project pages. This should in theory give them flexibility to run their project in the unique way.
BPMN editor
BPMN editor is implemented using the library called bpmn-js. It is a library developed and maintained by the Camunda team (BPMN.io). In the platform it is heavily extended with VIPCOAT functionality.
Procedure to add custom VIPCOAT BPMN elements has been explored and is available. This is done by extending the Camunda BPMN moddle by VIPCOAT arguments.
Examples of the added functionality can be seen in the bottom part of the figure. Each button is providing one, such as programmatically adding tasks from libraries. This automatically connects the worker and upwind user tasks to the Camunda forms for input/output procedure. Equivalent functionality exists for adding DMN tables.
The validation procedure checks if each service task has all inputs provided by the upwind tasks. If it does not, the worker will not be executable and will pend forever when the invalid service task is reached in the workflow execution.
DMN editor
Similarly to the BPMN editor, the DMN editor is implemented using the library dmn-js developed by BPMN.io. The library provides a graphical user interface, where a user can build a DMN table. It is extended with functionality to store any created DMN table into the project page. Once stored, the DMN library is extended and can be used as an element in the BPMN modeller.
Camunda Forms
Camunda forms are forms specially developed for querying users when their interaction with running instances of BPMN workflows is needed. The library used is called form-js and is developed by BPMN.io. The benefit of the library is the ability to store forms in json format instead of HTML. Once the json object is available it can be attached to a user task and directly rendered by Camunda and VIPCOAT platforms. Executing a form sends the list of variables to Camunda and finishes the task. Form playground with all elements is shown in the figure.
Camunda forms are automatically created for user when they register a task. The figure above shows all the elements of the module available in the platform, but however, the editing of forms are hidden from platform users to avoid potential user errors in creating them.
Workflow execution
Each newly created BPMN workflow can be stored either at the partnership or project page. Once the diagram is ready, users can request its deployment to Camunda. Deployment procedure uses a separate meta-workflow responsible for the whole process of adding a new workflow to the Camunda platform. Once a workflow is added it becomes available at the project page of the partnership that requested the deployment. However, once the diagram is deployed to Camunda it cannot be modified further. The execution of workflows is connected to the previously existing execution procedure. The difference is that now Camunda forms are used for input/output.
The workflows are further complemented by the execution logs. The logs are created automatically when executing tasks. Generic loggers have been created for JavaScript and Python workers. With the loggers each worker can send logs back to the server via a public API endpoint.
The tasks can only be executed by users that belong to a particular part of quadruple helix. For the example a user belonging to industry cannot execute governmental tasks and proceed with the workflow execution. This ensures that the rules of the quadruple helix innovation framework are respected in the diagrams.
Event driven workflow system
The event driven workflow system is a way in which workflow execution is triggered in the platform. The platform uses the pub-sub system and message queues to execute particular workflows. The configuration page serves a purpose of connecting a particular workflow to an event. After the event is emitted, the particular workflow is executed. This gives the platform even more flexibility. Every partnership can then create their own procedure of handling certain processes.
All the events should be predefined and should cover sensible operations for the project page, such as, adding a new user to the partnership, removing a user, uploading resources to the project page, etc. At the moment of emiting an event moment, the execution of the correct workflow is triggering via the system. The event system is build on top of the pub-sub architecture provided by RabbitMQ. The system works by sending messages to the correct queues. The queue are being listened to by the workflows. At the moment a queue receives a message, the workflow behind the queue is executed.
Workflow Library
The page has been added that collects demo workflows. The idea is to provide users with a list of commonly used BPMN structures and allow them easier generation of workflows.
This list is accessible from the BPMN editor where users can import the BPMN structure most similar to the workflow they want to create.
Clicking on select imports the workflow and allows users to continue editing it.