Cordys BOP 4.3流程实例监控及流程恢复、流程环节配置Method问题的分析处理

来源:互联网 发布:ppt柱状图显示数据 编辑:程序博客网 时间:2024/04/29 14:46

OpenText Cordys BOP 4.3平台具有较强的流程监控能力,流程监控入口如下图所示,使用Process Instance Manager功能。

这里写图片描述

流程监控(Process Instance Manager)界面如下图所示,好恐怖!有这么多Aborted流程实例,什么原因?

这里写图片描述

先依赖流程实例监控界面能力开始分析原因。

流程实例监控处理功能有:关闭、刷新、继续执行、停止、显示流程图、显示流程日志、显示输入信息、显示/编辑输入信息、流程与业务系统关联标识、消息队列、显示错误信息、导出错误信息等。关键功能如下图所示:

这里写图片描述

恢复Aborted状态流程继续执行的过程如下:

显示错误信息如下图所示,主要问题是结束流程时出错,流程状态为Aborted。

这里写图片描述

Error while evaluating the expression com.unicom.bopm.workflow.BIZ_INFO_INSTANCE.updateStatus(string(child::instance:instanceProperties/child::instance:organization/child::text()),string(child::bpm:inputMsg/child::bpm:inputData/child::bpm:bizInstanceId/child::text()),"2"). Error is : XPathEvalution has failed:Exception is thrown by the custom method. com.cordys.cpc.bsf.busobject.exception.BsfNoContextException: No WS-AppServer context available for Thread[BPMEngine_LongLivedProcess_ThreadPool/WorkerThread-5,5,main].null

问题流程图如下:

这里写图片描述

根据错误分析原因,是由于在原流程环节所配置的外部方法里增加内容错误造成的。通过分析下文注释掉的代码,发现问题是出现在调用类成员方法,而此方法依赖外部Jar包被忽视了,而调用新开发的Webservice却没有问题(也经过测试),注释新变更代码修复后,流程结束可以执行了。

    public static boolean updateStatus(String orgDn, String bizInstanceId, String status) {        String[] paramNames = {"bizInstanceId", "status"};        Object[] paramValues = {bizInstanceId, status};        SOAPRequestObject sro = new SOAPRequestObject(orgDn, "http://unicom.com/workflow", "UpdateBizInstStatus", paramNames, paramValues);        sro.execute();//        if (status.equals("2")){//          String oid = null;//          String brn = null;//          String column = "STATUS";//          String json = "{'STATUS':'0'}";//          //获取文档定义信息//          BusObject BO = getBizInfoInstanceByBizinfoInstanceid(bizInstanceId);//          oid = BO.getStringProperty("MONGO_BO_ID");//          brn = BO.getStringProperty("BIZ_RVSN_NUMBER");////          String[] pNames = {"oid", "column", "json", "collection"};//          Object[] pValues = {oid, column, json, brn};//          //增加文档状态为COMPLETE//          SOAPRequestObject sromongodb = new SOAPRequestObject(orgDn, "http://unicom.com/workflow", "updateMongoPushInner", pNames, pValues);//          sromongodb.execute();//      }             return true;    }

注:修改代码的原因,不是需求就是BUG。本次是需求,查询文档内容关联流程的状态。

恢复Aborted流程正常执行,结束流程。恢复操作过程如下:

如下图所示,先选中某条记录,选择恢复执行流程(绿色右向)按钮。

这里写图片描述

这里写图片描述

这里写图片描述

成功恢复Aborted流程。

这里写图片描述

问题处理经验小结

1、经过测试验证的功能、配置方案,不要怀疑,要从相关方面入手:

  • 是否修改过代码;
  • 代码对Jar包的依赖;
  • Service Group对Jar的依赖(本例中,成员方法涉及到MongoDB,需要在Service Group环境变量配置上,补充MongDB的jar包);
  • 端口冲突,冲突肯定是有原因的;
  • 及早恢复系统,另辟蹊径来完成需求。

2、每日定时监控流程实例运行状态,及早发现问题做相应的处理。

参考:

《MongoDB 与关系型数据库(Oracle)关联统计实践方案 》 2016.03 肖永威

0 0
原创粉丝点击