看了很多文章,都多少缺些东西,研究后,写了个小demo。
部署文件列表
outSildeForm.png
outSildeForm.bpmn
outSildeForm.form
start.form
其中 start.form为启动节点表单,outSildeForm.form为审批节点表单
start.form:
<input type="text" id="name" name="name"></input>
outSildeForm.form
<input type="text" id="name" name="name">#{name}</input> 区别在查看节点可以从流程变量中获取值并自动赋值。
outSildeForm.bpmn部分
<process id="outSideForm" name="outSideForm" isExecutable="true">
<startEvent id="startevent1" name="Start" activiti:formKey="act/designs/outSideForm/start.form"></startEvent>
<userTask id="usertask1" name="节点1" activiti:assignee="4202" activiti:formKey="act/designs/outSideForm/outSildeForm.form"></userTask>
部署测试demo
//式部署流程 (文件流方式部署无效)
DeploymentBuilder deploymentBuilder =repositoryService.createDeployment();
deploymentBuilder.addClasspathResource("act/designs/outSideForm/outSildeForm.bpmn");
deploymentBuilder.addClasspathResource("act/designs/outSideForm/outSildeForm.png");
deploymentBuilder.addClasspathResource("act/designs/outSideForm/outSildeForm.form");
deploymentBuilder.addClasspathResource("act/designs/outSideForm/start.form");
Deployment deployment= deploymentBuilder.deploy();
System.out.println("部署成功");
//获取流程定义id
ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().deploymentId(deployment.getId()).singleResult();
Object renderedStartForm = formService.getRenderedStartForm(processDefinition.getId());
//表单信息填写variables里
Map<String, String> variables = Maps.newHashMap();
variables.put("name", "test");
//启动流程
ProcessInstance processInstance = formService.submitStartFormData(processDefinition.getId(), variables);
//查询待审批
List<Task> todoListAssignee = taskService.createTaskQuery().processDefinitionKey("outSideForm")
.taskAssignee("4202").active().orderByTaskPriority().desc().orderByTaskCreateTime().desc().list();
//审批
for(Task task : todoListAssignee)
{
//获取审批表单
Object renderedTaskForm = formService.getRenderedTaskForm(task.getId());
variables.put("flag","yes");
//审批
formService.submitTaskFormData(task.getId(), variables);
}