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

QQ登录

只需一步,快速开始

查看: 1265|回复: 3

[处理中5] 3.4 微信企业号实现通知规则问题

[复制链接]

9

主题

47

帖子

131

积分

初级会员

Rank: 2

积分
131
QQ
发表于 2016-9-18 15:20:47 | 显示全部楼层 |阅读模式
您好,在微信企业号搭载X5中,现在想实现一个功能,想让有通知规则的环节 也能实现像待办任务一样 实现微信企业号消息推送,请问我该怎么做?

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36077
发表于 2016-9-18 17:53:25 | 显示全部楼层
目前没有提供直接设置的,已作为产品功能建议提交(内部编号:2016091800023),感谢楼主的支持与配合。

目前如果要实现,可以在流转查询后事件中通过ProcessControl获取到task设置扩展字段的值,Task中提供的有setRelationValue(String name, Object value) 设置任务关系的值

然后在/BIZ/system/logic/code/dsrc/ProcessPushEngine.java中加一个获取通知的,先获取ProcessControl从中获取到扩展字段的值,然后再获取到PI,PI中获取所有的子,在获取这个扩展字段的值,如果相等就调用发消息的API
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



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

使用道具 举报

9

主题

47

帖子

131

积分

初级会员

Rank: 2

积分
131
QQ
 楼主| 发表于 2016-9-19 11:44:15 | 显示全部楼层
jishuang 发表于 2016-9-18 17:53
目前没有提供直接设置的,已作为产品功能建议提交(内部编号:2016091800023),感谢楼主的支持与配合。

目 ...

听的云里雾里的,能详细写个例子吗?谢谢!
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36077
发表于 2016-9-19 14:54:27 | 显示全部楼层
目前没有完整的例子
可以在流转查询后事件中通过ProcessControl获取到task设置扩展字段的值,Task中提供的有setRelationValue(String name, Object value) 设置任务关系的值要先理解了

在/BIZ/system/logic/code/dsrc/ProcessPushEngine.java中加一个获取ProcessControl获取扩展字段的值如下:
List<ProcessControlItem> items = ProcessUtils.getProcessContext().getProcessControl().getNotices();
                for (ProcessControlItem item : items){
                        item.getTask().getRelationValue("XX");
                }
               

获取PI如下:
Set<Task> notices = new HashSet<Task>();
ProcessInstance pi = ProcessUtils.getPI();
                for (Task t : pi.getTask().getChildren()){
                       
                        if ("xxx".equals(t.getRelationValue("sExxxx1")) && TaskKind.NOTICE.equals(t.getKind())){
                                notices.add(t);
                       
                        }
                }

把红色的改为PI中task的中扩展字段的值给ProcessControl中扩展字段的值做比较,如果相等就把task的值放到Set中
然后自己遍历Set发通知,可以参考
  1. for (Task t : next.getTask().getExecutorTasks()){
  2.                                                         sendMessage(t);
  3.                                                         String status = t.getStatus();
  4.                                                         if (TaskStatus.READY.equals(status) || TaskStatus.EXECUTING.equals(status)){
  5.                                                                 String name = t.getName();
  6.                                                                 String url = t.getEURL();
  7.                                                                 if (SystemUtils.isNotEmptyString(url)){
  8.                                                                         url += (url.contains("?") ? "&" : "?");
  9.                                                                         url = url + "task=" + t.getId() + "&process=" + t.getProcess() + "&activity=" + t.getActivity();
  10.                                                                        
  11.                                                                         if (url.startsWith("/")){
  12.                                                                                 url = JustepConfig.getUIServer() + url;
  13.                                                                         }
  14.                                                                         logger.info("message: " + name + ", url: " + url + ", person: " + t.getExecutorFID() + ", " + t.getExecutorFName());
  15.                                                                         Message msg = new Message(name, url, null);
  16.                                                                         Set<String> personIDs = new HashSet<String>();
  17.                                                                         personIDs.add(t.getExecutorFID());
  18.                                                                         MessageDispatcherFactory.createMessageDispatcher(JustepConfig.getMqttServer()).sendMessage(msg, personIDs);
  19.                                                                 }
  20.                                                         }
  21.                                                 }
复制代码

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



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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-12 05:27 , Processed in 0.060449 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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