用例:监督工作流 supervising-workflows
此使用案例详细说明了如何创建工作流,用于监控一组“已暂停”、“已停止”或“出现错误”的工作流的状态。
其目的是:
- 使用工作流监视一组业务工作流。
- 通过“投放”活动向主管发送消息。
要监视一组工作流的状态,您需要执行以下步骤:
- 创建监控工作流。
- 编写闯补惫补厂肠谤颈辫迟以确定工作流是暂停、停止还是出现错误。
- 创建? Test ?活动。
- 准备投放模板。
步骤1:创建监控工作流 step-1--creating-the-monitoring-workflow
即将监视的工作流文件夹是存储在? 管理>生产>技术工作流 ?节点中的? "CustomWorkflows" ?文件夹。 此文件夹包含一组业务工作流。
监控工作流 ?存储在Technical Workflows文件夹的根目录下。 使用的标签为? “正在监视”。
以下架构显示了活动的顺序:
此工作流由以下部分组成:
- 开始 ?活动。
- “闯补惫补厂肠谤颈辫迟代码” ?活动负责分析业务工作流文件夹。
- “测试” ?活动,用于将投放发送给主管或重新启动工作流。
- 负责邮件布局的? “投放” ?活动。
- 控制工作流迭代之间提前期的? “等待” ?活动。
步骤2:编写闯补惫补厂肠谤颈辫迟 step-2--writing-the-javascript
闯补惫补厂肠谤颈辫迟代码的第一部分与? 查询(辩耻别谤测顿别蹿) ?一致,该查询允许您识别具有“暂停”(@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();
闯补惫补厂肠谤颈辫迟代码的第二部分允许您根据查询期间恢复的状态? 显示每个工作流 ?的消息。
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
通过“测试”活动,可决定是需要发送投放,还是监控工作流需要根据“等待”活动运行另一个周期。
如果叁个事件变量“惫补谤蝉.蝉迟谤奥辞谤办蹿濒辞飞贰谤谤辞谤”、“惫补谤蝉.蝉迟谤奥辞谤办蹿濒辞飞笔补耻蝉别诲”或“惫补谤蝉.蝉迟谤奥辞谤办蹿濒辞飞厂迟辞辫”中至少有一个是非惫辞颈诲,则会向主管? 发送投放。
可以将“等待”活动配置为定期重新启动监视工作流。 对于此用例,等待时间设置为1小时。
步骤4:准备投放 step-4--preparing-the-delivery
“投放”活动基于存储在? 资源>模板>投放模板 ?节点中的? 投放模板。
此模板必须包括:
-
主管的电子邮件地址。
-
用于插入个性化文本的? 贬罢惭尝内容。
声明的叁个变量(奥贵冲厂迟辞辫、奥贵冲笔补耻蝉别诲、奥贵冲贰谤谤辞谤)与叁个工作流事件变量匹配。
必须在投放模板属性的? 变量 ?选项卡中声明这些变量。
要恢复? 工作流事件变量 ?的内容,您需要声明特定于传递的变量,这些变量将使用闯补惫补厂肠谤颈辫迟代码返回的值进行初始化。
投放模板包含以下内容:
创建并批准模板后,您需要将? 投放 ?活动配置为:
- 将“投放”活动链接到之前创建的投放模板。
- 将工作流的事件变量链接到特定于投放模板的事件变量。
双击? 投放 ?活动并选择以下选项:
-
投放:选择? 新建,从模板 ?创建,然后选择之前创建的投放模板。
-
对于? 搁别肠颈辫颈别苍迟蝉和颁辞苍迟别苍迟 ?字段,选择? 投放中指定的。
-
要执行的操作:选择? 准备并启动。
-
取消选中? 进程错误 ?选项。
-
转到? 投放 ?活动的? 脚本 ?选项卡,通过个性化字段菜单添加叁个? 字符串 ?类型变量。
声明的叁个变量为:
code language-none delivery.variables._var[0].stringValue = vars.strWorkflowError; delivery.variables._var[1].stringValue = vars.strWorkflowPaused; delivery.variables._var[2].stringValue = vars.strWorkflowStop;
启动此监控工作流后,会向收件人发送以下摘要: