1、首先创建一个“报销单审批的”流程,然后定义不同的url页面和对应的逻辑流;
2、具体案例实现如下:
3、表单录入页面:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" session="false" %>
<%@page import="com.eos.data.datacontext.UserObject" %>
报销单录入
<%
UserObject userObject =(UserObject)request.getSession().getAttribute("userObject");
//通过页面的workItemID获取工作项详细信息workItem
Long workItemID = (Long)request.getAttribute("workItemID");
%>
4、对应的逻辑流
获取工作项明细:通过页面传入的workItemID,使用BPS API的构件queryWorkItemDetail4SDO查询workitem工作项详细信息;
赋值:workitem查询出来后,将其包含的processinstid赋值给业务表的processinstid,便于查询业务表信息;
获取表单信息:通过processinstid与业务表的关联,可以查询业务表信息。
获取报销单编号:表单录入成功后,点击提交,转向下一活动“提交审批流程”,获取报销单编号是为了创建流程实例时,为流程名称和描述起名赋值;在这一活动中存在一个流程是否启动的判断,通过业务表数据中的processinstid是否为null或empty来判断流程是否启动;
赋值流程实例描述和名称:将expcode作为后缀,为创建的流程实例描述和名称赋值;
创建流程实例:BPS API构件库中的组件,是用来创建流程实例,需要传入三个参数,分别是:流程实例名称,流程实例描述,流程实例路径(即要提交的流程全名),返回一个流程实例id;
赋值流程实例id:将创建好的流程实例id赋值给业务表中的processinstid,便于后期查询业务表数据信息;
空操作:一个过渡图元,用来连接流程启动后的下一活动。流程启动后,通过流程实例id判断业务表中是否存在该条数据记录,存在,则走update的逻辑流,不存在,则走add的逻辑流;
构造相关数据:通过业务表单的信息,赋值给流程活动中需要的相关数据(即条件数据);
设置相关数据:调用BPS API的相关构件setRelativeDataBatch(批量设置相关数据),参数是通过processinstid,设置relativeData;
启动流程实例并完成第一个工作项:相关数据设置完成后,通过判断workItemID是否为null或empty,判断若流程未启动,则调用startProcessInstAndFinishFirstWorkItem构件,入参为processinstid,事务操作设置为false,没有其他的参数null;
流程已启动直接完成工作项:相关数据设置完成后,若流程已启动,则调用finishWorkItem构件,入参为workItemID,事务操作仍设置为false。
5、审批页面