当座預金口座の貸方記入メッセージ・サブフローの作成

当座預金口座の貸方記入メッセージ・サブフローを作成するには、以下の手順に従ってください。

  1. 次のように新規メッセージ・フローを作成します。
    1. 既存の SCANodesSample メッセージ・ブローカー・プロジェクトを右クリックし、「新規」>「メッセージ・フロー」をクリックします。
    2. メッセージ・フロー名」を CurrentAccountCredit に設定し、「終了」をクリックします。
  2. メッセージ・フロー・エディターで、次の表にリストされているノードを追加して名前変更します。

    ノード・タイプ ノード名
    Input Input
    JavaCompute RetrieveCurrentAccountBalance
    JavaCompute CreditCurrentAccountBalance
    JavaCompute UpdateCurrentAccountBalance
    Output Output

  3. 以下の表に示すようにノードを接続します。

    ノード名 ターミナル 接続先のノード
    Input Out RetrieveCurrentAccountBalance
    RetrieveCurrentAccountBalance Out CreditCurrentAccountBalance
    CreditCurrentAccountBalance Out UpdateCurrentAccountBalance
    UpdateCurrentAccountBalance Out Output
  4. RetrieveCurrentAccountBalance ノードを以下のようにカスタマイズします。
    1. RetrieveCurrentAccountBalance ノードを右クリックし、「プロパティー」をクリックします。 
    2. 「基本」をクリックし、「参照」を選択して Java クラス・フィールドを検索します。
    3. テキスト・フィールドに CurrentAccount と入力します。
    4. CurrentAccount_RetrieveCurrentAccountBalance を選択し、「OK」をクリックします。
  5. CreditCurrentAccountBalance ノードを以下のようにカスタマイズします。
    1. CreditCurrentAccountBalance ノードをダブルクリックし、「プロジェクト名」が SCANodesSampleJava であることを確認し、「次へ」をクリックします。
    2. ビルド・パス上のソース・フォルダー」と「デフォルト出力フォルダー」に SCANodesSampleJava が入っていることを確認し、「次へ」をクリックします。
    3. 「パッケージ」sca.broker.sample.currentaccount に 設定し、「次へ」をクリックします。
    4. メッセージの作成用クラス」テンプレートを選択し、「終了」をクリックします。
    5. CreditCurrentAccountBalance ノードを右クリックし、「Java を開く」をクリックします。
    6. 次の入力ステートメントを追加します。
      import java.math.BigDecimal;
      		
    7. 次の Java コードを追加します。
      //Go to tree roots
      MbElement inRoot = inMessage.getRootElement();			
      MbElement outRoot = outMessage.getRootElement();			
      MbMessage locEnv = inAssembly.getLocalEnvironment();
      MbMessage newLocEnv = new MbMessage();
      //Get the operation name
      MbElement sca = locEnv.getRootElement().getFirstElementByPath("SCA");
      MbElement input = sca.getFirstElementByPath("Input");
      MbElement operation = input.getFirstElementByPath("Operation");
      String operationName = operation.getValue().toString();
      //Get the old balance
      MbElement variables = locEnv.getRootElement().getFirstElementByPath("Variables");
      float oldBalance = Float.parseFloat(variables.getFirstElementByPath("oldBalance").getValue().toString());
      //Get the amount to transfer			
      MbElement soap = inRoot.getFirstElementByPath("SOAP");
      MbElement body = soap.getFirstElementByPath("Body");
      MbElement action = body.getLastChild();
      MbElement request = action.getLastChild();
      MbElement amount = request.getFirstElementByPath("amount");
      float transferValue = Float.parseFloat(amount.getValue().toString());
      //Calculate the new balance total
      float newBalance = oldBalance + transferValue;
      MbElement newVariables = newLocEnv.getRootElement().createElementAsLastChild(MbElement.TYPE_NAME, "Variables", null);
      //Accept the transfer and set new balance in LE            newVariables.createElementAsLastChild(MbElement.TYPE_NAME_VALUE, "newBalance", new BigDecimal(newBalance).setScale(2, java.math.BigDecimal.ROUND_HALF_UP).toString());
      //Setup the message reply
      MbElement newXMLNSC = outRoot.createElementAsLastChild(MbXMLNSC.PARSER_NAME);
      MbElement newOperation = newXMLNSC.createElementAsLastChild(MbElement.TYPE_NAME, operationName + "Response", null);
      newOperation.setNamespace("http://CurrentAccount/");
      MbElement newResponse = newOperation.createElementAsLastChild(MbElement.TYPE_NAME, "CurrentAccountResponse", null);           newResponse.createElementAsLastChild(MbElement.TYPE_NAME_VALUE, "accept", "yes");				
      // Create the new assembly with the new property overrides
      MbMessageAssembly outAssembly = new MbMessageAssembly(
      					inAssembly,
      					newLocEnv,
      					inAssembly.getExceptionList(),
      					outMessage);
              
    8. 以下の Java コードは、ここで作成した MbMessageAssembly と競合するため、除去します。
      MbMessageAssembly outAssembly = new MbMessageAssembly(inAssembly, outMessage);
         		
  6. UpdateCurrentAccountBalance ノードを以下のようにカスタマイズします。
    1. UpdateCurrentAccountBalance ノードを右クリックし、「プロパティー」をクリックします。 
    2. 「基本」をクリックし、「参照」を選択して Java クラス・フィールドを検索します。
    3. テキスト・フィールドに CurrentAccount と入力します。
    4. CurrentAccount_UpdateCurrentAccountBalance を選択し、「OK」をクリックします。

これで、当座預金口座メッセージ・フローを作成することができるようになりました。当座預金口座メッセージ・フローの作成を参照してください。

「サンプルを拡張する」に戻る

サンプルのホームに戻る