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

QQ登录

只需一步,快速开始

查看: 4880|回复: 4

[结贴] 流程结束时的通知,如何在java代码中取得

[复制链接]

11

主题

37

帖子

97

积分

初级会员

Rank: 2

积分
97
QQ
发表于 2017-11-15 14:12:56 | 显示全部楼层 |阅读模式
版本: 小版本号:
数据库: 服务器操作系统: 应用服务器:
客户端操作系统: 浏览器:
通知规则中设置,通知时机为结束时,如何在java代码中取得该通知。(业务需要获得该通知相关内容并短信提醒通知人)在oAfterFinish事件处理方法中能取到吗? 怎么取? 谢谢

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36069
发表于 2017-11-15 15:12:28 | 显示全部楼层
参考:
  1.         public static void noticeFlowProcessAfterFinish() {
  2.                 ProcessControl flowControl = (ProcessControl) ProcessUtils.getProcessContext().getProcessControl();
  3.                 for (ProcessControlItem to : flowControl.getNotices()) {
  4.                         for (OrgUnit ect : to.getExecutors()) {
  5.                                 String fid = ect.getFID();
  6.                                 String fname = ect.getFName();
  7.                                 System.out.println("==========人员名称sName=========" + OrgUtils.getPersonNameByFName(fid, fname));

  8.                         }
  9.                 }
  10.         }
复制代码
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

11

主题

37

帖子

97

积分

初级会员

Rank: 2

积分
97
QQ
 楼主| 发表于 2017-11-16 09:15:38 | 显示全部楼层
本帖最后由 国核信息 于 2017-11-16 14:55 编辑

谢谢~
该通知的taskId如何取得呢?用notice.getTask().getId()取得的taskId不对。
业务需要组合 notice的访问url地址,如下:
http://localhost:8080/x5/UI2/v_/portal/pc3/index.w?device=pc#!($model/UI2/AA/NN/process/AAPJCHK/detailDialog.a?_pagePattern=readonly
&process=/AA/NN/process/AAPJCHK/aAPjCHKProcess
&activity=detailDialog
&task=8098787767ADA98E50B37D99E82B
&sData1=C797DA7897DA27FE611EF612
&title=标题
&executor=%2FccxNDu1QoF3VnVggZnd.ogn%2FGCcI1vuZjwp0mwAcQ2o.dpt%2FtfFS5HuprYJxc0kVgR8.pos%2FI7cla2aoR0YevyurtUv%40tfFS5HuprYJxc0kVgR8.psm)

回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36069
发表于 2017-11-17 16:13:17 | 显示全部楼层
通知的任务目前不能在onAfterFinish中获取到
可以在process的onBeforeAdance事件中如下操作:
  1.         public static void noticeFlowProcessBeforeAdvance() {
  2.                 ProcessControl control  = (ProcessControl)ContextHelper.getActionContext().getParameter("control");
  3.                 String uuid = UUID.randomUUID().toString().toUpperCase().replaceAll("-", "");
  4.         for (ProcessControlItem item : control.getNotices()){
  5.              item.getTask().setRelationValue("sESField08", uuid);
  6.         }
  7.         ContextHelper.getRequestContext().put("notice", uuid);
  8.         }
复制代码


然后在onAdvanceAfter事件中用ksql到数据库中查找任务获取
  1.         public static void noticeFlowProcessAfterAdvance() {
  2.                 String sESField08 = (String) ContextHelper.getRequestContext().get("notice");
  3.                 String task = "";
  4.                 String ksql = "Select task from SA_Task task where task.sESField08='"+sESField08+"'";
  5.                 Table table = KSQL.select(ksql, null, "/system/data", null);
  6.                 if(table.size()>0){
  7.                         Row row = table.iterator().next();
  8.                         task = row.getString("task");
  9.                 }
  10.                 System.out.println("==========task=========" + task);
  11.         }
复制代码
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

11

主题

37

帖子

97

积分

初级会员

Rank: 2

积分
97
QQ
 楼主| 发表于 2017-11-21 17:18:33 | 显示全部楼层
jishuang 发表于 2017-11-17 16:13
通知的任务目前不能在onAfterFinish中获取到
可以在process的onBeforeAdance事件中如下操作:

解决,谢谢~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 23:54 , Processed in 0.059316 second(s), 25 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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