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

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 肖永威

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

肖永威

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值