使用案例:監督您的工作流程 supervising-workflows

此使用案例詳細說明如何建立工作流程,以讓您監視一組「已暫停」、「已停止」或「發生錯誤」的工作流程的狀態。

其目的是:

  • 使用工作流程來監視業務工作流程群組。
  • 透過「傳遞」活動傳送訊息給主管。

若要監視一組工作流程的狀態,您必須遵循下列步驟:

  1. 建立監控工作流程。
  2. 撰寫JavaScript以判斷工作流程是否已暫停、停止或發生錯誤。
  3. 建立​ Test ​活動。
  4. 準備傳遞範本。
NOTE
除了工作流程之外,行銷活動​ 工作流程熱度圖 ​可讓您詳細分析目前執行的工作流程。 如需詳細資訊,請參閱專屬區段
如需如何​ 監視工作流程執行 ​的詳細資訊,請參閱本節

步驟1:建立監控工作流程 step-1--creating-the-monitoring-workflow

我們要監視的工作流程資料夾是儲存在​ 管理>生產>技術工作流程 ​節點中的​ "CustomWorkflows" ​資料夾。 此資料夾包含一組業務工作流程。

監視工作流程 ​儲存在Technical Workflows資料夾的根目錄中。 使用的標籤是​ 「監視」

下列結構描述顯示活動的順序:

此工作流程由以下部分組成:

  • 「開始」 ​活動。
  • 「JavaScript程式碼」 ​活動負責分析業務工作流程資料夾。
  • 「測試」 ​活動,將傳遞傳送給主管或重新啟動工作流程。
  • 負責訊息佈局的​ 「傳遞」 ​活動。
  • 「等待」 ​活動可控制工作流程反複專案之間的前置時間。

步驟2:撰寫JavaScript step-2--writing-the-javascript

JavaScript程式碼的第一部分與​ 查詢(queryDef) ​一致,可讓您識別具有「暫停」(@state == 13)、「錯誤」(@failed == 1)或「已停止」(@state == 20)狀態的工作流程。

要監視的工作流程資料夾的​ 內部名稱 ​是以下列條件所指定:

<condition boolOperator="AND" expr="[folder/@name] = 'Folder20'" internalId="1"/>
var strError = "";
var strPaused = "";
var strStop = "";

var queryWkfError = xtk.queryDef.create(
  <queryDef schema="xtk:workflow" operation="select">
    <select>
      <node expr="@internalName"/>
      <node expr="@state"/>
      <node expr="@label"/>
      <node expr="@failed"/>
      <node expr="@state"/>
    </select>
    <where id="12837805386">
      <condition boolOperator="AND" expr="[folder/@name] = 'Folder20'" internalId="1"/>
        <condition boolOperator="AND" internalId="2">
          <condition boolOperator="OR" expr="@state = 20" internalId="3"/>
          <condition expr="@state = 13" internalId="4"/>
        </condition>
    </where>
  </queryDef>
);
var ndWkfError = queryWkfError.ExecuteQuery();

JavaScript程式碼的第二部分可讓您​ 根據查詢期間復原的狀態,為每個工作流程 ​顯示訊息。

NOTE
建立的字串必須載入工作流程的事件變數中。
for each ( var wkf in ndWkfError.workflow )
{
  if ( wkf.@state == 13 )  // Status 13 = paused
  {
    if ( wkf.@failed == 1 )
      strError += "<li>Workflow '" + wkf.@internalName + "' with the label '" + wkf.@label + "'</li>";
    else
      strPaused += "<li>Workflow '" + wkf.@internalName + "' with the label '" + wkf.@label + "'</li>";
  }

  if ( wkf.@state == 20 )  // Status 20 = stop
    strStop += "<li>Workflow '" + wkf.@internalName + "' with the label '" + wkf.@label + "'</li>";
}

vars.strWorkflowError = strError;
vars.strWorkflowPaused = strPaused;
vars.strWorkflowStop = strStop;

步驟3:建立「測試」活動 step-3--creating-the--test--activity

「測試」活動可讓您根據「等待」活動,決定是否需要傳送傳遞或監控工作流程是否需要執行另一個週期。

如果三個事件變數「vars.strWorkflowError」、「vars.strWorkflowPaused」或「vars.strWorkflowStop」中至少有一個不是void,則會傳送傳遞給主管​

「等待」活動可設定為定期重新啟動監視工作流程。 在此使用案例中,等待時間設為1小時

步驟4:準備傳送 step-4--preparing-the-delivery

「傳遞」活動以儲存在​ 資源>範本>傳遞範本 ​節點中的​ 傳遞範本 ​為基礎。

此範本必須包括:

  • 主管的電子郵件地址

  • HTML內容 ​以插入個人化文字。

    宣告的三個變數(WF_Stop、WF_Paused、WF_Error)符合三個工作流程事件變數。

    必須在傳遞範本屬性的​ 變數 ​索引標籤中宣告這些變數。

    若要復原​ 工作流程事件變數 ​的內容,您必須宣告傳遞的特定變數,這些變數將使用JavaScript程式碼傳回的值進行初始化。

    傳遞範本的內容如下:

建立並核准範本後,您需要將​ 傳遞 ​活動設定為:

  • 將「傳遞」活動連結至先前建立的傳遞範本。
  • 將工作流程的事件變數連結至傳送範本的特定事件變數。

連按兩下​ 傳遞 ​活動並選取下列選項:

  • 傳遞:選取​ 新增(從範本 ​建立),然後選取先前建立的傳遞範本。

  • 針對​ 收件者和內容 ​欄位,選取傳遞​ 中指定的

  • 要執行的動作:選取​ 準備並啟動

  • 取消核取​ 處理錯誤 ​選項。

  • 前往​ 傳遞 ​活動的​ 指令碼 ​標籤,透過個人化欄位功能表新增三個​ 字元字串 ​型別變數。

    宣告的三個變數為:

    code language-none
    delivery.variables._var[0].stringValue = vars.strWorkflowError;
    delivery.variables._var[1].stringValue = vars.strWorkflowPaused;
    delivery.variables._var[2].stringValue = vars.strWorkflowStop;
    

啟動此監視工作流程後,它會傳送以下摘要給收件者:

recommendation-more-help
601d79c3-e613-4db3-889a-ae959cd9e3e1