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

QQ登录

只需一步,快速开始

查看: 10104|回复: 34

[结贴] JUSTEP180360; 提示: 后续环节未指定执行者,请重新流转

[复制链接]

150

主题

599

帖子

1205

积分

金牌会员

Rank: 6Rank: 6

积分
1205
QQ
发表于 2017-7-17 14:38:08 | 显示全部楼层 |阅读模式
本帖最后由 chaierkid 于 2017-7-17 14:49 编辑

build version : 5.3.4.4935
build time : 2016.04.11 15:19:24


第三方系统调用流程的API报错:(已经选择了后续环节的执行者)在开发版中,同样的数据,测试是没问题的,是不是开发版和推广版的api不一样?


第三方系统代码如下:
QQ截图20170717143620.png

x5系统代码如下:
QQ截图20170717143637.png


2017-07-17 14:27:35 action:<?xml version="1.0" encoding="UTF-8"?>
<action process="/SA/OPM/system/systemProcess" activity="mainActivity" name="taskForCMOCheckFromApp" execute-context="" content-type="application/xml"><parameters><parameter name="task"><xbiz:simple xmlns:xbiz="http://www.justep.com/xbiz#" type="http://www.w3.org/2001/XMLSchema#String">C2B293683E0D448D947E8F92B9174C74</xbiz:simple></parameter><parameter name="sActivity"><xbiz:simple xmlns:xbiz="http://www.justep.com/xbiz#" type="http://www.w3.org/2001/XMLSchema#String">CMOCheck</xbiz:simple></parameter><parameter name="gyID"><xbiz:simple xmlns:xbiz="http://www.justep.com/xbiz#" type="http://www.w3.org/2001/XMLSchema#String">tjBkoJ7RVfzX1hzpIvZ</xbiz:simple></parameter></parameters></action>
java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:497)
        at com.justep.system.action.Engine.invokeActions(Native Method)
        at com.justep.system.action.Engine.invokeActions(Unknown Source)
        at com.justep.business.server.BusinessServer.doAction(Unknown Source)
        at com.justep.business.server.BusinessServer.doExcute(Unknown Source)
        at com.justep.business.server.BusinessServer.excute(Unknown Source)
        at com.justep.business.server.BusinessServer.excute(Unknown Source)
        at com.justep.business.server.BusinessServerServlet.execService(Unknown Source)
        at com.justep.business.server.BusinessServerServlet.service(Unknown Source)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
        at com.justep.x.bs.BusinessServerServlet.service(Unknown Source)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
        at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:497)
        at com.justep.system.action.Engine.invokeAction(Native Method)
        at com.justep.system.action.Engine.invokeAction(Unknown Source)
        at com.justep.model.impl.UtilImplementInstance.invokeAction(Unknown Source)
        at com.justep.model.impl.UtilImplementInstance.invokeAction(Unknown Source)
        at com.justep.system.action.ActionUtils.invokeAction(Unknown Source)
        at com.justep.system.process.ProcessUtils.advanceProcess(Unknown Source)
        at AppTask.taskForCMOCheckFromApp(AppTask.java:45)
        ... 27 more
Caused by: com.justep.system.util.BizSystemException: 编码: JUSTEP180360; 提示: 后续环节未指定执行者,请重新流转
        at com.justep.system.util.BizSystemException.create(Unknown Source)
        at com.justep.system.process.ProcessEngine.check(Unknown Source)
        at com.justep.system.process.ProcessEngine.commit(Unknown Source)
        at ProcessProcedure.advanceProcess(ProcessProcedure.java:350)
        ... 38 more
com.justep.baas.action.ActionException: Action[webproblem/problem/updateProblemByCMOCheck]执行失败,后续环节未指定执行者,请重新流转
        at com.justep.baas.action.Engine.execAction(Unknown Source)
        at com.justep.baas.action.Engine.execAction(Unknown Source)
        at com.justep.baas.servlet.BaasServlet.execService(Unknown Source)
        at com.justep.baas.servlet.BaasServlet.service(Unknown Source)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
        at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:497)
        ... 16 more
Caused by: java.lang.RuntimeException: 后续环节未指定执行者,请重新流转
        at utils.X5Actions.taskForCheckProcess(X5Actions.java:118)
        at webproblem.Problem.updateProblemByCMOCheck(Problem.java:437)
        at webproblem.Problem__do.updateProblemByCMOCheck(Problem__do.java:363)
        ... 20 more



91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36069
发表于 2017-7-17 15:35:03 | 显示全部楼层
API是一样的,把设置的执行者打出来看看是什么
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



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

使用道具 举报

150

主题

599

帖子

1205

积分

金牌会员

Rank: 6Rank: 6

积分
1205
QQ
 楼主| 发表于 2017-7-17 17:05:10 | 显示全部楼层
本帖最后由 chaierkid 于 2017-7-17 17:35 编辑
jishuang 发表于 2017-7-17 15:35
API是一样的,把设置的执行者打出来看看是什么

public static String taskForCMOCheckFromApp(String task,String sActivity,String gyID){
                //1、首先获取某个任务后续的流转数据结构
                根据输出,得出的结果是,这里获取后去流转的数据结构不对,应该有两个支线,但是只获取到了一个支线,
这个是怎么获取的?
                ProcessControl control = ProcessUtils.advanceProcessQuery(task);
                //2、获得后续可能流转的环节
                List<ProcessControlItem> flowTos = control.getFlowTos();
                System.out.println(gyID);
                System.out.println(flowTos.size());
                for (int i = flowTos.size() - 1; i >= 0 ; i--) {
                    ProcessControlItem flowTo = flowTos.get(i);
                    //3、获取环节ID做判断
                        System.out.println(OrgUtils.findOrgUnitsByID(gyID).get(0));
                    String activity = flowTo.getUnit();
                        System.out.println("sActivity:"+sActivity+";activity:"+activity);
                    if (sActivity.equals(activity)) {
                        flowTo.clearExecutors();
                        //flowTo.addExecutor(OrgUtils.findOrgUnitsByID(gyID).get(0));
                    } else {
                        //5、移走后续不流转的环节
                        control.removeFlowTo(flowTo);
                    }
                         flowTo.addExecutor(OrgUtils.findOrgUnitsByID(gyID).get(0));
                }
                System.out.println("1111111111111");
                //6、按定制的ProcessControl流转
                List<Map<String, String>> list = ProcessUtils.advanceProcess(task, control);
                System.out.println("22222222222222");
                return list.get(0).get("task");
        }
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36069
发表于 2017-7-17 17:39:45 | 显示全部楼层
1.确认流程图是什么?
2.确认process中是否有事件或者自己写了流程事件的监听修改了processControl
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



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

使用道具 举报

150

主题

599

帖子

1205

积分

金牌会员

Rank: 6Rank: 6

积分
1205
QQ
 楼主| 发表于 2017-7-17 17:44:23 | 显示全部楼层
本帖最后由 chaierkid 于 2017-7-17 18:05 编辑
jishuang 发表于 2017-7-17 17:39
1.确认流程图是什么?
2.确认process中是否有事件或者自己写了流程事件的监听修改了processControl ...

流程图是好的,process也没有修改:
问题是一共四条数据,都走的同样的审批,有两条就可以,有两条就不可以,获取到的后续节点不同。。。。
不可以的两条在X5内部也能走下去,就是第三方调用的时候不行。。。。


这个真的很着急呀,能远程么?

回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36069
发表于 2017-7-18 08:44:41 | 显示全部楼层
1.确认传的task是否正确
2.确认第三方调用的时候执行者是否是任务的执行者
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



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

使用道具 举报

150

主题

599

帖子

1205

积分

金牌会员

Rank: 6Rank: 6

积分
1205
QQ
 楼主| 发表于 2017-7-18 09:18:34 | 显示全部楼层
jishuang 发表于 2017-7-18 08:44
1.确认传的task是否正确
2.确认第三方调用的时候执行者是否是任务的执行者

task都是一样传的,如果有问题,其他两条就不能正常通过了;
流程图都是一样的,如果流程有问题,那么其他两条也不能正常通过;

现在问题定位到不是任务执行者的问题了,是因为在获取后续流程时,只获取到一个分支。。。。


1、首先获取某个任务后续的流转数据结构
                根据输出,得出的结果是,这里获取后去流转的数据结构不对,应该有两个支线,但是只获取到了一个支线,这个是怎么获取的?
                ProcessControl control = ProcessUtils.advanceProcessQuery(task);
                //2、获得后续可能流转的环节
                List<ProcessControlItem> flowTos = control.getFlowTos();
                System.out.println(gyID);
                System.out.println(flowTos.size());
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36069
发表于 2017-7-18 10:37:12 | 显示全部楼层
F12打开浏览器的开发人员调试工具,然后分别在X5和第三方中运行看看下面这个action的response中的数据
process.png
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



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

使用道具 举报

150

主题

599

帖子

1205

积分

金牌会员

Rank: 6Rank: 6

积分
1205
QQ
 楼主| 发表于 2017-7-18 11:36:15 | 显示全部楼层
jishuang 发表于 2017-7-18 10:37
F12打开浏览器的开发人员调试工具,然后分别在X5和第三方中运行看看下面这个action的response中的数据
...

流转操作时,监控么?第三方里没有这个请求;

X5里有,

{"aCode":"","code":"","customer":"0","data":{"actionFlag":"__action_0__","value":{"class":"com.justep.system.process.ProcessControl","object":{"@@tag":"process-control","customized-enabled":"false","dialog-enabled":"true","exts":{},"jump-enabled":"false","message":"","notice":[],"postscript":"","runnable-activities":[{"@@children":[{"@@tag":"censorAndSign1","@id":"5EC078FA24B84DF2982076156703E34C","@label":"CMO会签","@optional":"false","@selectable":"true"},{"@@tag":"CMOCheck","@id":"1C82185395A442EDA4D78E8C816D29A4","@label":"CMO组长审批","@optional":"false","@selectable":"true"}],"@@tag":"xor","@id":"32CEC601CC1D47E68AFF689D9BE5338B"}],"save-history":"true","status":"none","task-join":"false","task-join-mode":"tjmMultiple","to":[{"@activity-id":"5EC078FA24B84DF2982076156703E34C","@id":"5EC078FA24B84DF2982076156703E34C","@is-end":"false","@readonly":"false","@selected":"false","executor-kinds":"","executor-range":[{"@@tag":"org-unit","fid":"/ORG01.ogn/PSN01@ORG01.psm","fname":"/问题报告单/system","responsible":"false"},{"@@tag":"org-..........................
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36069
发表于 2017-7-18 14:28:01 | 显示全部楼层
第三方是通过什么方式调用的平台的action?ajax请求吗?

把第三方调用的ProcessControl通过

System.out.println(control.writer().asXML())的方法打印出来发一下
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-26 18:43 , Processed in 0.060938 second(s), 26 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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