起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 25421|回复: 21

用代码控制流程

  [复制链接]

88

主题

9507

帖子

5135

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5135
QQ
发表于 2013-1-8 15:36:56 | 显示全部楼层 |阅读模式
可以在js和java中写代码控制流程的启动、流转、回退、终止、结束
远程的联系方法 QQ 728094812。添加好友时,需要填写论坛账号
发远程时同时也发一下帖子的地址,方便了解要解决的问题

如按照该方法解决,请及时跟帖,便于版主结贴

3

主题

17

帖子

54

积分

初级会员

Rank: 2

积分
54
QQ
发表于 2014-11-8 10:12:23 | 显示全部楼层

String sData1 = "AA9ACD6BDB8147ED9EE6A666FA26012F";
这句话什么意思啊?

88

主题

9507

帖子

5135

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5135
QQ
 楼主| 发表于 2013-1-8 15:38:55 | 显示全部楼层

启动流程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
  1. String sData1 = "0C23A90D705748AE9D7DD2DE13906275";
  2. Document doc = ProcessUtils.startProcess("/x5demo/rich/process/applyGoods/applyGoodsProcess", "手动启动1",sData1, "/ORG01.ogn/PSN01@ORG01.psm");
  3. String task = doc.getRootElement().element("item").elementTextTrim("task");
复制代码
方法二介绍
Document startProcess (String processFullName, Map relations, ProcessControl control, List tokens, String executor)
示例——传入sData1,sData2、执行者,启动流程后可以得到task
  1. String sData1 = "11";
  2. Map<String, Object> varMap = new HashMap<String, Object>();
  3. varMap.put("sData1", sData1);
  4. varMap.put("sData2", "aa");
  5. List<String> ls = new ArrayList<String>();
  6. 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();
远程的联系方法 QQ 728094812。添加好友时,需要填写论坛账号
发远程时同时也发一下帖子的地址,方便了解要解决的问题

如按照该方法解决,请及时跟帖,便于版主结贴

88

主题

9507

帖子

5135

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5135
QQ
 楼主| 发表于 2013-1-8 15:41:24 | 显示全部楼层

流程流转Java

方法介绍
ProcessControl advanceProcessQuery(String task)
void advanceProcess(String task, ProcessControl control)

示例——传入task,执行流程查询获得ProcessControl,再执行流转
  1. ProcessControl pc = ProcessUtils.advanceProcessQuery(task);
  2. ProcessUtils.advanceProcess(task, pc);
复制代码
远程的联系方法 QQ 728094812。添加好友时,需要填写论坛账号
发远程时同时也发一下帖子的地址,方便了解要解决的问题

如按照该方法解决,请及时跟帖,便于版主结贴

88

主题

9507

帖子

5135

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5135
QQ
 楼主| 发表于 2013-1-8 15:44:31 | 显示全部楼层

中止流程Java

方法介绍
public static ProcessControl abortProcessQuery(String task) {
public static void abortProcess(String task, ProcessControl control) {

先调用abortProcessQuery返回processControl,再调用abortProcess
远程的联系方法 QQ 728094812。添加好友时,需要填写论坛账号
发远程时同时也发一下帖子的地址,方便了解要解决的问题

如按照该方法解决,请及时跟帖,便于版主结贴

88

主题

9507

帖子

5135

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5135
QQ
 楼主| 发表于 2013-1-8 15:45:16 | 显示全部楼层

发送通知Java

  1. //需要引入
  2. import com.justep.system.process.TaskHelper;
  3. import com.justep.system.opm.OrgUnit;
  4. import com.justep.system.opm.OrgUtils;
  5. import com.justep.system.process.Task;
  6. //获得通知接收者
  7. String sData1 = "AA9ACD6BDB8147ED9EE6A666FA26012F";
  8. List<OrgUnit> ls = new ArrayList<OrgUnit>();
  9. ls = OrgUtils.findPersonMembersByID("ORG01", "PSN01");
  10. //设置通知为打开时抢占、打开后自动结束
  11. Map<String, Object> varMap = new HashMap<String, Object>();
  12. varMap.put("sExecuteMode2", com.justep.system.process.TaskExecuteMode2.FINISH_WHEN_OPEN );
  13. varMap.put("sPreemptMode", com.justep.system.process.TaskPreemptMode.OPEN );
  14. //创建通知,执行保存方法,即发送通知               
  15. 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);
  16. t.save();
复制代码
远程的联系方法 QQ 728094812。添加好友时,需要填写论坛账号
发远程时同时也发一下帖子的地址,方便了解要解决的问题

如按照该方法解决,请及时跟帖,便于版主结贴

88

主题

9507

帖子

5135

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5135
QQ
 楼主| 发表于 2013-1-8 16:21:28 | 显示全部楼层

实现类似子流程的效果

需求:在主流程中启动另外一个子流程,当子流程流转完之后,再回到主流程

实现
1、在主流程的某个环节的流转事件中,把主流程暂停,并且启动子流程
暂停流程的方法如下,启动流程的方法见2楼
public static ProcessControl suspendProcessQuery(String task)
暂停查询
public static void suspendProcess(String task, ProcessControl control)
暂停

2、在子流程结束事件中,唤醒主流程
唤醒流程的方法如下
public static void resumeProcess(String task)
流程唤醒
远程的联系方法 QQ 728094812。添加好友时,需要填写论坛账号
发远程时同时也发一下帖子的地址,方便了解要解决的问题

如按照该方法解决,请及时跟帖,便于版主结贴

88

主题

9507

帖子

5135

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5135
QQ
 楼主| 发表于 2013-1-8 16:25:44 | 显示全部楼层

启动流程Js

  1. var data = justep.xbl('dataDEMO_SendDoc');
  2. var rowid = data.getCurrentID();
  3. var flowEngine = justep.xbl("process");
  4. flowEngine.start(null, null, rowid);
复制代码
远程的联系方法 QQ 728094812。添加好友时,需要填写论坛账号
发远程时同时也发一下帖子的地址,方便了解要解决的问题

如按照该方法解决,请及时跟帖,便于版主结贴

88

主题

9507

帖子

5135

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5135
QQ
 楼主| 发表于 2013-1-8 16:26:53 | 显示全部楼层

中止流程Js

  1. justep.xbl(‘process’).abort();
复制代码
远程的联系方法 QQ 728094812。添加好友时,需要填写论坛账号
发远程时同时也发一下帖子的地址,方便了解要解决的问题

如按照该方法解决,请及时跟帖,便于版主结贴

47

主题

171

帖子

430

积分

中级会员

Rank: 3Rank: 3

积分
430
发表于 2013-1-16 21:18:48 | 显示全部楼层
mark  此贴甚好~ 鼠标一抖,经验到手呵呵
个性太过强烈,Discuz已屏蔽此条签名。如有问题,请与管理员联系~

17

主题

93

帖子

322

积分

中级会员

Rank: 3Rank: 3

积分
322
QQ
发表于 2013-7-8 10:30:44 | 显示全部楼层
mark 代码控制流程 发送通知
高级模式
B Color Image Link Quote Code Smilies

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2022-12-10 00:31 , Processed in 0.056789 second(s), 24 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表