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

QQ登录

只需一步,快速开始

查看: 945|回复: 5

[结贴] 代码插入任务数据流转报错

[复制链接]

7

主题

36

帖子

75

积分

初级会员

Rank: 2

积分
75
QQ
发表于 2016-5-3 10:34:45 | 显示全部楼层 |阅读模式
场景:
流程环节为独立执行,生成多条任务,实际业务,任务生成后,有可能会重新分配给别人,所以程序中写代码生成了任务。通过sql向sa_task、sa_taskrelation 插入了数据
现在遇到很怪异的情况,
第一次正常通过流转 分给 A1 、A2
然后,代码生成任务,分给B1、B2、B3 ,并删除A1、A2的任务数据(检查后台数据库,数据正常)
但是流转的时候会报null的错误,后台错误信息
2016-05-03 10:25:46 excute stream action, params:{"actions":[{"accept":"applicat
ion/json","action":"externalAdvanceProcessAction","actionFlag":"__action_0__","a
ctivity":"prjReviewActivity","contentType":"application/json","executeContext":"
","executor":"/wzNmxdibNWcta2LjjaV.ogn/OUOZTRLqeUgvXsX9ghW.dpt/rbsDSH2loFa03P0Sk
hH@OUOZTRLqeUgvXsX9ghW.psm","parameters":{"control":{"class":"com.justep.system.
process.ProcessControl","object":{"@@tag":"process-control","customized-enabled"
:"false","dialog-enabled":"true","jump-enabled":"false","message":"","notice":[]
,"postscript":"","save-history":"true","status":"none","task-join":"false","task
-join-mode":"tjmMultiple","to":[{"@activity-id":"08711D08A1C54238AF34EAFECD3674A
7","@id":"08711D08A1C54238AF34EAFECD3674A7","@is-end":"false","@readonly":"false
","@selected":"true","executor-kinds":"","executor-range":[{"@@tag":"org-unit","
fid":"/wzNmxdibNWcta2LjjaV.ogn/OUOZTRLqeUgvXsX9ghW.dpt/rbsDSH2loFa03P0SkhH@OUOZT
RLqeUgvXsX9ghW.psm","fname":"/北京市怀柔区教委/评审组/评审1","responsible":"fals
e"}],"executors":[{"@@tag":"org-unit","fid":"/wzNmxdibNWcta2LjjaV.ogn/OUOZTRLqeU
gvXsX9ghW.dpt/rbsDSH2loFa03P0SkhH@OUOZTRLqeUgvXsX9ghW.psm","fname":"/北京市怀柔
区教委/评审组/评审1","responsible":false}],"process":"/project/prjApply/process/
carryout/carryoutProcess","task-assign-mode":"together","task-relation-value":{"
@@tag":"task-relation-value","SA_Task":"BABC27F6C1E043B7BCC7E58ED9EFFF84","sActi
vity":"opinionCollectActivity","sActivityInTemplate":"opinionCollectActivity","s
ActivityName":"评审意见汇总","sCURL":"/project/prjApply/process/carryout/prjRevi
ewActivity.a","sEURL":"/project/prjApply/process/carryout/opinionCollectActivity
.a","sExecuteMode":"temPreempt","sExecuteMode2":"","sLastModifyTime":"2016-05-03
T10:25:44.666Z","sLock":"641B07E4006B4D258D23290AE3E1F305","sName":"实施方案审批
_评审意见汇总: 计算机采购项目(00320160502004)","sPreemptMode":"tpmOpen","sProce
ss":"/project/prjApply/process/carryout/carryoutProcess","sProcessName":"实施方
案审批","sProcessTemplateID2":"","sSummary":"红螺寺中学_02申请项目,申请时间:2016
-05-03。","sTypeName":"实施方案审批"},"template":"","unit":"opinionCollectActivi
ty"}]}},"task":"DC882459515845FAA16F76503C20017D"},"process":"/project/prjApply/
process/carryout/carryoutProcess"}]}
java.lang.reflect.InvocationTargetException
        at sun.reflect.GeneratedMethodAccessor273.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        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 Sour
ce)
        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(Appl
icationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV
alve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextV
alve.java:191)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
ava:127)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j
ava:103)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal
ve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav
a:293)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java
:861)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.proce
ss(Http11Protocol.java:606)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:48
9)
        at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.reflect.InvocationTargetException
        at sun.reflect.GeneratedMethodAccessor268.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        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 Sour
ce)
        at com.justep.model.impl.UtilImplementInstance.invokeAction(Unknown Sour
ce)
        at com.justep.system.action.ActionUtils.invokeAction(Unknown Source)
        at com.justep.system.process.ProcessUtils.advanceProcess(Unknown Source)

        at ExternalProcessProcedure.advanceProcess(ExternalProcessProcedure.java
:30)
        ... 26 more
Caused by: java.lang.NullPointerException
        at com.justep.system.process.ProcessEngine.updatePI(Unknown Source)
        at com.justep.system.process.ProcessEngine.commit(Unknown Source)
        at ProcessProcedure.advanceProcess(ProcessProcedure.java:308)
        ... 36 more

但是如果在流程中分配给B1、B2、B3,
然后再代码生成A1、A2的任务,并删除B1、B2、B3的任务,A1、A2的就能正常流转

是还需要处理哪里吗?

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35955
发表于 2016-5-3 13:44:02 | 显示全部楼层
修改执行人,可以在任务中心回收现在的任务,然后重新流转,或者在流程监控中修改执行人

如果是有手动创建任务,可以调用平台提供的API
http://bbs.wex5.com/forum.php?mo ... 7&pid=164970944中提供的TaskHelper.createNotice,API中有
TaskHelper.createTask
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



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

使用道具 举报

7

主题

36

帖子

75

积分

初级会员

Rank: 2

积分
75
QQ
 楼主| 发表于 2016-5-3 16:31:34 | 显示全部楼层
本帖最后由 ygkd 于 2016-5-3 16:47 编辑
jishuang 发表于 2016-5-3 13:44
修改执行人,可以在任务中心回收现在的任务,然后重新流转,或者在流程监控中修改执行人

如果是有手动创建 ...

按楼上说法做了一下,没有产生任务数据
代码如下:
List<String> newlist = new ArrayList<String>();
                        List<String> tempnewlist = new ArrayList<String>();
                        newlist.add(fGroupLeaderID);
                        
                        String[] memberlist = fGroupMembersID.split(",");
                        
                        for(Integer memb = 0;memb<memberlist.length;memb++){
                                
                                if(newlist.indexOf(memberlist[memb])== -1)
                                        newlist.add(memberlist[memb]);
                        }


                        List<OrgUnit> ls = new ArrayList<OrgUnit>();
                                ls = OrgUtils.findOrgUnitsByID(newlist) ;
                                
                                System.out.println("==ls=="+ls);
                        
                                String sName = "立项申报论证_专家评审:测试";
                                String sProcess = "/project/prjApply/process/ProjectApply/projectApplyProcess";
                                String sActivity="prjReviewActivity";
                                String sCURL="/project/prjApply/process/ProjectApply/allotActivity.a";
                                String sEURL="/project/prjApply/process/ProjectApply/prjReviewActivity.a";
                                
                                 Task t = TaskHelper.createTask(sName,sProcess,sActivity,sCURL,sEURL,sData1,ls,null);                                 t.save();
                           
执行者输出有值:[(/wzNmxdibNWcta2LjjaV.ogn/OUOZTRLqeUgvXsX9ghW.dpt/rbsDSH2loFa03P0SkhH@OUOZTRLqeUgvXsX9ghW.psm,/北京市怀柔区教委/评审组/评审1)@OrgUnit, (/wzNmxdibNWcta2LjjaV.ogn/OUOZTRLqeUgvXsX9ghW.dpt/WvnObNsiMyRlUzERP78@OUOZTRLqeUgvXsX9ghW.psm,/北京市怀柔区教委/评审组/评审2)@OrgUnit, (/wzNmxdibNWcta2LjjaV.ogn/OUOZTRLqeUgvXsX9ghW.dpt/Jw4HfPOTP8twVnLlSam@OUOZTRLqeUgvXsX9ghW.psm,/北京市怀柔区教委/评审组/评审3)@OrgUnit]
回复 支持 反对

使用道具 举报

7

主题

36

帖子

75

积分

初级会员

Rank: 2

积分
75
QQ
 楼主| 发表于 2016-5-3 16:44:14 | 显示全部楼层
本帖最后由 ygkd 于 2016-5-3 17:11 编辑

找到原因,但是现在的问题是,代码产生的任务,流转的时候会报null的错误,而且产生的任务模式也不是独立模式,出现这种情况是我把原先的任务删除了,如果不删除就是正常的

        ... 27 more
Caused by: com.justep.exception.BusinessException: 编码: JUSTEP180208; 提示: 任务"null"不存在
        at com.justep.exception.BusinessException.create(Unknown Source)
        at com.justep.util.Utils.check(Unknown Source)
        at com.justep.system.process.ProcessInstance.loadFromTasks(Unknown Source)
        at com.justep.system.process.TaskDB.loadPI(Unknown Source)
        at com.justep.system.process.TaskDB.loadPIByTask(Unknown Source)
        at com.justep.system.process.ProcessEngine.init(Unknown Source)
        at com.justep.system.process.TaskEngine.<init>(Unknown Source)
        at com.justep.system.process.ProcessEngine.<init>(Unknown Source)
        at ProcessProcedure.beforeQuery(ProcessProcedure.java:387)
        at ProcessProcedure.beforeAdvanceProcessQuery(ProcessProcedure.java:291)
        ... 38 more



回复 支持 反对

使用道具 举报

7

主题

36

帖子

75

积分

初级会员

Rank: 2

积分
75
QQ
 楼主| 发表于 2016-5-3 20:31:10 | 显示全部楼层
jishuang 发表于 2016-5-3 13:44
修改执行人,可以在任务中心回收现在的任务,然后重新流转,或者在流程监控中修改执行人

如果是有手动创建 ...

我的需求可能没有说清楚,我不是简单的改变执行者,而是有可能会新增任务执行者,流程监控不能满足,而且流程监控修改执行者报错

现在的问题是,我手动插入的任务数据,有的时候可以,有的时候不可以,不可以的时候报null错误,就是一楼显示的错误信息。
通过跟正常数据对比,没有差别
用API创建出的任务,跟正常产生的任务差别很大,没有sFlowID等数据,而且设置
varMap.put("task-assign-mode", "singleness"); 独立执行模式,保存就会报错,一个ksql的错误
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35955
发表于 2016-5-4 11:35:10 | 显示全部楼层
多人处理的时候跟一个人处理是不一样的,如2个人处理SA_Task中生成的是3条数据,不是两条,是有一个父任务的数据的
在删任务的时候不能把父任务也删除了,可以手动到数据库中加一个子任务看看
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-11 07:40 , Processed in 0.081719 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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