Anypoint Code Builder を使用してコネクタを設定する手順は、次のとおりです。
-
Anypoint Code Builder で基本インテグレーションプロジェクトを作成します。
-
ビジネスロジックを処理する Mule アプリケーションにコネクタを追加し、他のコンポーネントも追加します。
始める前に
インテグレーションプロジェクトを作成する前に、次の作業を行う必要があります。
-
コネクタの API にアクセスするためのログイン情報を用意します。
コネクタを使用するには、以下に精通している必要があります。
-
コネクタの API
-
Anypoint Connector
-
Mule Runtime Engine (Mule)
前提条件を満たしたら、Anypoint Code Builder でアプリケーションを作成してコネクタを設定できます。
新しいインテグレーションプロジェクトを作成する
Unresolved include directive in modules/ROOT/pages/introduction/intro-config-use-acb.adoc - include::connectors::partial$acb-reusable-steps-for-connector-config.adoc[] . [Quick Actions (クイックアクション)] から [Develop an Integration (インテグレーションを開発)] をクリックします。
+
セクション内で強調表示されている [Develop an Integration (インテグレーションを開発)]リンク"]
. [Develop an Integration (インテグレーションを開発)] フォームに入力します。
+
| 属性 | 値 |
|---|---|
Project Name (プロジェクト名) |
プロジェクトの一意の名前。 この名前はタイトルおよびインテグレーションプロジェクトファイルの名前として使用されます。
たとえば、プロジェクト名が「Salesforce Integration」 (Salesforce インテグレーション) の場合、プロジェクトファイル名は |
Project Location (プロジェクトの場所) |
ホームディレクトリまたは作成する別のディレクトリ。インテグレーションプロジェクト用の別のディレクトリを選択するには、[Browse (参照)] をクリックします。 別のプロジェクトディレクトリ内にプロジェクトを作成しないでください。 ホームディレクトリへのフォルダーの追加を参照してください。 |
-
[Create Project (プロジェクトを作成)] をクリックします。
インテグレーションプロジェクトにコネクタを追加する
Anypoint Connector では、システムからのデータの取得、データの変更、システムへのデータの送信を行うための操作が提供されます。
Anypoint Code Builder で提供される組み込みコネクタに加えて、ユーザーは Anypoint Exchange から他の多くのコネクタをダウンロードできます。
Exchange からコネクタをインポートして設定に追加する手順は、次のとおりです。
-
[Explorer] ビューで、目的のプロジェクトの設定 XML ファイル (
my-project-name.xml など) を開きます。 -
キャンバス UI が自動的に開かない場合は、アクティビティバーの
(Show Mule graphical mode (Mule グラフィカルモードを表示)) アイコンをクリックしてキャンバス UI を開きます。 -
キャンバス UI から他のコンポーネントを追加した方法と同じ方法でコネクタを追加します。
-
キャンバス UI で
アイコン",15,15] ([Add component (コンポーネントを追加)]) アイコンをクリックします。 -
[Add Component (コンポーネントを追加)] パネルで [Connectors (コネクタ)] をクリックします。
-
コネクタ名をクリックし、追加する操作 (Publish など) をクリックします。
操作"]コネクタをローカルで使用できない場合、
アイコン",15,15] ([Search in Exchange (Exchange 内を検索)]) 切り替えをクリックします。
切り替え"]1 Search locally (ローカルで検索) 2 Search in Exchange (Exchange 内を検索) -
プロジェクトに追加するコネクタを選択します。
-
[Add Component (コンポーネントを追加)] パネルから操作を選択します。
-
コネクタをインテグレーションプロジェクトに追加しても、Anypoint Code Builder ワークスペースの他のプロジェクトはそのコネクタを使用できません。
設定ファイルの作成
設定ファイルは、別の設定を参照したり、コネクタのプロパティの値を指定したりする YAML ファイルです。アプリケーションをデプロイする環境に基づいて設定プロパティを定義します。
-
[Explorer] ビューで resources フォルダー (
src/main/resources) を右クリックして [New File (新規ファイル)] を選択します。 -
ファイルに
config.yaml という名前を付けます。 -
コネクタに接続するために必要な接続プロパティをファイルに入力します。Salesforce、Gmail、Slack の接続プロパティの例を次に示します。
salesforce: username: "yourUserName" password: "yourPassword" token: "yourToken" email: host: "smtp.gmail.com" username: "yourGmailEmail" password: "yourEmailAppPassword" slack: token: "yourSlackToken" -
プロジェクト XML に移動し、
</mule> タグの前に新しい行を追加し、「configuration」と入力して mule:configurationProperties を選択します。
-
属性をスクロールして、
file の値を config.yaml に設定します。<configuration-properties file="config.yaml" doc:name="Configuration properties" />
Salesforce Connector の設定例
config.yaml ファイルの値を使用して、Salesforce Connector を Salesforce 環境に接続します。
-
プロジェクト XML ファイルで、
<configuration-properties/> 要素の後に新しい行を作成し、「salesforce」と入力して salesforce:sfdc-config を選択します。 -
[name (名前)] 項目を
[Salesforce-Config] に設定します。 -
新しい行を作成し、
「basic」と入力して Salesforce。Basic を選択します。 -
設定ファイル値を使用するように
username および password プロパティを設定します。<salesforce:basic-connection username="${salesforce.username}" password="${salesforce.password}" securityToken="${salesforce.token}" />${salesforce.username} および ${salesforce.password} 要素の上にカーソルを置くと、Anypoint Code Builder に設定ファイルの値が表示されます。 -
<salesforce:sfdc-config/> 要素の [Test Connection (接続をテスト)] をクリックして、Salesforce への接続を検証します。
Anypoint Code Builder で [Connection is valid (接続は有効)] メッセージが返されます。
エラーを取得した場合、エラーメッセージを確認してさらにトラブルシューティングします。詳細は、「トラブルシューティング」を参照してください。
フローのトリガーの設定
トリガー (ソース) は、指定された条件が満たされたときにフローを開始します。コネクタに独自のソースが関連付けられている場合、コネクタ固有のトリガーを使用してフローを開始できます。各コネクタトリガーには、固有の設定があります。
HTTP リスナーの設定
HTTP リスナーをフローのトリガーとして使用する手順は、次のとおりです。
-
キャンバスで [Listener] コンポーネントをクリックします。
-
(省略可能) 編集アイコンをクリックして、[Listener] コンポーネントの名前を変更します。
-
(省略可能) コネクタの設定ファイルを作成した場合はそれを選択します。
-
[General (一般)] タブの [Path (パス)] 項目に、HTTP 設定要素で設定されたパスの相対パスを入力します。「パスの設定」を参照してください。
-
[Advanced (詳細)] タブを選択して、次の属性を設定します。
属性 説明 必須 Allowed methods (許可されるメソッド)
すべての HTTP メソッドを許可する (デフォルト) 場合は、この属性を定義しないでください。特定のメソッドを制限するには、許可される HTTP メソッドをカンマ区切り形式で指定します (例:
POST,GET)。いいえ
Response streaming mode (応答ストリーミングモード)
応答の送信時にストリーミングを使用するかどうか。HTTP Connector は、レスポンスボディの管理時に本文のサイズが明らかではない場合、送信するデータの種類を考慮し、chunked エンコードを使用します。これによりサイズ情報のないストリームとなります。この動作を制御するには、次のいずれかのオプションを選択します。
-
AUTO (デフォルト)
本文のサイズが定義されている場合、Content-Length エンコードを使用します。定義されていない場合は Transfer-Encoding: chunked を使用します。 -
ALWAYS (常時)
存在するサイズデータに関係なく Transfer-Encoding: chunked を使用します。 -
NEVER (なし)
Content-Length エンコードを使用し、必要に応じてストリームをコンシュームしてデータサイズを判定します。
いいえ
Output MIME type (出力 MIME タイプ)
このコンポーネントで出力されるペイロードの MIME タイプ。
いいえ
パラメーター
リーダープロパティのキー-値ペアが出力 MIME 属性に追加されます。複数のキーと値のペアが許可されます。
いいえ
Output encoding (出力エンコード)
このコンポーネントで出力されるペイロードのエンコード。
いいえ
Streaming Strategy (ストリーミング戦略)
-
Non-repeatable stream
ストリーミング戦略の設定についての詳細は、XML でのストリーミング戦略の設定を参照してください。
いいえ
Primary node only (プライマリノードのみ)
選択すると、アプリケーションがクラスターで実行されるときに Listener トリガーがプライマリノード上でのみ実行されます。
いいえ
Redelivery policy (再配信ポリシー)
エラーを生成する要求を実行するための再配信ポリシーを設定します。再配信ポリシーは、フロー内のあらゆる提供元に追加できます。再配信ポリシーの設定についての詳細は、「再配信ポリシー」を参照してください。
いいえ
Reconnection strategy (再接続戦略)
Mule アプリケーション内の操作が外部サーバーへの接続に失敗すると、デフォルト動作ではその操作は直ちに失敗し、接続エラーが返されます。デフォルト動作を変更するには、操作の再接続戦略を設定します。「Reconnect (再接続)」、「Reconnect Forever (繰り返し再接続)」、およびXML での再接続戦略の設定を参照してください。
いいえ
Response (応答)
メッセージの本文 (またはペイロード) に関連付けられたメタデータが含まれる属性。詳細は、「HTTP Response Attributes (HTTP 応答属性)」を参照してください。
いいえ
Error Response (エラー応答)
選択すると、HTTP エラー応答でエラーの状況コードが返されます。
いいえ
Body (本文)
エラーメッセージの本文。
いいえ
Headers (ヘッダー)
エラーメッセージに含めるヘッダー。各ヘッダー属性は、等号 (=) で区切られたキー-値のペアになっています。次に例を示します。
Headers=[ date=Sun, 20 Jan 2019 19:13:51 GMT content-type=text/html; charset=UTF-8 transfer-encoding=chunked connection=keep-alive set-cookie=__cfduid=d03462713a0b2c57c8d2ad3bf311287041548011631; expires=Mon, 20-Jan-20 19:13:51 GMT; path=/; domain=.typicode.com; HttpOnly x-powered-by=Express vary=Origin, Accept-Encoding access-control-allow-credentials=true cache-control=public, max-age=14400 last-modified=Tue, 15 Jan 2019 18:17:15 GMT via=1.1 vegur cf-cache-status=HIT expires=Sun, 20 Jan 2019 23:13:51 GMT expect-ct=max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct" server=cloudflare cf-ray=49c3dc570c2f281c-SJC ]いいえ
Status code (状況コード)
エラー応答の状況コード (
Status Code (状況コード) = 500 など)。いいえ
理由を示す語句
エラーの理由 (
[Gateway Timeout (ゲートウェイがタイムアウトしました)] や Internal Server Error (内部サーバーエラー) など)。いいえ
-
リスナー設定属性についての詳細は、「リスナー設定」を参照してください。
スケジューラーの設定
Scheduler により、固定の頻度、または Cron 式に基づいた間隔でスケジュール戦略が設定されます。
Mule アプリケーションに Scheduler を追加するときは、次の点を考慮してください。
-
Scheduler は、Mule が動作しているマシンと同じタイムゾーンを使用します。ただし、アプリケーションが CloudHub で動作している場合は、アプリケーションが動作している地理的リージョンに関係なく、Scheduler は UTC タイムゾーンに準拠します。
Scheduler に別のタイムゾーンを設定するには、Cron スケジュール戦略属性の
timeZone を参照してください。 -
disallowConcurrentExecution プロパティを使用すると、以前にトリガーされた実行の処理中に Scheduler でフローの実行がトリガーできないようにできます。 -
スケジュールされたトリガー時に利用できるリソースが 1 つもないために back-pressure が発生した場合、その実行はスキップされます。
-
Mule Runtime Engine クラスターやマルチワーカー CloudHub デプロイメントでは、Scheduler はプライマリノードのみで (つまり 1 つの Mule インスタンスのみで) 実行されます。
<scheduler doc:name="Scheduler" doc:id="snswxf" >
<scheduling-strategy/>
</scheduler>
Scheduler (<scheduler/>) 属性は UI および XML で設定できます。
| 属性名 | 属性 XML | 説明 |
|---|---|---|
Scheduler (スケジューラー) (デフォルト) |
|
キャンバスに表示されるコンポーネントの編集可能な名前。 |
なし |
|
コンポーネントの自動生成された識別子。 |
Disallow concurrent execution (同時実行を禁止) |
|
この属性を |
一定間隔属性
Scheduler では、次の属性を受け入れる一定間隔 (<fixed-frequency/>) 要素を受け入れます。
| 属性名 | 属性 XML | 説明 |
|---|---|---|
なし |
|
指定された |
なし |
|
アプリケーションが起動した後で Scheduler の最初の実行を遅延する時間。このプロパティでは頻度と同じ |
なし |
|
|
一定間隔の例を参照してください。
Cron 属性
より複雑なスケジューリングの場合、<cron/> 要素で Cron 式を設定します。
| 属性名 | 属性 XML | 説明 |
|---|---|---|
なし |
|
Scheduler をトリガーする Cron 式。デフォルトの Cron 式はありません。式の詳細は、Cron 式を参照してください。例: |
なし |
|
システムプロパティとして渡されるタイムゾーン、またはマシンのオペレーティングシステムで設定されているタイムゾーン。 Java のタイムゾーンの値がサポートされます。Java の短縮表記 ( |
Cron の例を参照してください。
一定間隔の例
次の例では、Scheduler は 15 秒ごとに実行されます。
<flow name="ex-fixed-frequency-flow" >
<scheduler doc:name="Scheduler">
<scheduling-strategy>
<fixed-frequency frequency="15" timeUnit="SECONDS" />
</scheduling-strategy>
</scheduler>
<!-- One or more processors here. -->
</flow>
次の例では、Scheduler はフローが完了までに要する時間が固定の頻度である 10 ミリ秒を超えると実行をスキップします。
<flow name="scheduler-disallowConcurrentExecution-ex" >
<scheduler doc:name="Scheduler" disallowConcurrentExecution="true" >
<scheduling-strategy>
<fixed-frequency frequency="10" timeUnit="MILLISECONDS"/>
</scheduling-strategy>
</scheduler>
<!-- processors here -->
</flow>
Scheduler が実行をスキップするたびに、たとえば次のような Execution skipped メッセージがログに記録されます (読みやすいように編集済み)。
INFO 2022-11-09 15:15:43,082 ...
...scheduler.DefaultSchedulerMessageSource:
Flow 'scheduler-disallowConcurrentExecution-ex' is already running and
'disallowConcurrentExecution' is set to 'true'. Execution skipped.
INFO 2022-11-09 15:15:43,083 ...
...scheduler.DefaultSchedulerMessageSource:
Flow 'scheduler-disallowConcurrentExecution-ex' is already running and
'disallowConcurrentExecution' is set to 'true'. Execution skipped.
次の例は、最初の 10 秒の遅延後、10 秒ごとに Scheduler を実行する一定間隔のスケジュール戦略を示しています。
<scheduler doc:name="Scheduler" >
<scheduling-strategy >
<fixed-frequency frequency="10" timeUnit="SECONDS" startDelay="10"/>
</scheduling-strategy>
</scheduler>
Cron の例
次の例では、15 秒ごとにフローが新たに実行され、Mule メッセージの生成がトリガーされる Cron 式を使用します。
<flow name="ex-cron-expression-flow" >
<scheduler doc:name="Scheduler" >
<scheduling-strategy >
<cron expression='0/15 * * * * ? '/>
</scheduling-strategy>
</scheduler>
<!-- One or more processors here. -->
</flow>
次の例では、America/Los_Angeles タイムゾーンで毎日 12 時 00 分にフローをトリガーする Cron 式を使用します。
<flow name="componentsFlow">
<scheduler>
<scheduling-strategy>
<cron expression="0 0 12 * * ?" timeZone="America/Los_Angeles"/>
</scheduling-strategy>
</scheduler>
<logger message="my message"/>
</flow>
Cron 式
Cron は、日時情報を記述するのに広く利用されている標準です。Cron 式 (<cron expression /> スケジュール戦略 (<scheduling-strategy >) は、固定頻度スケジュール戦略では不可能な間隔でフローをトリガーする場合に便利です。
Scheduler は、毎秒を監視し、Quartz Cron 式が日時の設定と一致すると Mule イベントを作成します。イベントは 1 回だけ、または一定間隔でトリガーできます。
日時の式は、6 つの必須設定と、年の設定 (省略可能) で構成されます。設定は以下の順序で指定します。
-
秒 (
0-59) -
分 (
0-59) -
時 (
0-23) -
日 (
1-31) -
月 (
1-12 または JAN-DEC) -
曜日 (
1-7 or SUN-SAT) -
年 (空白、または
1970-2099 の範囲内の 4 桁。例:2019)
Scheduler は Quartz Cron 式をサポートします。例をいくつか示します。
| 式 | 動作 |
|---|---|
|
毎日 2 秒おきに実行。 |
|
毎日午前 10 時 15 分に実行。 |
|
2019 年の毎日午前 10 時 15 分に実行。 |
|
毎日午後 2 時から 2 時 59 分まで、毎分実行。 |
|
毎日午後 2 時から 2 時 55 分まで、5 分おきに実行。 |
|
毎月 1 日と 7 日の午前 1 時 1 分 1 秒に実行。 |
Scheduler コンポーネントは、Quartz Scheduler の特殊文字もサポートします。
-
*: すべての値。 -
?: 任意の 1 つの値。 -
-: 値の範囲。例:1-3。 -
,: 追加の値。例:1,7。 -
/: 増分値。例:1/7。 -
L: 週または月の最終日、または月の最後の特定の曜日 (例:6L は月の最後の土曜日)。 -
W: 平日。月または曜日の項目で有効。 -
#: 月の "n" 日目。例:#3 は月の 3 日。
次の例は、「hello」というメッセージを毎秒ログに記録します。
<flow name="cronFlow" >
<scheduler doc:name="Scheduler" >
<scheduling-strategy >
<cron expression="* * * * * ?" />
</scheduling-strategy>
</scheduler>
<logger level="INFO" doc:name="Logger" message='"hello"'/>
</flow>
Cron 式をビルドするための無料のオンラインツールがたくさんあります。
コネクタ固有のトリガーの使用
コネクタにトリガーが関連付けられている場合、コネクタ固有のトリガーを使用してフローを開始できます。各コネクタトリガーには、固有の設定があります。
たとえば、次のトリガーのいずれかを Salesforce Connector で使用するように設定できます。
-
On Deleted Object
Salesforce ユーザーがオブジェクトを削除した時点でアプリケーションを開始します。
Contact、Lead、Account、Contracts、Opportunity のオブジェクト種別、またはカスタムオブジェクト名を指定できます。 -
On Modified Object
Salesforce ユーザーがオブジェクトを変更した時点でアプリケーションを開始します。
Contact、Lead、Account、Contracts、Opportunity のオブジェクト種別、またはカスタムオブジェクト名を指定できます。 -
On New Object
Salesforce ユーザーがオブジェクトを作成した時点でアプリケーションを開始します。
Contact、Lead、Account、Contracts、Opportunity のオブジェクト種別、またはカスタムオブジェクト名を指定できます。 -
Replay channel listener
ストリーミングチャネルをサブスクライブします。このソースでは、24 時間の保持期間内の新規イベントおよび Salesforce で保存されたイベントについてチャネル関連の通知設定が提供されます。指定されたチャネルソースでイベントが発生するとフローがトリガーされます。
-
Replay topic listener
トピックをサブスクライブします。このソースでは、24 時間の保持期間内の新規イベントおよび Salesforce で保存されたイベントについてトピック関連の通知設定が提供されます。レコードの指定されたトピックでイベントが発生するとフローがトリガーされます。
-
Subscribe channel listener
ストリーミングチャネルをサブスクライブします。このソースでは、サブスクライブ後に発生した新規イベントについてチャネル関連の通知設定が提供されます。
-
Subscribe topic listener
トピックをサブスクライブします。このソースでは、サブスクライブ後に発生した新規イベントについてトピック関連の通知設定が提供されます。
| チャネルのサブスクリプションを作成する前に、チャネルまたはトピックを Salesforce にパブリッシュする必要があります。 |
たとえば、On New Object ソースを設定する手順は、次のとおりです。
-
[On New Object] コンポーネントをキャンバスに追加します。
-
キャンバスで [On New Object] コンポーネントをクリックします。
-
[General (一般)] タブで、使用する設定ファイルを選択し、次の属性を設定します。
属性 説明 必須 Object type (オブジェクト種別)
Salesforce オブジェクトの種別。
はい
Triggers query (トリガーのクエリ)
トリガー結果を絞り込むクエリ (例:
Name='Filter')。いいえ
Since (以降)
YYYY-MM-DD hh:mm:ss 形式の日付 (例:2017-03-17 16:30:40)。この項目が空の場合、このソースは選択されたオブジェクトを Mule アプリケーションが開始した時刻から取得します。いいえ
Scheduling strategy (スケジュール戦略)
時間ベースの条件に基づいてフローの実行をトリガーします。スケジューラーの設定 を参照してください。
はい
-
[Advanced (詳細)] タブを選択して、次の属性を設定します。
属性 説明 必須 Primary node only (プライマリノードのみ)
選択すると、アプリケーションがクラスターで実行されるときに On New Object トリガーがプライマリノード上でのみ実行されます。
いいえ
Redelivery policy (再配信ポリシー)
詳細は、「再配信ポリシー」を参照してください
いいえ
Read timeout (読み取りタイムアウト)
コンシューマーがタイムアウトする前に応答を待機する時間。
いいえ
Time unit (時間単位)
[Read timeout (読み取りタイムアウト)] 属性の時間単位。Enumeration (列挙)。次のいずれかになります。
-
NANOSECONDS
-
MICROSECONDS
-
MILLISECONDS
-
SECONDS
-
MINUTES
-
HOURS
-
DAYS
いいえ
Reconnection strategy (再接続戦略)
「Reconnect (再接続)」、「Reconnect Forever (繰り返し再接続)」、およびXML での再接続戦略の設定を参照してください。
いいえ
-
コンポーネント属性を設定する
コンポーネントをインテグレーションプロジェクトに追加したら、コンポーネント UI で属性を設定するか、XML コードエディターで直接属性を設定します。
コネクタ XML タグは、名前空間で始まり操作が続く、構文 namespace:operation に従います。たとえば、データベース用 Anypoint Connector (Database Connector) の Select 操作の場合、<db:select/> となります。
XML でのコネクタの設定
Unresolved include directive in modules/ROOT/pages/introduction/intro-config-use-acb.adoc - include::connectors::partial$acb-xml-maven-partial.adoc[] Unresolved include directive in modules/ROOT/pages/introduction/intro-config-use-acb.adoc - include::connectors::partial$acb-xml-maven-partial.adoc[] Unresolved include directive in modules/ROOT/pages/introduction/intro-config-use-acb.adoc - include::connectors::partial$acb-xml-maven-partial.adoc[]