-
Feature Request
-
Resolution: Fixed
-
L3 - Default
-
None
-
None
I've worked with the "Activiti-family" of process engines for over 10 years: from jBPMN to Activiti, Flowable and recently Camunda. So far I've always written my own form handling functionality using custom commands.
My intention now is to work with instead of around the workflow engine as much as possible, so I'm trying to use the built-in form functionality this time. The most obviously way to do this seems to be using a ProcessEnginePlugin that configures a custom FormEngine. This worked quite well for providing customized rendering. But then I ran into some roadblocks.
Since form rendering and submission are each other's dual, I expect these concerns to be located in the same class. In reality, whereas FormEngine is responsible for rendering, it's the FormHandler that's responsible for submission. This is quite awkward for several reasons:
- the functionality that is common to rendering and submission is needed by these two classes.
- the FormHandler.submitFormVariables method has no access to the FormData.
- the only way to provide a custom FormHandler is by putting the camunda:formHandlerClass attribute on every task.
Sure, I can find ways around these issues, but it quickly becomes quite messy.
Am I missing something, or is this just the result of organically grown functionality over the years? I would be happy to propose (and implement) some improvements if that's the case.
This is the controller panel for Smart Panels app
[CAM-10622] Custom form handling
Description |
Original:
I've worked with the "Activiti-family" of process engines for over 10 years: from jBPMN to Activiti, Flowable and recently Camunda. So far I've always written my own form handling functionality using custom commands.
My intention now is to work _with_ instead of _around_ the workflow engine as much as possible, so I'm trying to use the built-in form functionality this time. The most obviously way to do this seems to be using a ProcessEnginePlugin that configures a custom FormEngine. This worked quite well for providing customized rendering. But then I ran into some roadblocks. Since form rendering and submission are each other's dual, I expect these concerns to be located in the same class. In reality, whereas FormEngine is responsible for rendering, it's the FormHandler that's responsible for submission. This is quite awkward for several reasons: - the functionality that is common to rendering and submission is needed by these two classes. - the FormHandler.submitFormVariables method has no access to the FormData. - the only way to provide a custom FormHandler is by putting the camunda:formHandlerClass attribute on every task. Sure, I can find ways around these issues, but it quickly becomes quite messy. Am I missing something, or is this just the result of organically grown functionality over the years? I would be happy to propose (and implement) some improvements if that's the case. |
New:
I've worked with the "Activiti-family" of process engines for over 10 years: from jBPMN to Activiti, Flowable and recently Camunda. So far I've always written my own form handling functionality using custom commands.
My intention now is to work _with_ instead of _around_ the workflow engine as much as possible, so I'm trying to use the built-in form functionality this time. The most obviously way to do this seems to be using a ProcessEnginePlugin that configures a custom FormEngine. This worked quite well for providing customized rendering. But then I ran into some roadblocks. Since form rendering and submission are each other's dual, I expect these concerns to be located in the same class. In reality, whereas FormEngine is responsible for rendering, it's the FormHandler that's responsible for submission. This is quite awkward for several reasons: - the functionality that is common to rendering and submission is needed by these two classes. - the FormHandler.submitFormVariables method has no access to the FormData. - the only way to provide a custom FormHandler is by putting the camunda:formHandlerClass attribute on every task. Sure, I can find ways around these issues, but it quickly becomes quite messy. Am I missing something, or is this just the result of organically grown functionality over the years? I would be happy to propose (and implement) some improvements if that's the case. |
Assignee | New: Yana Vasileva [ yana.vasileva ] |
Link | New: This issue is related to CAMTEAM-31 [ CAMTEAM-31 ] |
Hi marcusk,
Thank you for reaching out to with this.
As a first step, I would like to understand better your goal and the reasoning behind the feature request (before the decision for custom implementation of custom FormEngine).
You mentioned that you want to use the "built-in form functionality", could you tell us more about what have you tried and what is missing for you?
Have you looked into the Embedded Task Forms functionality (User guide)? Does it fit your needs?
After giving us more details on the above, I will continue with your concrete questions/bullets.
Best regards,
Yana