在用户门户统一待办界面上,如果打开本系统待办提示如下信息“当前待办已处理请勿重复操作”,则出现不能进一步处理业务的问题。
与外部接口出现问题,在所难免,已经识别到原因如下:
- 由于本系统是SOA架构,内部服务间、与门户接口服务间都是通过Web Service接口,都是异步调用服务,存在时间差情况,例如:在未使用门户界面操作待办时,直接在本系统把待办处理了,而此时的待办任务有可能未被推送到门户上。
- 本系统的BUG,例如刚上线时,退回任务未推送到门户。
注:查看系统日志时,如果调用推送待办服务的推送者是root,则是推送不成功而延迟推送的记录。
解决方案
使用本系统已有的服务“UpdateTaskStatus”来完成这项任务。原理是根据待办任务实例ID,按门户接口规范手工半自动推送更新状态服务。
使用Cordys BOP 4开发环境中“Test Web Gatway”工具,如下图所示:
首先,通过稽核视图定位问题待办任务数据。
select * from vw_pengding_task t where t.pendingtitle = '测试流程管理流程勿动' and t.pendingUserID = 'wangpeng11'
注:查询条件是pendingtitle(待办任务标题) 和pendingUserID (待办处理人)
再根据结果集中的时间来定位具体数据,获取任务的PendingCode和PendingURL。
以待办用户身份登录系统,使用PendingURL来验证此数据是否是要处理的目标数据。
// 任务实例ID与pnd_task表中的task_instance_id一致
PendingCode='7784542a-f6a7-11e5-f912-79158fc01f90'
http://10.64.50.143/home/system/unicom/home/sso_ucloud.htm?userId=wangpeng11&bizInstId=7f178cd5-67f1-11e5-f912-3d12da885709&taskId=7784542a-f6a7-11e5-f912-79158fc01f90&isTask=1&isComplete=1&isProcess=1&orgId=HLJ
如果现象一致,则定位到此条数据。
接着,更新待办任务处理时间为当前时间,需要注意Cordys的时间是标准时间,与中国的北京时间差8小时,需要在数据库操作时特殊处理。
update pnd_task t set t.finish_datetime = sysdate - interval '8' hour where t.task_instance_id = '7784542a-f6a7-11e5-f912-79158fc01f90';
commit;
核对修改数据如下:
记录下完成时间是:2016/2/27 2:50:59,折算北京时间为2016/2/27 10:50:59.
最后,使用“Test Web Gatway”工具,推送更新待办状态到门户。
<SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP:Body>
<UpdateTaskStatus xmlns="http://unicom.com/workflow" preserveSpace="no" qAccess="0" qValues="">
<taskXml>
<PendingCode>7784542a-f6a7-11e5-f912-79158fc01f90</PendingCode>" +
<PendingTitle>测试流程管理流程勿动</PendingTitle>" +
<PendingDate>20160201112831</PendingDate>" +
<LastUpdateDate>20160227105059</LastUpdateDate>" +
<PendingURL></PendingURL>" +
<PendingStatus>1</PendingStatus>" +
<PendingLevel>1</PendingLevel>" +
<PendingSourceUserID>wangpeng11</PendingSourceUserID>" +
<PendingSource>此处隐去用户名</PendingSource>" +
<PendingNote>hl006</PendingNote>" +
</taskXml>
</UpdateTaskStatus>
</SOAP:Body>
</SOAP:Envelope>
工具操作见参考文档。
请用户查看其门户界面,祝好运,问题待办任务消失。
参考:
《WebService另类用法之一,运维 》 肖永威 2016.1