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>
相关文章
相关标签/搜索