用例:监督工作流

此用例详细介绍了如何创建工作流,它允许您监视“已暂停”、“已停止”或“有错误”的一组工作流的状态。

其目的是:

  • 使用工作流来监视一组业务工作流。
  • 通过“投放”活动向主管发送消息。

要监视一组工作流的状态,您需要执行以下步骤:

  1. 创建监视工作流。
  2. 编写JavaScript以确定工作流是暂停、停止还是出错。
  3. 创建​Test​活动。
  4. 准备投放模板。
注意

除了工作流之外,活动​工作流热图​还允许您详细分析当前运行的工作流。 有关详细信息,请参阅专用部分

有关如何​监视工作流执行​的详细信息,请参阅本节

第1步:创建监视工作流

我们要监视的工作流文件夹是存储在​管理>生产>技术工作流​节点中的​"CustomWorkflows"​文件夹。 此文件夹包含一组业务工作流。

监视工作流​存储在技术工作流文件夹的根目录下。 使用的标签为​"Monitoring"

以下模式显示了活动的顺序:

此工作流由以下部分组成:

  • a "开始"​活动。
  • a "JavaScript code"​负责分析业务工作流文件夹的活动。
  • a "Test"​活动向主管发送投放或重新开始工作流。
  • a "投放"​负责消息布局的活动。
  • a "wait"​活动,用于控制工作流迭代之间的提前期。

第2步:编写JavaScript

JavaScript代码的第一部分与​查询(queryDef)​一致,它允许您用“pause”(@state == 13)、“error”(@failed == 1)或“stopped”(@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代码的第二部分允许您根据在查询期间恢复的状态,为每个工作流​显示一条消息。

注意

创建的字符串必须加载到工作流的事件变量中。

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步:创建“Test”活动

“测试”活动允许您根据“等待”活动确定是需要发送投放还是需要运行另一个周期。

如果三个投放变量“vars.strWorkflowError”、“vars.strWorkflowPaused”或“vars.strWorkflowStop”中的至少一个为非void,则会向主管​发送事件。

可以配置“等待”活动,以定期间隔重新开始监视工作流。 对于此用例, 等待时间设置为1小时

第4步:准备投放

“投放”活动基于存储在​资源>模板>投放模板​节点中的​投放模板

此模板必须包括:

  • 主管的电子邮件地址

  • 用于 插入个性化文本的HTML内容。

    声明的三个变量(WF_Stop、WF_Paused、WF_Error)与三个工作流事件变量匹配。

    这些变量必须在投放模板属性的​变量​选项卡中声明。

    要恢复​工作流事件变量​的内容,您需要声明特定于将使用JavaScript代码返回的值初始化的投放的变量。

    该投放模板具有以下内容:

创建并批准模板后,您需要将​投放​活动配置为:

  • 将“投放”活动链接到之前创建的投放模板。
  • 将工作流的事件变量链接到特定于投放模板的变量。

多次 — 单击​投放​活动并选择以下选项:

  • 投放:选择“新建”(从模板​创建),然后选择之前创建的投放模板。

  • 对于​收件人和Content​字段,选择​在投放​中指定。

  • 要执行的操作:选择​准备并开始

  • 取消选中​处理错误​选项。

  • 转到​投放​活动的​脚本​选项卡,通过个性化字段菜单添加三个​字符串​类型变量。

    声明的三个变量是:

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

启动此监视工作流后,它会向收件人发送以下摘要:

On this page

Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now