エラー処理サブフローの作成

エラー処理サブフローを作成するには、以下の手順に従ってください。 詳細な指示については、各ステップの終わりにあるリンクをクリックしてください。

  1. Message Brokers Toolkit で、ブローカー・アプリケーション開発パースペクティブに切り替えます。
  2. Error Handler Messageflows という名前の新しいメッセージ・フロー・プロジェクトを作成します。
    その方法については、 メッセージ・フロー・プロジェクトの作成を参照してください。
  3. Error_Handler という名前の新規メッセージ・フローを作成します。
    その方法については、 メッセージ・フローの作成を参照してください。
  4. メッセージ・フロー・エディターで、次の表にリストされているノードを追加して名前変更します。
    その方法については、 ノードの追加を参照してください。 下の表の Input および Output は、MQInput と MQOutput とは異なることに注意してください。 すべてのサブフローは Input ノードで開始し、Output ノードで終了します。
    ノード・タイプ ノード名
    Input Start Subflow
    Filter Check Backout Count
    TryCatch TryCatch
    Database Update Error Database
    Throw Throw To Complete Rollback
    Output Back To Main Flow
  5. 次の表に示されているように、ノードを接続します。
    その方法については、 ノードの接続を参照してください。
    ノードが正しく接続されたかどうかを確認するには、Error Handler サンプルについての図を 参照してください。
    ノード名 ターミナル 接続先のノード
    Input Out Check Backout Count
    Check Backout Count True TryCatch
    TryCatch Try Back To Main Flow
    Catch Update Error Database
    Update Error Database Out Throw To Complete Rollback
  6. 次の表に示されているように、ノードのプロパティーを構成します。この表に代替値が示されていなければ、すべてのプロパティーに関してデフォルト値を受け入れます。
    その方法については、 ノードの構成を参照してください。
    ノード名 ページ プロパティー
    Update Error Database 基本 データ・ソース ERRORDB
    基本 トランザクション Commit
    Throw To Complete Rollback 基本 メッセージ番号 3002
    基本 メッセージ・テキスト Error_Handler メッセージ・フローから。詳細は、ERRORDB を参照。
  7. 以下の ESQL コード・モジュールを Error_Handler.esql ファイルに追加します。ESQL コードは、コピーして ESQL ファイルに直接貼り付けることもできます。
    方法については、 ESQL の開発を参照してください。
    CREATE FILTER MODULE Error_Handler_Filter
       CREATE FUNCTION Main() RETURNS BOOLEAN
       BEGIN
          IF Root.MQMD.BackoutCount='0' THEN
          RETURN TRUE;
          ELSE
             RETURN FALSE;
          END IF;
       END;
    END MODULE;
    
    CREATE DATABASE MODULE Error_Handler_Database
    CREATE FUNCTION Main() RETURNS BOOLEAN
    BEGIN
    
    DECLARE Error INTEGER;
    DECLARE Text CHARACTER;
    DECLARE Place INTEGER;
    DECLARE LastPlace INTEGER;
    DECLARE NodeName CHARACTER;
    DECLARE Label CHARACTER;
    DECLARE FlowName CHARACTER;
    
    -- Set the start point
    DECLARE start REFERENCE TO ExceptionList.*[1];
    WHILE start.Number IS NOT NULL DO 
       SET Error = start.Number;
          IF Error = 3001 THEN
             SET Text = SUBSTRING(start.Insert.Text FROM 1 FOR 250);
             ELSE
             SET Text = SUBSTRING(start.Text FROM 1 FOR 250);
          END IF;
       SET Label = start.Label;
       SET Place = POSITION('.' IN Label); 
       SET LastPlace = Place;
          WHILE Place <>0 DO
             SET Label=SUBSTRING(Label FROM (Place+1));
             SET Place=POSITION('.' IN Label); 
             SET LastPlace = LastPlace + Place; 
          END WHILE;
       SET Label=start.Label;
       SET FlowName=SUBSTRING(Label FROM 1 FOR (LastPlace-1));
       SET NodeName=SUBSTRING(Label FROM (LastPlace+1));
    -- Move start to the last child of the field to which it currently points          
       MOVE start LASTCHILD;
    END WHILE;
    INSERT INTO Database.ERRORS(MSGID,TEXT,ERRORNUM, ERRORDATE,MSGDATA,FLOWNAME,NODENAME)
    VALUES(CAST(Root.MQMD.MsgId AS BLOB),Text,Error,CURRENT_TIMESTAMP,BITSTREAM(Root),
    FlowName,NodeName);
          RETURN TRUE;
       END;
    END MODULE;

これで、このサブフローを組み込むメイン・メッセージ・フローを作成できるようになりました。 メイン・メッセージ・フローの作成を参照してください。

メインページのアイコン   『Error Handler サンプルの作成』に戻る