0

並行して実行される 2 つの Informatica ジョブがあります。

1 つは 11.40 CET から始まり、約 300 の Informatica ワークフローがあり、そのうちの 1 つは fact_sales です。

もう 1 つのジョブは 3.40 CET で実行され、約 115 のワークフローが含まれており、その多くはデータの一貫性に関して fact_sales に依存しています。

問題は、データを正確にするために、プロセス 2 の特定のワークフローが開始される前に、fact_sales が終了する必要があることですが、これは一般的には起こりません。

私たちがやろうとしているのは、fact_sales が終了した後にのみ、fact_sales に依存するワークフローが実行されるように、プロセス 2 を分割することです。

この fact_sales のステータスをチェックし、成功した場合は他の依存ワークフローを開始し、そうでない場合は失敗メールを送信する UNIX シェル スクリプトを作成する方法を教えてください。ありがとう

4

5 に答える 5

0

2番目のアプローチは次のようになります-

これらのワークフローを起動するには、なんらかのスケジューラを実行する必要があります。Informaticaはセット内の複数のワークフローをスケジュールできないため、そのレベルの依存関係管理でのみワークレット/セッションを処理できます。

スケジューラーから、sales factloadwfと他の依存ワークフロー全体に依存関係を作成します。

于 2012-05-04T07:17:27.150 に答える
0

以下のスクリプトがうまくいくと思います。パラメータを更新してください。

    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
于 2015-04-10T10:18:33.227 に答える
0

主な課題があることがわかります-多数のinfaワークフロー間の依存関係を維持してください。2 つのオプションがあります。

  1. 自動スケジューリング ツールを使用して依存関係を設定し、それらを 1 つずつ適切に実行できます。無料のツールはたくさんありますが、快適さ/時間/コストなどに応じて選択する必要があります。ここにリンクしてください。
  2. 次に、カスタム ジョブ スケジューラを作成できます。UNIXスクリプト、oracleテーブルを使用して同様のスケジューラを作成しました。そのための手順は次のとおりです-
    • すべてのワークフローをグループに分類します。独立したフローはグループ 1 に移動し、グループ 1 の従属フローはグループ 2 に移動する必要があります。
    • 上記のグループから 1 つずつ選択して開始するようにプロセスを設定します。キックオフ キューが空の場合は、待機する必要があります。これをループ 2 と呼びます。
    • 開始されたフローのステータスをチェックするポーリング ループを保持します。失敗、中止などの場合、プロセスが失敗し、ユーザーにメールが送信され、すべての「キュー内/依存」フローが失敗としてマークされます。実行中の場合は、ポーリングを続けます。成功した場合は、ループ 2 に制御を渡します。 - キックオフ キューが空の場合、そのグループのすべてのワークフローが成功した場合にのみ、次のグループに進みます。

これは少しトリッキーなプロセスですが、一度設定すると効果があります。ワークフローはいくつでも追加でき、メンテナンスは infa スケジューラーや infa ワークレットなどに比べてはるかにスムーズになります。

于 2016-08-23T07:03:05.787 に答える
0

このためにカスタム シェル スクリプトを作成する必要はないと思います。これらのほとんどは、コマンド タスクとイベント待機を使用して実装できる標準/一般的な機能です。

**Process1 - 11:50 に実行**
....ワークフロー
...
 fact_sales ワークフロー。**最後にコマンドタスクを追加
                      **フラグをドロップします。たとえば、fact_sales_0430.done です。
...
....ワークフロー..500

そして、すべての依存プロセスには、この .done ファイルを待機するイベント待機があります。複数の依存ワークフローがあるため、いずれのワークフローもすぐにファイルを削除しないようにしてください。この .done ファイルは、1 日の終わりまたは翌日のロード開始時にドロップできます。

ワークフロー1
.....
dependantworkflow1 -- イベント待機、fact_sales_0430.done を待機中 (ファイルを削除しないでください)。
dependantworkflow2 -- イベント待機、fact_sales_0430.done を待機中 (ファイルを削除しないでください)。
someOtherワークフロー
dependantworkflow3 -- イベント待機、fact_sales_0430.done を待機中 (ファイルを削除しないでください)。
....
……
于 2012-04-30T20:54:59.237 に答える