Activiti 用戶任務關聯自定義表單

Markdown

問題闡述

一般每個「用戶任務」都會對應一個表單,以供用戶錄入信息。尤爲是在「流程定義」擁有多個版本的情形下,明確的指定表單顯得極其重要。
一份新版本的「流程定義」一般對錶單有如下幾點影響:javascript

  1. 新增了環節(用戶任務),這時緊跟着新增一個表單便可,以及腳本、樣式、Web API;
  2. 刪除了環節(用戶任務),這時能夠不用管,爲顧及舊版本的流程定義,其對應的表單還須要保留,並不能刪除;
  3. 修改了環節(用戶任務),好比在 A 環節新增了兩個字段,同時在 B 環節減小了兩個字段,這時就要爲 A、B 兩個環節各自從新建立表單、從新建立腳本、樣式、以及從新建立Web API,由於表單變了,那麼業務也就變了,SQL(表)也都跟着變了。

表單關聯方案

爲了讓特定環節(用戶任務)方便的找到屬於本身的表單,能夠使用 Form Key 進行關聯:html

Markdown

那麼在辦理該用戶任務時,就能夠讀取出該表單的名字:java

TaskFormData formData = formService.getTaskFormData(taskId);
String formKey = formData.getFormKey();

或者針對啓動流程階段,能夠這樣讀取表單名:jsp

formService.getStartFormData(String processDefinitionId).getFormKey();

客戶端渲染

  1. 若是表單頁面是一個獨立的主頁面,那能夠直接跳轉過去:
var url = formKey + "?id=" +objId + "&taskId=" +taskId;
window.location.href = url;
  1. 若是表單頁面是一個分部視圖(仍然能夠是 .jsp),則基於 JSP EL 表達式將 formkey 填充到佔位符 {0} 便可:
<jsp:include page="../../shared/Partial/{0}.jsp" flush="true"/>

腳本和樣式的加入與此同理。
在 JSP 中,當路徑是一個變量時,作法參考以下:url

<% String add = "/includes/" + id + "/abc.html"; %>  
<jsp:include page="<%= add %>"></jsp:include>
相關文章
相關標籤/搜索