目录:
如何在工作流中配置因数据异常中断流程的稽核任务?
工作流如何进行分支判断?
如何设置工作流全局变量?
如何在工作流中快速找到某个节点?
为什么写好了脚本,在工作流节点中选择脚本的下拉框找不到自己的脚本?
工作流节点出错怎么查看日志?
如何配置并行工作流?
为什么工作流无法设置定时?
工作流定时调度怎么配置?
如何将两个节点同时指向下游的一个节点?
工作流中添加存储过程时,存储过程无法选择,在哪里配置?
如何复制一个工作流?
工作流MR任务提交后,后台yarn查看不到相应的任务,并且日志中有localhost:8080地址?
Q:如何在工作流中配置因数据异常中断流程的稽核任务?
A:
1.首先需要创建好相应的稽核任务,在工作流设计面板中拖入数据稽核节点,选好对应项目和之前配置好的稽核任务,填写任务返回值,保存节点信息。如下图:
图 数据稽核节点配置信息图
2.然后在后置节点中拖入IF节点,在 IF 节点后面的连线上进行条件配置(双击线段填写表达式),在该节点的出边,有且只能有一个为 true。每个出边拖入一个节点,如稽核数据正常(任务返回值= “success”),继续运行工作流其他节点, 如稽核数据异常(任务返回值=“exception”或者“error”),工作流结束。
图 IF条件上边界线段图
上边IF线段脚本:
if(info==void){
return false;
}else if("success".equals(info)){
return true;
}else{
return false;
}
图 IF条件下边界线段图
下边IF线段脚本:
if(info==void){
return false;
}else if("exception".equals(info)||"erro".equals(info)){
return true;
}else{
return false;
}
3.点击保存,则完成工作流的配置,之后运行工作流,IF节点会根据数据稽核返回值info来决定工作流的走向。如稽核数据正常,继续运行工作流其他节点, 如稽核数据异常,工作流结束。
Q:工作流如何进行分支判断?
A:首先在需要分支判断的地方连接IF节点,在 IF 节点后面的连线上进行条件配置(双击线段填写表达式),在该节点的出边,有且只能有一个为 true。
例如:有些业务场景需要执行月初初始化操作,可以参考下图进行配置。
图 月初初始化业务工作流图
shell脚本获取昨天的日期,并将TX_DATE参数输出传递给下游节点,配置如下图:
图 shell脚本配置图
IF节点的上边界线段填写表达式:
String date1=""+TX_DATE;
String date2=date1.substring(8,10);
if(date2.equals("01"))return false;
return true;
IF节点的下边界线段填写表达式:
String date1=""+TX_DATE;
String date2=date1.substring(8,10);
if(date2.equals("01"))return true;
return false;
注意,线段中的表达式语法参照Java语法,前面的shell脚本传递了当天的日期格式为20170101。在配置工作流使用线段连线时可能会无法连接下游节点,可以先使用连线按钮先连接随意一个下游节点,在使用选择按钮选中连线,强制指向指定下游节点。
这样就配置完成了一个月初初始化的工作流。
Q:如何设置工作流全局变量?
A:点击编辑工作流,并在工作流画布的上方菜单栏中点击设置按钮,在弹出的对话框中全局变量设置中填写变量名称和变量值(变量值必须为常量),作为全局变量参数传递。
图 全局变量设置图
Q:如何在工作流中快速找到某个节点?
A:工作流编辑与监控页面,都支持查找功能。在工作流的画布上方菜单栏中点击查找按钮,输入节点名称或节点ID,会高亮显示节点以及与之关联的线段。
图 查找节点图
Q:为什么写好了脚本,在工作流节点中选择脚本的下拉框找不到自己的脚本?
A:1.先检查是否选择了对应的项目和脚本类型。
2.检查脚本是否名称正确;
3.检查脚本是否发布,大部分问题是此情况。工作流的脚本需要先在脚本管理中进行发布,只有发布完的脚本才能够在工作流中进行调度。
Q:工作流节点出错怎么查看日志?
A:点击工作流监控找到出错的工作流,点击该工作流名称链接即可查看该工作流本次运行的具体状态。进入工作流画布双击出错的节点,在对话框中选择查看执行日志,就可以查看该节点日志、脚本过程日志和脚本结果日志。根据脚本日志信息去定位问题即可。
图 工作流日志图
Q:如何配置并行工作流?
A:在工作流中从一个父节点下游可以有多个子节点分支,在多分支的情况下工作流的调度是并发进行的。在某些业务场景各个节点关系并不紧密时可采用多分支进行调度。值得注意的是,并发度的多少由集群的性能来决定,所以要根据集群的性能来规划子节点的分支数量,保证调度的正常运行。
图 配置并行工作流图
Q:为什么工作流无法设置定时?
A:未发布的工作流定时是灰色的,此时无法进行定时配置,若需要让工作流定时调度首先要发布工作流。在工作流维护中选中需要发布的工作流,在菜单栏点击发布即可,之后就能配置定时工作流了。
Q:工作流定时调度怎么配置?
A:工作流维护界面在需要配置的工作流下点击定时,弹出添加定时计划对话框。定时分为定时器定时和自定义定时。
定时器定时:
1.选择起止时间,即工作流调度的开始日期和结束日期。
2.选择偏移量,即调度计划中的间隔值。
3.选择调度计划,可以按小时、天、周、月,进行调度。
例如下图,选择按天调度,如果此时偏移量为2,此时调度周期为每隔两天的12:00时会调度此工作流。
图 定时器设置图
自定义定时:
自定义定时语法参照cron表达式。
点击执行即可看到输入脚本的定时间隔时间。
图 自定义脚本配置图
Q:如何将两个节点同时指向下游的一个节点?
A:两个节点同时指向下游节点需要使用汇聚节点。在工具栏中将汇聚节点拖入画布,将上游的两个节点(或多个)同时指向汇聚节点,在将汇聚节点指向下游一个或多个节点即可实现。使用汇聚节点后需要上游的两个节点同时调度完成后才能执行汇聚节点之后的下游节点。
图 汇聚节点使用图
Q:工作流中添加存储过程时,存储过程无法选择,在哪里配置?
A:存储过程需要事先在相应的数据库中创建好,系统会自动读取数据库中的存储过程以及参数,此时就可以选择已创建的存储过程了。
图 存储过程配置图
Q:如何复制一个工作流?
A:可以通过另存为的方式,将工作流复制保存。在工作流画布中上方菜单栏点击另存为按钮,填写新的工作流流程代码与名称即可。
Q:工作流MR任务提交后,后台yarn查看不到相应的任务,并且日志中有localhost:8080地址?
A:检查其他类型脚本如果能正常运行则为yarn的问题,此时应检查集群环境,查看runner对应的机器中是否有yarn client端,一般情况都是缺少yarn client端引起的。