可以在js和java中写代码控制流程的启动、流转、回退、终止、结束
启动流程Java
需要引入
import com.justep.system.process.ProcessControl; import com.justep.system.process.ProcessUtils;
方法一介绍
Document startProcess (String processFullName, String name, String sData1, String executor)
返回的Document内容如下
<items> <item> <process>/x5demo/rich/process/applyGoods/applyGoodsProcess</process> <activity>applyActivity</activity> <task>EC9BF028AAC64BDCA0809AC2689AA5B4</task> </item> </items>
示例——传入任务标题、业务主键、执行者,启动流程后可以得到task
String sData1 = "0C23A90D705748AE9D7DD2DE13906275"; Document doc = ProcessUtils.startProcess("/x5demo/rich/process/applyGoods/applyGoodsProcess", "手动启动1",sData1, "/ORG01.ogn/PSN01@ORG01.psm"); String task = doc.getRootElement().element("item").elementTextTrim("task");
方法二介绍
Document startProcess (String processFullName, Map relations, ProcessControl control, List tokens, String executor)
示例——传入sData1,sData2、执行者,启动流程后可以得到task
String sData1 = "11";< Map<String, Object> varMap = new HashMap<String, Object>(); varMap.put("sData1", sData1); varMap.put("sData2", "aa"); List<String> ls = new ArrayList<String>(); Document doc = ProcessUtils.startProcess("/x5demo/rich/process/applyGoods/applyGoodsProcess", varMap, null, ls, <a>/ORG01.ogn/PSN01@ORG01.psm</a>);
说明:startProcess 方法中的executor参数
如果是当前人,可以使用
ContextHelper.getPersonMember().getFID();
如果不是当前人,且知道人的id的话,可以使用
OrgUtils.findOrgUnitsByID(sPersonID).get(0).getFID();
流程流转Java
方法介绍
ProcessControl advanceProcessQuery(String task) void advanceProcess(String task, ProcessControl control)
示例——传入task,执行流程查询获得ProcessControl,再执行流转
ProcessControl pc = ProcessUtils.advanceProcessQuery(task); ProcessUtils.advanceProcess(task, pc);
中止流程Java
方法介绍
public static ProcessControl abortProcessQuery(String task) { public static void abortProcess(String task, ProcessControl control) {
先调用abortProcessQuery返回processControl,再调用abortProcess
发送通知Java
//需要引入 import com.justep.system.process.TaskHelper; import com.justep.system.opm.OrgUnit; import com.justep.system.opm.OrgUtils; import com.justep.system.process.Task; //获得通知接收者 String sData1 = "AA9ACD6BDB8147ED9EE6A666FA26012F"; List<OrgUnit> ls = new ArrayList<OrgUnit>(); ls = OrgUtils.findPersonMembersByID("ORG01", "PSN01"); //设置通知为打开时抢占、打开后自动结束 Map<String, Object> varMap = new HashMap<String, Object>(); varMap.put("sExecuteMode2", com.justep.system.process.TaskExecuteMode2.FINISH_WHEN_OPEN ); varMap.put("sPreemptMode", com.justep.system.process.TaskPreemptMode.OPEN ); //创建通知,执行保存方法,即发送通知 Task t = TaskHelper.createNotice("自定义通知", "/x5demo/rich/process/applyGoods/applyGoodsProcess", "applyActivity", "/x5demo/rich/process/applyGoods/applyActivity.w", "/x5demo/rich/process/applyGoods/applyActivity.w", sData1, ls.get(0), varMap); t.save();
实现类似子流程的效果
需求:在主流程中启动另外一个子流程,当子流程流转完之后,再回到主流程
实现:
1、在主流程的某个环节的流转事件中,把主流程暂停,并且启动子流程
暂停流程的方法如下,启动流程的方法见上面
暂停查询
public static ProcessControl suspendProcessQuery(String task)
暂停
public static void suspendProcess(String task, ProcessControl control)
2、在子流程结束事件中,唤醒主流程
唤醒流程的方法如下
流程唤醒
public static void resumeProcess(String task)
启动流程Js
var data = justep.xbl('dataDEMO_SendDoc'); var rowid = data.getCurrentID(); var flowEngine = justep.xbl("process"); flowEngine.start(null, null, rowid);
中止流程Js
justep.xbl(‘process’).abort();
本文由WeX5君整理,WeX5一款开源免费的html5开发工具,H5 App开发就用WeX5!
阅读其他app 开发相关文章:http://doc.wex5.com/?p=3443
评一波