我需要在我的工作流程中注入条件执行。例如:如果满足特定条件,则应执行特定工作流程。如果没有,则应执行不同的工作流程。
根据我的理解,Azkkaban没有直接的功能支持这一点。只有Oozie支持它。想知道Azkkaban用户如何处理这个问题?我相信每个人都必须以某种形式面对这一点。
谢谢, Kranthi
答案 0 :(得分:1)
Azkaban的路线图表明,此功能仅存在于未来的路线图中,因此无法轻松配置。只剩下选项是以编程方式处理它。
如果有人有更好的建议,请告诉我。
感谢, Kranthi
答案 1 :(得分:1)
FWIW,我们通过检查shell脚本中的条件在Azkaban项目中执行此操作。然后,如果满足条件,脚本将使用Azkaban API触发另一个工作流程。
#!/bin/bash
# check some condition
check=`…`;
if [ ! -z "$check" ]; then
# Authenticate ourselves to Azkaban, capturing the session id
auth=`curl -k -X POST --data "action=login&username=my_user&password=my_password" https://localhost:8443 | jq '.["session.id"]' | sed -e 's/\"//g'`;
# Run the workflow using the Auth session id, capturing the response
run=`curl -k --get --data "session.id=$auth" --data 'ajax=executeFlow' --data 'project=my_project' --data "flow=my_flow" https://localhost:8443/executor | jq '.message'`;
# If $run response does not contain "successfully" it failed
if [[ $run = *successfully* ]]; then
echo "'$3': RUN STARTED";
else
echo "'$3': RUN ERROR";
exit 1;
fi;
else …
您需要知道触发的工作流在其自身的执行中运行。
答案 2 :(得分:0)
您可以使用Azkaban中的触发器插件来执行此操作。以下是我提出的一个简单示例:https://gist.github.com/feliperazeek/faae2fed6aef780442a4。
您可以实现自己的Condition实现。