1. 程式人生 > >接入門戶統一待辦運維經驗小結——更新待辦為已辦

接入門戶統一待辦運維經驗小結——更新待辦為已辦

在使用者門戶統一待辦介面上,如果開啟本系統待辦提示如下資訊“當前待辦已處理請勿重複操作”,則出現不能進一步處理業務的問題。
這裡寫圖片描述

與外部接口出現問題,在所難免,已經識別到原因如下:

  • 由於本系統是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>

工具操作見參考文件。

請使用者檢視其門戶介面,祝好運,問題待辦任務消失。

參考: