资源描述
BPM使用说明
在开发业务模块过程中如果需要使用BPM接口,可以通过IProcInstSrv进行接口调用。
提供的具体接口如下:
1.启动流程实例
/**
* 启动流程实例
* @param procEName 流程英文标识
* @param procVersion 流程版本号
* @param vars 流程实例变量
* @param userId 发起流程人员Id
* @param username 发起流程人员名称
* @param ccUsers 抄送人员Id
* @return
*/
public ProcInstEntity startProc(String procEName, String procVersion,List<WfRVariableinst> vars, String userId,
String userName,String ccUsers);
代码示例:
//从前台得到需要的参数
String procEName=reqDTO.getValue("procEName");
String procVersion=reqDTO.getValue("procVersion");
String ccUsers=reqDTO.getValue("ccUsers");
WFUtils utils=new WFUtils();
//通过WFUtils.getProcVariable()得到流程实例变量
List variables=utils.getProcVariable(reqDTO);
//得到IProcInstSrv流程调用接口
IProcInstSrv procInstSrv=MemberCache.getInstance().getProcInstSrv();
//调用启动流程实例接口
procInstSrv.startProc(procEName,procVersion, variables, userToken.getUserId(),userToken.getUserName(),ccUsers);
2.得到待审批列表
/**
* 根据当前用户和模板类型得到待审批列表
* @param userId 用户ID
* @param procType 流程类型
* examineinstId 审批实例Id 一般设为空字符串即可
* examineRoleId 角色Id
* @return
*/
public List getExamineInstListByUserID(String userId,
String procType,String examineinstId, String examineRoleId);
代码示例:
//列表分页显示代码部分
String currentPage = msg.getValue("currentPage");
if(currentPage==null || currentPage.trim().equals(""))
currentPage = "1";
String pageSize = msg.getValue("pageSize");
if(pageSize==null || pageSize.trim().equals("")){
ConfigHandler cfgHd = ConfigFactory.getCfgHandler();
pageSize = cfgHd.getSingleNodeValue("//pagination/pageSize");
}
UserToken userToken = reqDTO.getUserToken();
//从前台页面得到参数
String procType="";
String userId=userToken.getUserId();
String orgId=userToken.getOrgId();
String examineRoleId=userToken.getRoleIds();
//得到调用接口
IProcInstSrv procInstSrv=MemberCache.getInstance().getProcInstSrv();
//通过接口得到待审批列表
List list=procInstSrv.getExamineInstListByUserID
(userId,procType,"",examineRoleId);
msg.setValue("datas", list);
msg.setValue("totalRows", list.size());
3.得到审批页面显示信息
/**
* 点击审批时得到审批实例的所有信息和所有下级节点
* @param procinstId 流程实例Id
* @param examineinstId 审批实例Id
* @param procType 流程类型,一般为空字符串
* @param userId 当前用户Id
* @return
*/
public Map getExamineInfo(String procinstId, String examineinstId,
String procType, String userId);
代码示例:
//从前台得到需要参数
UserToken userToken = reqDTO.getUserToken();
String procType="";
String userId=userToken.getUserId();
String procinstId=reqDTO.getValue("procinstID");
String examineinstId=reqDTO.getValue("examineinstID");
//得到流程IProcInstSrv调用接口
IProcInstSrv procInstSrv=MemberCache.getInstance().getProcInstSrv();
//得到流程详细信息显示页面接口
Map map=procInstSrv.getExamineInfo(procinstId, examineinstId,
procType, userId);
//返回前台页面显示
List list=new ArrayList();
list.add(map.get("examineinInfo"));
//是否是第一级审批节点--用户能否回退
msg.setValue("isFirstApplyNode", map.get("isFirstApplyNode"));
//审批信息显示
msg.setValue("examineinInfo", list );
//下级节点--用户SELECT选择使用
msg.setValue("nodeList", map.get("nodeList"));
//是否能够直接通过
msg.setValue("isCanPass", map.get("isCanPass"));
msg.setValue("startNode", map.get("startNode"));
4.审批流程实例节点
/**
* 审批节点
* @param nextNodeId 下级节点Id
* @param examineInfo 本级节点审批信息
* @param isPass 是否通过
* @param examineinstId 审批实例Id
* @param procinstId 流程实例Id
* @param examineUserName 审批用户名称
* @param taskInstId 审批taskInstId
* @return
*/
public Map examineNode(String nextNodeId, String examineInfo,
String isPass, String examineinstId, String procinstId,
String examineUserName, String taskInstId);
代码示例:
//从前台得到需要参数
String nextNodeId = reqDTO.getValue("nextNodeID");
String examineInfo = reqDTO.getValue("examineInfo");
String isPassstr = reqDTO.getValue("isPass");
String examineinstId = reqDTO.getValue("examineinstID");
String procinstId = reqDTO.getValue("procinstID");
String taskinstId = reqDTO.getValue("taskinstId");
//得到流程IProcInstSrv接口
IProcInstSrv procInstSrv = MemberCache.getInstance().getProcInstSrv();
//调用审批接口
procInstSrv.examineNode(nextNodeId, examineInfo, isPassstr,
examineinstId, procinstId, userToken.getUserName(), taskinstId);
5.得到当前用户发起的流程实例列表
/**
* 根据当前用户启动的流程实例
* @param userId 当前用户Id
* @param procType 流程类型
* @return
*/
public List getStartProcInstByCurUser (String userId,String procType);
代码示例:
//得到相应参数
String userId=userToken.getUserId();
String procType="";
if(reqDTO.getValue("procType")!=null&&!reqDTO.getValue("procType").equals(""))
{
procType=reqDTO.getValue("procType");
}
//得到流程调用接口
IProcInstSrv procInstSrv=MemberCache.getInstance().getProcInstSrv();
//得到当前用户发起的流程列表
List list=procInstSrv.getStartProcInstByCurUser(userId, procType);
6. 查询当前用户的抄送列表
/**
* 根据userid查询抄送的流程列表
* @param userId 当前用户Id
* @return
*/
public List queryPorcInstCCByUserId(String userId);
代码示例:
UserToken userToken = reqDTO.getUserToken();
//调用流程IProcInstSrv接口
IProcInstSrv procInstSrv = MemberCache.getInstance().getProcInstSrv();
//调用当前用户的抄送列表
List list = procInstSrv.queryPorcInstCCByUserId(userToken.getUserId());
msg.setValue("procInstList", list);
展开阅读全文