工作流接口记录

以下只是示例代码,具体封装要根据需求设计,将工作流接口调用限制在封装类中,如下代码中所示工作流功能封装类名称为WFUtil

场景一:初始化客户端

代码如下:

private long APP_ID = CiticWF.APP_ID;
private long BIZ_ID = CiticWF.BIZ_ID;

private String	orgID;
private String userID = "sa";

private SunflowClient client;
private CiticWF wf;


public WFUtil(String orgID, String userID) throws SunflowException {
	this.orgID = orgID;
	this.userID = userID;
	client = SunflowClientFactory.newSunflowClient();
	client.connect(BIZ_ID, userID);
	
	wf = new CiticWF(client);
}
场景二:创建、启动流程实例

通过流程定义名称创建流程实例,然后修改流程变量,最后启动流程实例

public Map<Long, List<WorkItemContext>> createAndStartProcess
(String proDefName, String proInsName, String desc, Map<String, Object> params) throws Exception {
	return wf.createAndStartProcess(proDefName, proInsName, desc, params);
}
场景三:查看流程轨迹

场景二得到流程实例id,根据流程实例id查看流程的运行轨迹,查看工作项列表

 public List<WorkItemContext> listWorkitemsByProInsID(long proInsID) throws SunflowException {
 		System.out.println("listWorkitemsByProInsID...");
 		List<WorkItemContext> workitemS = client.listWorkItemsLowCost("wki_priid=" + proInsID + 
 										" order by wki_createTime");
 		printWorkitems(workitemS);
 		return workitemS;
 	}
private void printWorkitems(List<WorkItemContext> workitemS) {
	for (WorkItemContext w : workitemS) {
		System.out.println("procInsID=" + w.getProInstanceID()
				+ ", workitemID=" + w.getWorkItemID() 
				+ ", workitemName=" + w.getWorkItemName()
				+ ",\t State=" + w.getWorkItemState()
				+ ", checkOutTime=" + w.getWorkItemCheckedOutTime()
				+ ", checkInTime=" + w.getWorkItemCheckedInTime()
				+ ", prdName=" + w.getProDefinitionName()
				+ ", executor=" + w.getExecutorUserInfo());
	}
 }
场景四:查看工作项待办人

场景三中选出状态为2的工作项,根据工作项id查看待办人情况——代码如下:

public List<UserInfo> getApplyman(long workitemID) throws SunflowException {
	List<UserInfo> applyman = client.getApplyExecutor(workitemID);
	System.out.println("applyman=" + applyman);
	return applyman;
}
场景五:查看当前用户的待办列表

某个操作员应该先查看属于自己的待办任务列表

public List<WorkItemContext> queryWaitingTaskList(int begin, int pageSize) throws SunflowException {
	String orderBy = "order by wki_createTime";
	List<WorkItemContext> workitemS = CiticWF.listWaitingTasksByRoleAndUser(orgID,	userID, orderBy, begin, pageSize);
	return workitemS;
}
场景六:申请待办工作项

根据工作项id申请到手一个待办项,代码如下:

public void applyWorkitem(long workitemID) 
throws SunflowException {
	client.applyWorkitemByOrg(orgID, workitemID);
}
场景七:查看已经被自己申请到的工作项

查看自己申请到的工作项列表,代码如下:

public List<WorkItemContext> queryAppliedTaskList() throws SunflowException {
	String filter = "wki_state=4 and wki_bizid="+BIZ_ID+" and wki_user='"+userID+"' and wki_appid=" + APP_ID;
	List<WorkItemContext> workitemS = client.listWorkItemsLowCost(filter, 0, 10);
	// 打印
	printWorkitems(workitemS);
	return workitemS;
}
场景八:修改流程变量、提交工作项

提交工作项,封装了修改流程实例变量、提交工作项两步,流程实例id和工作项id都放到map里传递过来——代码如下:

public List<WorkItemContext> checkInWorkitemWithProcVar(long proInsId, Long workitemID, Map<String, Object> params) throws Exception {
	wf.checkInWorkitemWithProcVar(proInsId, workitemID, params);
	List<WorkItemContext> nextWkiList = client.checkInWorkItem(workitemID);
	return nextWkiList;
}
场景九:查看结束的工作项列表

需注意:
结束工作项查询必须限制checkIn时间段为不大于一周——代码如下:

public List<WorkItemContext> queryCompletedTaskList(int begin, int pageSize) throws SunflowException {
	// 结束工作项查询必须限制checkIn时间区间段为不大于一周
	String filter = "wki_state=6 and wki_bizid="+BIZ_ID
		+" and wki_user='"+userID+"' and wki_appid=" + APP_ID
		+" and wki_checkInTime between TIMESTAMP('2014-09-09 00:00:00')" +
				" and TIMESTAMP('2014-09-16 00:00:00')";
	List<WorkItemContext> workitemS = client.listWorkItemsLowCost(filter, begin, pageSize);
	// 打印
	printWorkitems(workitemS);
	return workitemS;
}
场景十:废弃后续工作项

工作项a刚刚被checkIn提交,后续工作项b未被apply时将处于待办状态,此时可以废弃掉b工作项,同时a工作项将被重新激活,注意,参数为a的工作项id:

public void discardSuccessorWorkitem(long workitemID) throws SunflowException {
	client.discardSuccessorWorkItems(workitemID);
}
场景十一:终止流程实例

流程实例没有必要继续流转下去,为防止其干扰正常任务的查询、办理,可以调用下面的接口对流程实例进行终止:

public void terminateProInstance(long priID) throws Exception {
	client.terminateProcessInstance(priID);
}
场景十二:修改工作项执行人

工作项任务被人申领后,申领人即为当前工作项的唯一执行人,此时如有需要修改该执行人为其他人,则可参考下面代码:

public void modifyExecutor(long workitemID, String userid) throws Exception {
	WMTWflParticipant newExecutor = new WMTWflParticipant();
	newExecutor.setBizID(BIZ_ID);
	newExecutor.setParticipantID(userid);
	client.modifyWorkItemExecutor(workitemID, newExecutor);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值