camunda_12_forms
User task 和 Start event的 form 類型
- Camunda forms: 使用 Modeler 創建的外部form文件, Camunda TaskList 應用能自動渲染該form.
- Embeded or External Task forms: 手寫js +html, Embeded 和 External 區別在于, Embeded form可以在 TaskList 應用中渲染, 而 External form 不能.
- Generated Task forms: 使用Modeler創建的內部form, form和流程定義保存在同一個文件中. TaskList 應用能自動渲染該form.
按照是否可以通過TaskList應用渲染, 將上面幾種類型form分為兩組, 簡單對比它們的特點:
- External Forms: 流程流轉通過自建的應用完成,表單可以任意復雜; User task的formKey屬性值可以填寫任意data ; Form 上的元素并不會自動作為Process變量, 如果需要的話, 必須在submit時候設置輸出的Process變量.
- Non-External Forms: 流程流轉通過Camunda TaskList 應用完成, 表單元素種類較少, 適合于快速交付的小型項目, 真實項目中使用的并不多; formKey和formRef屬性必須按照官方要求格式填寫, 這樣TaskList才能正常渲染form; Form上的所有元素都將作為Process 變量暴露出來, 并保存到后臺數據庫中.
External forms 使用思路
- 在定義流程時, 先為user task的
formKey設定form 路徑信息或其他標識性信息. - 在Task處理時, 我們的項目使用Camunda FormService類提供的API獲取user task的formKey信息, 得到 form 的路徑信息, 進而完成form的渲染.
- 最后, 通過FormService類的submit API提交 user task結果.
bpmn 文件的 formKey 屬性:
<userTask id="theTask" camunda:formKey="app:FORM_NAME.html"
camunda:candidateUsers="John, Mary"
name="my Task">
FormService 類的主要API:
String getTaskFormKey(String processDefinitionId, String taskDefinitionKey);
String getStartFormKey(String processDefinitionId);
void submitTaskForm(String taskId, Map<String, Object> properties);
ProcessInstance submitStartForm(String processDefinitionId, Map<String, Object> properties);
快速 form 設計工具(國人開源)
-
form making(組件較多)
form making官網
form making的github -
form create(組件較少)
form create官網
form create的github

浙公網安備 33010602011771號