I would like to get some input on how other people are handling user tasks.
I am about to develop a number of processes, which include user tasks that require some data to be entered.
I could use the Camunda Task list app, but I would rather use a custom management application, which is also used to manage other parts of this particular system.
However, if I use a custom application, there is one problem.
Where should the forms be located?
I like the idea of forms embedded inside the process because that ties the form to the process and you do not need to worry about long running processes and new versions with new forms.
If the forms are to be embedded in the process, I would have to implement generic form handling in my custom application - more os less the same logic that is already implemented in the Camunda task list application.
On the other hand, if the forms are part of the external custom application, I need to make sure this application can support all versions of running processes (with their possibly changing needs for process variables etc).
I’m curious about how other people do this?
Are you using the Camunda taks list app?
Have you implemented your own application? If so, how do you handle forms?
Maybe I am thinking about this the wrong way - perhaps there is a better way?
This is how we do it. Building forms inside of the BPMN still creates the need for writing server side validation code. If you version your forms and use the Form Key in BPMN to control which version is called then you can maintain sync and do not really need to worry about “long running processes and new versions with new forms.” (unless of course you have a breaking change)
First of all, thanks a lot for your reply.
Sorry, but could you clarify - what do you mean, when you say “This is how we do it”?
Are you using the Formio approach as described in the other post or something else.
I’m not sure I understand what you mean, when you talk about versioning forms and setting the Form Key.
Do you mean the “form handling” is done in another application (not embedded in the process archive) and the Form Key simply holds a - versioned - reference to the form required by the process?
@mimaom you have to read the thread I linked to. The full details are explained there.
When I say “we” I mean my organization.
Forms are built in formio. Review the thread for further explanation.
Form key is the field/property on blank start events and user tasks that let you set a “form key”. It is just a string.
That form key is used to determine which form from formio to load.
See the thread I linked to for further explanation.
I have read the thread and I understand how the formio setup works.
I was just not sure that the formio setup was operational or it was something you were working towards using.
I think formio approach looks quite interesting.
What state is this in? Any plans for a Camunda / formio releases where this will be included?
The way we “integrated” formio is not using Camunda Tasklist in any way. So no plans to provide a release there, as the use cases are different.
Take a look at: Form Builder (Drag and Drop) + Form Server Validations
and go to the SDK link and follow the readme (dev folder). You can deploy the microservices (including formio and camunda).
OK, so in your setup you are not using the Camunda Task List app at all, then…
You are using a special Form Key, which points to a form in the formio server.
So is it your custom application, that reads the special form key and requests and renders the form from the formio server?
It works the same as the picture in this post:
Except replace Tasklist with the Portal Angular Web application (GitHub - DigitalState/Portal: The DigitalState Portal Spa), and Camunda Server with the Services Microservice(GitHub - DigitalState/Services: The DigitalState Services Microservice).
It looks like this:
User 1 == Angular App
OroBap == Services Microservice
Formio and Camunda is never directly exposed to the client side. The Service Microservice fronts everything.
I will probably adopt the same principals and implement something like that - just without the formio.
Thanks a lot for your time and input.