unix 用于检查informatica工作流状态的Shell脚本

3phpmpom  于 2022-11-04  发布在  Unix
关注(0)|答案(5)|浏览(321)

我们有两个并行运行的Informatica作业。
其中一个工作流从11.40 CET开始,包含大约300个Informatica工作流,其中一个工作流是fact_sales。
另一个作业在3.40 CET运行,其中有大约115个工作流,其中许多工作流在数据一致性方面依赖于fact_sales。
问题是fact_sales应该在过程2中的某些工作流开始之前完成,以使数据准确,但通常不会发生这种情况。
我们尝试做的是以这样一种方式拆分流程2,即fact_sales相关工作流仅在fact_sales完成后运行。

你能提供我一种方法去写一个unix shell脚本,检查这个事实_sales的状态,如果它成功,然后启动其他相关的工作流,如果没有,那么它应该发送一个失败的邮件。谢谢

twh00eeo

twh00eeo1#

我不认为需要为此编写一个自定义shell脚本。大多数这是相当标准/常见的功能,可以使用命令任务和事件等待来实现。


**Process1 - runs at 11:50**

....workflow
...
 fact_sales workflow.**Add a command task at the end 
                    **that drops a flag, say, fact_sales_0430.done
...
....workflow..500

所有相关进程都将有一个等待此.done文件的事件等待。由于存在多个相关工作流,请确保它们都不会立即删除此文件。您可以在一天结束时或第二天开始加载时删除此.done文件。

workflow1
.....
dependantworkflow1 -- Event wait, waiting on fact_sales_0430.done (do not delete file).
dependantworkflow2 -- Event wait, waiting on fact_sales_0430.done (do not delete file).
someOtherWorkflow
dependantworkflow3 -- Event wait, waiting on fact_sales_0430.done (do not delete file).
....
......
omvjsjqw

omvjsjqw2#

第二种方法如下:
您必须运行某种类型的调度程序才能启动这些工作流。由于Informatica无法调度一组工作流中的多个工作流,因此它只能处理该依赖关系管理级别的worklet/会话。
在计划程序中,创建销售情况装入工作流与其它相关工作流之间的相关性。

drnojrws

drnojrws3#

我认为下面提到的脚本将为您工作。请修改参数。

WAIT_LOOP=1
    while [ ${WAIT_LOOP} -eq 1 ]
    do
        WF_STATUS=`pmcmd getworkflowdetails -sv $INFA_INTEGRATION_SERVICE -d $INFA_DOMAIN -uv INFA_USER_NAME -pv INFA_PASSWORD -usd Client -f $FOLDER_NAME $WORKFLOW_NAME(fact_sales) | grep "Workflow run status:" | cut -d'[' -f2 | cut -d']' -f1`
            echo ${WF_STATUS} | tee -a $LOG_FILE_NAME
                    case "${WF_STATUS}" in
                            Aborted)
                               WAIT_LOOP=0
                               ;;
                            Disabled)
                               WAIT_LOOP=0
                               ;;
                            Failed)
                               WAIT_LOOP=0
                               ;;
                            Scheduled)
                               WAIT_LOOP=0
                               ;;
                            Stopped)
                               WAIT_LOOP=0
                               ;;
                            Succeeded)
                               WAIT_LOOP=0
                               ;;
                            Suspended)
                               WAIT_LOOP=0
                               ;;
                            Terminated)
                               WAIT_LOOP=0
                               ;;
                            Unscheduled)
                               WAIT_LOOP=0
                               ;;
                    esac
                    if [ ${WAIT_LOOP} -eq 1 ]
                    then
                            sleep $WAIT_SECONDS
                    fi
    done
            if [ ${WF_STATUS} == "Succeeded" ]
            then
                    pmcmd startworkflow -sv $INFA_INTEGRATION_SERVICE -d $INFA_DOMAIN -uv INFA_USER_NAME -pv INFA_PASSWORD -usd Client -f $FOLDER_NAME -paramfile $PARAMETER_FILE $WORKFLOW_NAME(dependent_one) | tee $LOG_FILE_NAME
            else
                    (echo "Please find attached Logs for Run" ; uuencode $LOG_FILE_NAME $LOG_FILE_NAME )| mailx -s "Execution logs" $EMAIL_LIST
                    exit 1
            fi
9vw9lbht

9vw9lbht4#

您可以使用REP_SESS_LOG等表从资料档案库数据库中触发查询,并检查事实销售的状态是否成功。然后,只有您可以继续执行第二个作业。

相关问题