4.19. HTTP、Salesforce、File バインディングの利用

4.19.1. 概要

HTTPクライアントからのXMLメッセージをSalesforce.comに転送し、
応答をHTTPクライアントへ返信します。
Salelsforce.comからのXMLメッセージを指定したディレクトリ下に出力する。


図4.19.1-1



  1. Salesforce BC(Outbound)はSalesforce.comへログインメッセージを送信します。
  2. Salesforce BC(Outbound)はSalesforce.comから取得したSessionIdとServerUrlを保存します。
  3. HTTP BC(Inbound)はHTTPクライアントからメッセージを受信します。
  4. HTTP BCはSalesforce BC(Outbound)に取得したメッセージを転送します。
  5. Salesforce BC(Outbound)はメッセージをSalesforce.comに転送します。
  6. Salesforce.comは処理を行い、Saleforce BC(Outbound)に返信します。
  7. Saleforce BC(Outbound)はHTTP BCに返信します。
  8. HTTP BCはHTTPクライアントに返信します。
  9. Salesforce.comは処理を行い、設定した「ワークフロールール」を起動させる条件をトリガーして、アウトバウンドメッセージをします。
  10. Salesforce BC(Inbound)はSalesforce.comの「アウトバウンドメッセージ」からメッセージを受信します。
  11. Salesforce BC(Inbound)はFILE BC(Outbound)に取得したメッセージを転送します。
  12. FILE BCはメッセージを指定したディレクトリ下に出力します。

4.19.2. 構成

ファイル名 説明
19_Salesforce.zip HTTPクライアントからメッセージを受け取り処理するサービスアセンブリです。
19_TestData.xml HTTPクライアントが送信するテストデータです。
proj_19_Salesforce.zip サービスアセンブリのプロジェクトファイルです。
run.bat WindowsでHTTPクライアントを実行するバッチファイルです。
run.sh UnixでHTTPクライアントを実行するシェルスクリプトです。
HttpClient.java HTTPクライアントのソースファイルです。

4.19.3. 実行手順

実行環境の構築を行い、サンプルを実行します。実行後には環境のクリアを行います。

環境構築
実行環境の構築を行います。
  1. インターネットと通信できるネットワーク環境を確認します。
    インターネットへアクセスとインターネットからWebOTXのWebサーバへアクセスできる両方を確認必要です。

    インターネットしかへアクセスできない場合
    「環境構築」のステップ3−4と「実行」のステップ4の内容を無視してください。つまり、4.19.1. 概要のステップ9−12を実行しない。

  2. VeriSignからルート証明書を入手して、WebOTXに導入します。

    ルート証明書入手
    VeriSignのWebサイトからダウンロードします。

    domain1のconfigに下記のようなCommandを行います。
    C:\WebOTX\domains\domain1\config>keytool -importcert -alias <alias name> -file <入手した証明書(*.cer)> -keystore cacerts.jks -storepass changeit
    domain1を再起動します。
    C:\WebOTX\domains\domain1\config>otxadmin stop-domain domain1
    C:\WebOTX\domains\domain1\config>otxadmin start-domain domain1
  3. Salesforce.comのアウトバウンドメッセージを設定します。
    Salesforce.comへログインして、[あなたの氏名] | [設定] | [作成] | [ワークフローと承認申請] | [アウトバウンドメッセージ] をクリックします。
    アウトバウンドメッセージを新規に定義するには、[新規アウトバウンドメッセージ] をクリックします。

    ステップ 1: オブジェクトの選択は [取引先責任者] を選択します。


    図4.19.3-1


    ステップ 2: アウトバウンドメッセージの設定は、[エンドポイント URL] を適切(WebOTXのWebサーバのホストとポート)に修正してください。


    図4.19.3-2


  4. Salesforce.comのワークフロールールを設定します。
    Salesforce.comへログインして、[あなたの氏名] | [設定] | [作成] | [ワークフローと承認申請] | [ワークフロールール] をクリックします。
    ワークフロールールを新規に定義するには、[新規ルール] をクリックします。

    ステップ 1: オブジェクトの選択も [取引先責任者] を選択します。
    ステップ 2: ワークフロールールの設定は、ルール名評価条件ルール条件 を設定します。


    図4.19.3-3


    ステップ 3: ワークフローアクションの指定は先に作成したアウトバウンドメッセージとします。


    図4.19.3-4


    ステップ 4:ワークフロールールを有効化します。[有効化]をクリックします。


    図4.19.3-5



Memo
バッチファイル・シェルスクリプトの実行には、環境変数にJavaのパス([Javaのインストールディレクトリ]/bin)を設定する必要があります。
JDK1.7.0のパスを設定する例: 設定するパスは環境によって異なりますのでご注意ください。

起動状況確認
otxadminでドメインとコンポーネントの起動状況を確認します。
  1. コマンドプロンプトからotxadminを起動します。
    C:\>otxadmin
  2. list-domainsコマンドを実行しドメインの起動状況を確認します。
    otxadmin> list-domains
    domain1 running
    WebOTXAdmin running
    
    domain1がrunningとなっていればドメインは起動しています。
    もしdomain1がnot runningの場合は、start-domainコマンドでdomain1を起動します。
    otxadmin> start-domain domain1
  3. ドメインの起動を確認できたら、loginコマンドでログインを行います。
    otxadmin> login --user <ユーザ名> --password <パスワード>
    domain1を6212ポート以外で運用している場合は、portオプションでポート番号を指定してください。
  4. ログイン後、list-jbi-binding-componentsコマンドで各コンポーネントの起動状況を確認します。
    otxadmin> list-jbi-binding-components
    
     ================================
     List of Binding Components
     ================================
     Name : CORBABinding
     State: Started
     --------------------------------
     Name : FTPBinding
     State: Started
     --------------------------------
     Name : HTTPBinding
     State: Started
     --------------------------------
     (中略)
     --------------------------------
     Name : SOAPBinding
     State: Started
     --------------------------------
    
    HTTPBinding、FILEBindingとSalesforceBindingがstartedになっていることを確認します。
    もしStoppedになっている場合は、start-jbi-componentコマンドで起動します。
    otxadmin> start-jbi-component SalesforceBinding

配備
19_Salesforce.zipの配備を行います。

配備には環境に応じて以下の3種類の方法があります。
  1. WebOTX Developer's Studioが利用できる場合
  2. WebOTX Developer's Studioがなく、統合運用管理ツールが利用できる場合
  3. WebOTX Developer's Studio、統合運用管理ツールいずれも利用できない場合
(1)Developer's Studioによる配備
  1. Developer's Studioを起動します。
  2. ヘルプメニューからヘルプ目次をクリックします。
  3. 目次から、WebOTX Guide(Enterprise Service Bus) > サンプル集を開きます。
    表からproj_19_Salesforce.zipをクリックすることで、
    プロジェクトをインポートします。
  4. WebOTXのWebサーバのポートが80ではない場合、HTTP BCの設定を変更する必要があります。
    パッケージ・エクスプローラからHTTPSUをダブルクリックしてSUエディタを開き、エンドポイントを選択します。
    外部に公開するエンドポイントURLを適切に修正してください。


    図4.19.3-6



  5. パッケージ・エクスプローラからSalesforceSU(Outbound)をダブルクリックしてSUエディタを開き、エンドポイントを選択します。
    SalesforceのログインURLとSalesforceログイン情報を適切に修正してください。


    図4.19.3-7



  6. WebOTXのWebサーバのポートが80ではない場合、Salesforce BCの設定を変更する必要があります。
    パッケージ・エクスプローラからSalesforceSU(Inbound)をダブルクリックしてSUエディタを開き、エンドポイントを選択します。
    外部に公開するエンドポイントURLを適切に修正してください。


    図4.19.3-8



  7. UNIX環境で実行する場合は、File BCの設定を変更する必要があります。 パッケージ・エクスプローラからFileSUをダブルクリックしてSUエディタを開き、エンドポイントを選択します。 入力ファイル格納ディレクトリ、出力ファイル格納ディレクトリ、処理ディレクトリを適切に修正してください。


    図4.19.3-9



  8. パッケージエクスプローラからプロジェクトを右クリックし、実行 > サーバーで実行 を選択します。
  9. 配備先のサーバーを選択し、配備を行います。
次へ

(2)統合運用管理ツールによる配備
  1. 19_Salesforce.zipを適当なディレクトリに保存します。
  2. 統合運用管理ツールを起動します。
  3. domain1を右クリックし接続を選択します。ユーザ名、パスワードを入力し接続ボタンをクリックします。
  4. domain1配下のアプリケーションサーバ > ESB > サービスアセンブリを右クリックしサービスアセンブリの配備を選択します。
  5. 参照ボタンから19_Salesforce.zipを選択します。
    WebOTX AS Standard/Enterpriseのアドバンスドモードの場合は、アプリケーショングループとプロセスグループを指定します。
    配備ボタンを押すと配備が実行されます。
    ただしポートが適切ではない場合は配備ボタンでなく次へボタンを押します。
    SalesforceSU(Inbound)HTTPSUエンドポイントを選択し、エンドポイントURLを修正してください。


    図4.19.3-10



    SalesforceSU(Outbound)エンドポイントを選択し、ログインURL、ユーザ名とパスワードを修正してください。


    図4.19.3-11



    FILESUエンドポイントを選択し、各ディレクトリパスを修正してください。


    図4.19.3-12



次へ

(3)otxadminによる配備
  1. 19_Salesforce.zipを適当なディレクトリに保存します。
  2. otxadminを起動し、ログインします。
  3. deploy-jbi-service-assemblyコマンドで19_Salesforce.zipの配備を行います。
    WebOTX AS Express、もしくはWebOTX AS Standard/Enterpriseのスタンダードモードの場合は以下を実行します。
    otxadmin> deploy-jbi-service-assembly <19_Salesforce.zipへのパス>
    WebOTX AS Standard/Enterpriseのアドバンスドモードの場合は以下を実行します。
    otxadmin> deploy-jbi-service-assembly --apgroup <アプリケーショングループ名> --pgroup <プロセスグループ名> <19_Salesforce.zipへのパス>
    ただしポートディレクトリパスまたはログイン情報が適切ではない場合はmodifyオプションをtrueにし、SalesforceSUFILESUHTTPSUを修正してください。
サービスアセンブリの起動
統合運用管理ツールもしくはotxadminから、配備したサービスアセンブリを起動します。

(1)統合運用管理ツールによる起動
  1. アプリケーションサーバ > ESB > サービスアセンブリ > 19_HttpInbound_SalesforceOutbound-SalesforceInbound_FileOutboundを右クリックし起動を選択します。
(2)otxadminによる起動
  1. start-jbi-service-assemblyコマンドを実行します。
    otxadmin> start-jbi-service-assembly 19_HttpInbound_SalesforceOutbound-SalesforceInbound_FileOutbound

実行
用意するHttpクライアントアプリケーションからメッセージ送受信し、応答を確認します。
  1. 下記のファイルを適当なディレクトリに保存します:run.batrun.shHttpClient.java19_TestData.xml
  2. Httpクライアントアプリケーションを実行します。
    Windows環境で、run.batのURLを確認します。WebOTXのWebサーバのポートが80ではない場合、適切に修正してください。
    確認した後run.batを実行します。
    > run.bat
    UNIX環境で、run.shの環境変数AS_INSTALLURLを確認します。WebOTXのインストールディレクトリが/opt/WebOTXではない場合、
    WebOTXのWebサーバのポートが8080ではない場合、適切に修正してください。
    確認した後run.shを実行します。
    > chmod 777 run.sh
    > ./run.sh
  3. 出力の内容を確認します。内容は下記の通りです。
    response code: 200
    response body:
    <?xml version="1.0" encoding="utf-8"?>
    <createResponse xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns=
    "urn:partner.soap.sforce.com"><result><id>*********</id><success>true</
    success></result></createResponse>
    
  4. 出力ファイルを確認します。
    c:\esb_samples\19_SalesforceInbound_FileOutbound\outにout_*****.xmlが生成されていることを確認します。内容は下記の様です。
    <notifications xmlns="http://soap.sforce.com/2005/09/outbound" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
       <OrganizationId>*********</OrganizationId>
       <ActionId>*********</ActionId>
       <SessionId xsi:nil="true"/>
       <EnterpriseUrl>https://ap1-api.salesforce.com/services/Soap/c/*********</EnterpriseUrl>
       <PartnerUrl>https://ap1-api.salesforce.com/services/Soap/u/*********</PartnerUrl>
       <Notification>
        <Id>*********</Id>
        <sObject xsi:type="sf:Contact" xmlns:sf="urn:sobject.enterprise.soap.sforce.com">
         <sf:Id>*********</sf:Id>
         <sf:CreatedById>*********</sf:CreatedById>
         <sf:CreatedDate>YY-MM-DDTHH:MM:SS.****</sf:CreatedDate>
         <sf:FirstName>forceTest</sf:FirstName>
         <sf:IsDeleted>false</sf:IsDeleted>
         <sf:LastModifiedById>*********</sf:LastModifiedById>
         <sf:LastModifiedDate>YY-MM-DDTHH:MM:SS.****</sf:LastModifiedDate>
         <sf:LastName>WebOTX</sf:LastName>
         <sf:OwnerId>*********</sf:OwnerId>
         <sf:SystemModstamp>YY-MM-DDTHH:MM:SS.****</sf:SystemModstamp>
        </sObject>
       </Notification>
      </notifications>
    

メッセージログの確認
メッセージログを確認し、送信されたメッセージを確認します。
メッセージログ機能については2.16. メッセージログ機能の利用を参照してください。

環境クリア
  1. 設定したSalesforce.comのアウトバウンドメッセージとワークフロールールを削除します。
  2. 配備したサービスアセンブリを配備解除します。
    配備解除には環境に応じて以下の3種類の方法があります。

    (1)Developer's Studioによる配備解除
    1. ウィンドウ > ビューの表示 > サーバー を選択します。
    2. 表示されたサーバーのビューから配備したサービスアセンブリを右クリックし、除去を選択します。
    (2)統合運用管理ツールによる配備解除
    1. アプリケーションサーバ > ESB > サービスアセンブリ > 19_HttpInbound_SalesforceOutbound-SalesforceInbound_FileOutboundを右クリックし、
      シャットダウンを選択します。
    2. シャットダウン完了後、再び19_HttpInbound_SalesforceOutbound-SalesforceInbound_FileOutboundを右クリックし配備解除を選択します。
    (3)otxadminによる配備解除
    1. shut-down-jbi-service-assemblyコマンドで19_HttpInbound_SalesforceOutbound-SalesforceInbound_FileOutboundをシャットダウンします。
      otxadmin> shut-down-jbi-service-assembly 19_HttpInbound_SalesforceOutbound-SalesforceInbound_FileOutbound
    2. undeploy-jbi-service-assemblyコマンドで19_HttpInbound_SalesforceOutbound-SalesforceInbound_FileOutboundを配備解除します。
      otxadmin> undeploy-jbi-service-assembly 19_HttpInbound_SalesforceOutbound-SalesforceInbound_FileOutbound

4.19.4. 注意事項

特になし。