备注:本文只摘抄片段整项目源代码待全部整理完毕再提供代码下载。
(1),画流程图并流程图模型发布

(2),请求启动流程
<form action="<%=childPath %>/process/myStartProcess" method="post">
<input type="hidden" name="form_name" value="YYG_QING_JIA_PROCESS_KEY" />
业务主键:<input name="bussiness_key" type="text" value="1" /> <br />
业务名称:<input type="text" name="bussiness_name" value="请假业务审批流" /> <br />
拟稿人:<input type="text" name="wf_drafter" value="zhansan" />
<input type="submit" value="测试启动审批流1" />
</form>
(3),启动流程实例
/****
* @date: 2023/1/1 19:08
* @param: String p01
* @desc: 自己动手启动流程
* ***/
@RequestMapping(value = "/myStartProcess", method = RequestMethod.POST)
@ResponseBody
public Map<String, Object> myStartProcess(@RequestParam Map<String, Object> params
,HttpServletRequest request1 ) {
// 流程设计时,输入在整个表单上的主键字符
String processKey = params.get("form_name").toString();
// 业务主键,业务名称
String bussiness_key = params.get("bussiness_key").toString();
String bussiness_name = params.get("bussiness_name").toString();
// 拟稿人
String wf_drafter = params.get("wf_drafter").toString();
ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionKey(processKey).latestVersion().singleResult();
// 流程定义id
String processDefinitionId = processDefinition.getId();
// 字面意义转移搬迁对象
Map<String, Object> transfer = new HashMap<String, Object>();
transfer.putAll(params);
transfer.remove("bussiness_key");
transfer.remove("nomsgtip");
transfer.remove("1");
// 启动流程
ProcessInstance processInstance = runtimeService.startProcessInstanceById(processDefinitionId, bussiness_key, transfer);
System.out.println("启动成功:"+ System.currentTimeMillis() );
return params;
}