Anypoint コネクタチュートリアル

Basic Studio Tutorialおよび「チュートリアル: Mule アプリケーションの作成」で基本的な機能について学んだら、次は Anypoint コネクタ​を使用してアプリケーションの内容を充実させましょう。

About Anypoint Studio にはコネクタのセットが付属しており、容易に Studio フローに追加してアプリケーションを接続できます。すべての認定コネクタは Anypoint Exchange にあります。

Anypoint コネクタとは?

Anypoint コネクタとは、Salesforce、Google Contacts、ServiceNow、Workday、Facebook、Twitter、MongoDB などの外部システムで通常に操作しているかのようにこうしたシステムからの情報を統合して新しいものを作成するための Mule の拡張機能です。コネクタにより、SaaS プロバイダの API とのインタラクションが簡素化され、使用可能なほとんどまたはすべての操作のメソッドが提供されます。

設定方法

通常、次の手順を実行してコネクタを設定します。

  1. 認証、接続、またはその他の設定を​プロパティファイル​のConfiguring Propertiesに保存します。

  2. コネクタ設定​からプロパティを参照します。コネクタ設定は、同じプロパティを使用する他のコネクタインスタンスで使用するために、Studio によってGlobal Elementsとして自動的に保存されます。

  3. 設定ダイアログから接続をテストします。

プロパティファイルは、変数を一元的な場所に保存するために便利な方法です。

各コネクタの機能の大半はその対象によって決まります。つまり、多くの機能はほとんどのコネクタで共通しています。このチュートリアルでアプリケーションを作成して実行したら、学習した内容を生かして、アプリケーションをさまざまな SaaS アプリケーションに接続できるようになります。

前提条件

このチュートリアルでは、To Install Anypoint Studioであることを前提としています。以前に Eclipse または Eclipse ベースの IDE を使用した経験がない場合、About Anypoint Studioの簡単な紹介および Global Elementsについて説明したドキュメントを参照すると良いでしょう。さらに、Basic Studio Tutorialおよび「switch ステートメントを使用したメッセージのルーティング方法」チュートリアルの学習も検討してください。

このチュートリアルを完了するには、作成する Twitter アプリケーションへの Twitter 開発者アクセス権を取得する必要があります。Twitter 開発者アクセス権の取得方法およびシンプルなアプリケーションの作成方法については、Twitter API へのアクセス権を取得する を参照してください。

目標

このチュートリアルでの目標は次のとおりです。

  1. Twitter API アクセス権およびログイン情報を取得するプロセスを一通り実行する。

  2. Twitter API にアクセスするためにコネクタを使用するアプリケーションを Anypoint Studio で作成する。

  3. アプリケーションでグローバル要素および Foreach スコープを使用する方法を学ぶ。

  4. Anypoint Studio に埋め込まれたローカルランタイムでアプリケーションを実行する。

  5. ブラウザを使用してアプリケーションをテストする。

  6. アプリケーションを停止する。

  7. (省略可能) 理解した内容を追加課題で試してみる。

Twitter API へのアクセス権を取得する

Twitter API を使用するには、最初の Twitter 開発者アカウントを作成して一連のログイン情報を取得する必要があります。

  1. まだアカウントがない場合は、 通常の Twitter アカウントを作成します。この演習での Twitter への投稿のテスト専用にアカウントを作成してもよいでしょう。Twitter から標準の Twitter アカウントの作成を要求されます。氏名、メールアドレス、パスワード、ユーザ名を入力します。プロンプトに従い、プロセスを完了します。Twitter から確認メール、または電話番号を入力した場合はショートメールが届きます。

  2. Twitter の dev.twitter.com にある開発者向けページにアクセスし、Twitter アカウントのログイン情報を使用してサインインします。これにより、通常の Twitter アカウントに関連付けられた開発者アカウントが個別に作成されます。

  3. 新しい Twitter アプリケーション​を作成するには、https://apps.twitter.com/[https://apps.twitter.com/] に移動します。

  4. 下の表および画像に従って、[Application Details (アプリケーションの詳細)] フォームに入力します。

    項目

    Name (名前)

    アプリケーションの名前。Twitter システムで一意である必要があり、「Twitter」という単語は使用できません。

    Description (説明)

    構築するアプリケーションの概要。

    Website (Web サイト)

    入力が必須の項目。ただし、この Twitter アプリケーションは公開されないため、この項目には意味はありません。完全な URL のプレースホルダ値を入力します。http://www.example.com のように指定できます。example.com のような URL の一部分は受け入れられません。

    Callback URL (コールバック URL)

    空白のままにする。

    devacct1
  5. 規約に同意して、[Create your Twitter application (Twitter アプリケーションを作成)] をクリックします。

  6. [Keys and Access Tokens (キーとアクセストークン)] タブをクリックし、下にスクロールして [Create my access token (アクセストークンを作成)] をクリックします。

    twitter access token

    アクセストークンを使用して、容易にアプリケーションを使用する Twitter API と接続できます。ただし、API へのアクセスは自分のユーザアカウントに制限されます。このチュートリアルのために、アクセストークンによってアプリケーションを Twitter API と連携するために必要なアクセス権が付与されます。

    後で、こうしたアプリケーションを公開する場合には、Using a Connector to Access an OAuth APIするようにアプリケーションを設定する必要があります。

  7. ブラウザでページを下にスクロールし、[Access token (アクセストークン)] および [Access token secret (アクセストークンシークレット)] の値を表示します。これらの値は Anypoint Studio で入力する必要があるため、Twitter から次の 4 つのキーを記録しておきます (下の画像を参照)。

    1. Consumer Key (コンシューマキー)

    2. Consumer Secret (コンシューマシークレット)

    3. Access Token (アクセストークン)

    4. Access Token Secret (アクセストークンシークレット)

      twitter app settings

プロジェクトを作成してフローを作成する

フローを作成する手順は、次のとおりです。

  1. Anypoint Studio を起動します。

  2. Connector Tutorial という名前で Mule プロジェクトを新規作成します。Studio の起動およびプロジェクトの作成に関するより詳細な手順は、Basic Studio Tutorialを参照してください。CMD + s (Windows の場合は CTRL + s) を押してプロジェクトを保存します。

  3. Studio タスクバーの左側にある [X] をクリックして Anypoint Exchange を開きます。twitter と入力して Twitter コネクタを見つけます。[Install (インストール)] をクリックします。

    twitter install connector

    名前、メールアドレス、電話番号を入力します。画面の指示に従い、要求されたら Studio を再起動します。

  4. Studio パレットで構成要素を検索し、それぞれをドラッグして次のアプリケーションを作成します。

    flow1

    Mule アプリケーションを HTTP または HTTPS プロトコルを使用して Web リソースに接続できます。HTTP コネクタは HTTP 要求を受信します。

    1 つ以上の Twitter リソースに対して操作を実行できるようになります。Twitter コネクタは Twitter の API を介してクエリを送信し、ユーザのツイートのタイムラインを取得します。

    POJO の各項目を繰り返し処理します。

    Mule 式の値に基づいてメッセージまたはアクティビティをログ記録します。このアプリケーションでは、各ツイートをログ記録し、ツイートを Studio のコンソールに表示します。

次のセクションで説明するように、各要素を設定した後で、このフローは設定されている目標をこのアプリケーションで達成します。下の図で示しているように、選択してキャンバスに配置した各構成要素がアプリケーションの各機能を実行します。

flow globitos

フロー要素を設定する

次に、アプリケーションが HTTP 要求を受け入れるようにフロー要素を設定し、ユーザのツイートのタイムラインを取得するためにクエリを Twitter に送信します。目標は、http://localhost:8081/gettweets?sname=mulesoft を呼び出してアプリケーションから Twitter に要求を送信し、クエリパラメータで指定された特定の Twitter ユーザ (この例では MuleSoft) の最近のすべてのツイートを取得することです。

ほぼすべての Mule 要素に設定オプションがあり、次の 2 つの方法のいずれかで設定できます。

  • Studio のビジュアルエディタのコンソールで構成要素の​プロパティエディタ​を使用する

  • Studio の XML エディタまたは任意の XML 編集環境で XML コードを使用する

次の手順で、各構成要素をビジュアルエディタまたは XML で設定する方法について一通り説明します。タブを使用してビジュアルエディタの手順と XML エディタの手順を相互に切り替えます。

HTTP コネクタを設定する

Studio ビジュアルエディタ

  1. フローで HTTP 構成要素をクリックし、そのAbout Anypoint Studioを開きます。 この要素を機能させるために、Connector Configuration と呼ばれる抽象的な要素を設定します。ここには、高レベルの必須設定プロパティがいくつか含まれます。1 つの Connector Configuration 要素を任意の数の HTTP コネクタから参照できます。[Connector Configuration (コネクタ設定)] 項目の横にある緑色のプラス記号をクリックして、新しい Connector Configuration 要素を作成します。

    twitter http properties
  2. 新しいウィンドウが開きます。2 つの必須項目、[Host (ホスト)][Port (ポート)] に入力します。[Host (ホスト)]localhost に設定して、[Port (ポート)] はデフォルト値 8081 のままにします。このメニューの残りの項目は無視しても構いません。

    twitter http global element props
    項目

    Name (名前)

    HTTP_Listener_Configuration

    Host (ホスト)

    localhost

    Port (ポート)

    8081

  3. [Ok] をクリックしてこのダイアログを閉じます。[Connector Configuration (コネクタ設定)] 項目に作成したばかりの要素への参照が含まれているのがわかります。これは、edit アイコンをクリックしてさらに編集できます。

  4. 今度は、必須項目 [Path (パス)] の値を gettweets と入力します。

    http
    項目

    Path (パス)

    gettweets

XML エディタまたはスタンドアロン

HTTP コネクタを次のように設定します。

属性

doc:name

HTTP

config-ref

HTTP_Listener_Configuration

path

gettweets

この要素を機能させるために、Connector Configuration と呼ばれる抽象的な要素を参照する必要があります。ここには、高レベルの必須設定プロパティがいくつか含まれます。1 つの Connector Configuration 要素を任意の数の HTTP コネクタから参照できます。コネクタの属性 config-ref はこの Connector Configuration 要素を参照します。今度は、参照される名前に一致する要素をフローの外側で作成する必要があります。

<http:listener-config name="HTTP_Listener_Configuration" host="localhost" port="8081" doc:name="HTTP Listener Configuration"/>
属性

name

HTTP_Listener_Configuration

host

localhost

port

8081

doc:name

HTTP_Listener_Configuration

Twitter コネクタを設定する

注意: このセクションを完了するには、作成したアプリケーションへの Twitter 開発者アクセス権が必要です。Twitter API へのアクセス権を取得する を参照してください。

Studio ビジュアルエディタ

Twitter コネクタをクリックしてそのプロパティエディタを開き、下の表に従って項目の値を入力します。

cttwitter
項目 説明

Display Name (表示名)

フローの要素について Studio が表示する名前。

: Twitter

Operation (操作)

Twitter で実行する操作を定義。この値は指定した Twitter ユーザからツイートストリームを返します。

: Get user timeline by screen name

Screen Name (スクリーン名)

Twitter ユーザを定義。HTTP 要求からパラメータを抽出する式に設定します。

:
#[message.inboundProperties.'http.query.params'.sname]

Page (ページ)

取得する結果のページを指定。1 がデフォルト値です。

: 1

Count (数)

クエリが返すツイートの数を定義。20 がデフォルト値です。

: 20

Since Id

ここで指定した ID 値より大きい ID 値の結果を返す。-1 がデフォルト値です。

: -1

XML エディタまたはスタンドアロン

次のように Twitter コネクタを設定します (意図的に 1 つの属性を除外します。次のステップで属性を追加します)。

<twitter:get-user-timeline-by-screen-name doc:name="Twitter" screenName="#[message.inboundProperties.'http.query.params'.sname]"/>
要素 説明

twitter:get-user-timeline-by-screen-name

Twitter で実行する操作を定義。この値は指定した Twitter ユーザからツイートストリームを返します。

属性 説明

doc:name

Twitter

フローの要素について Studio が表示する名前。

screenName

#[message.inboundProperties.'http.query.params'.sname]

Twitter ユーザを定義。HTTP 要求からパラメータを抽出する式に設定します。

Studio ビジュアルエディタに赤い [x] と config-ref 属性が必須であることを示すコメントが表示される場合があります。Studio はこのコネクタにグローバルコネクタ設定が必要であることを知らせています。これは、​グローバル要素​として定義します。グローバル要素により、設定情報を一度入力すれば、1 つのフローまたは複数のフローの複数の要素からログイン情報を参照できます。この場合、Twitter グローバル要素を使用して、フローの Twitter コネクタが Twitter にクエリするときに使用するすべての接続情報および API アクセスのログイン情報を設定できます。

Global Elementsの詳細を確認してください。

Studio ビジュアルエディタ

  1. [Connector Configuration (コネクタ設定)] 項目の横にあるプラス記号をクリックします。

    cttwitterplus
  2. 下の表に従って項目の値を入力します。

    twt4
    項目

    Name (名前)

    Twitter

    Access Key (アクセスキー)

    Twitter から取得される一意のアクセストークン値

    Access Secret (アクセスシークレット)

    Twitter から取得される一意のアクセストークンシークレット値

    Consumer Key (コンシューマキー)

    Twitter から取得される一意のコンシューマキー値

    Consumer Secret (コンシューマシークレット)

    Twitter から取得される一意のコンシューマシークレット値

    Use SSL (SSL を使用)

    true (オン)

  3. [Test Connection (接続をテスト)] をクリックして、ログイン情報が正しいことを確認します。成功した場合、Studio に次の画面が表示されます。

    接続テストの成功アラート
  4. [OK] をクリックして、設定を保存します。[Connector Configuration (コネクタ設定)] 項目に作成したばかりのグローバル要素の名前 Twitter が入力されます。

XML エディタまたはスタンドアロン

  1. アプリケーションのすべてのフローに対して、グローバル要素を次のように設定します。

    <twitter:config name="Twitter" accessKey="" accessSecret="" consumerKey="" consumerSecret="" doc:name="Twitter">
    属性

    name

    Twitter

    accessKey

    Twitter から取得される一意のアクセストークン値

    accessSecret

    Twitter から取得される一意のアクセストークンシークレット値

    consumerKey

    Twitter から取得される一意のコンシューマキー値

    consumerSecret

    Twitter から取得される一意のコンシューマシークレット値

    doc:name

    Twitter

  2. フローで Twitter コネクタの設定に再度アクセスします。次のように config-ref 属性を追加します。

    <twitter:get-user-timeline-by-screen-name config-ref="Twitter" doc:name="Twitter" screenName="#[message.inboundProperties.'http.query.params'.sname]"/>

For-Each スコープを設定する

Twitter がクエリに対する応答を返すと、ペイロードはオブジェクトの配列であり、それぞれがツイートおよび付随するメタデータを記述します。このアプリケーションでアクセスする必要がある唯一の項目は text です。これは実際のツイートコンテンツが含まれているためです。式 #[message.payload[0].text] を使用して最新のツイートのテキストにアクセスできますが、このアプリケーションは Foreach スコープを使用して配列内のすべてのツイートのテキストにアクセスします。

Studio ビジュアルエディタ

[Foreach] をクリックしてそのプロパティエディタを開きます。以下で示しているように、デフォルト値のままにします。

ForEachunconfig
項目

Display Name (表示名)

For Each

Counter Variable Name (カウンタ変数名)

counter

Batch Size (バッチサイズ)

1

Root Message Variable Name (ルートメッセージ変数名)

rootMessage

XML エディタまたはスタンドアロン

次のように Foreach スコープを追加します。

属性

doc:name

For Each

ロガーを設定する

Studio ビジュアルエディタ

[Logger (ロガー)] をクリックしてそのプロパティエディタを開き、下の表に従って項目の値を入力します。

actlog
項目

Display Name (表示名)

Logger

Message (メッセージ)

#[payload.text]

Level (レベル)

`INFO `

XML エディタまたはスタンドアロン

次のように、​Foreach スコープ内​で [Logger (ロガー)] を設定します。

属性

doc:Name

Logger

message

#[payload.text]

level

`INFO `

完全なアプリケーションの XML を設定すると、下のコードのようになります。

この例を機能させるには、Twitter グローバル要素 (twitter:config 要素) の次の値を手動で設定する必要があります。

  • Access Key (アクセスキー)

  • Access Secret (アクセスシークレット)

  • Consumer Key (コンシューマキー)

  • Consumer Secret (コンシューマシークレット)

<?xml version="1.0" encoding="UTF-8"?>

<mule xmlns:twitter="http://www.mulesoft.org/schema/mule/twitter" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
	xmlns:spring="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/twitter http://www.mulesoft.org/schema/mule/twitter/current/mule-twitter.xsd">
    <http:listener-config name="HTTP_Listener_Configuration" host="localhost" port="8081" doc:name="HTTP Listener Configuration"/>
    <twitter:config name="Twitter__Configuration" accessKey="Access_Key" accessSecret="Access_Secret" consumerKey="Consumer_Key" consumerSecret="Consumer_Secret" doc:name="Twitter: Configuration"/>
    <flow name="connector_tutorialFlow">
        <http:listener config-ref="HTTP_Listener_Configuration" path="gettweets" doc:name="HTTP"/>
        <twitter:get-user-timeline-by-screen-name config-ref="Twitter__Configuration" screenName="#[message.inboundProperties.'http.query.params'.sname]" doc:name="Twitter"/>
        <foreach doc:name="For Each">
            <logger message="#[payload.text]" level="INFO" doc:name="Logger"/>
        </foreach>
    </flow>
</mule>

アプリケーションを実行する

新しいアプリケーションを構築して設定し、保存すると、埋め込み Mule サーバ (Anypoint Studio のバンドルダウンロードに含まれる) で実行する準備は完了です。

  1. Package Explorer でプロジェクト名を右クリックし、[Run As (別のユーザとして実行)] > [Mule Application (Mule アプリケーション)] を選択します(まだ保存していない場合、Mule から今すぐに保存するよう要求されます)。

  2. Mule は直ちにアプリケーションを起動し、実行できるようにします。起動プロセスが完了すると、Studio のコンソールに Started app 'connector_tutorial' のようなメッセージが表示されます。

    **********************************************************************
    * Application: connector_tutorial                                    *
    * OS encoding: /, Mule encoding: UTF-8                               *
    *                                                                    *
    * Agents Running:                                                    *
    *   JMX Agent                                                        *
    *   Batch module default engine                                      *
    *   DevKit Extension Information                                     *
    *   Wrapper Manager                                                  *
    **********************************************************************
    INFO  2018-05-03 04:50:02,891 [main] org.mule.module.launcher.MuleDeploymentService:
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    + Started app 'connector_tutorial'                         +
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    INFO  2018-05-03 04:50:02,931 [main] org.mule.module.launcher.DeploymentDirectoryWatcher:
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    + Mule is up and kicking (every 5000ms)                    +
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    INFO  2018-05-03 04:50:02,936 [main] org.mule.module.launcher.StartupSummaryDeploymentListener:
    **********************************************************************
    *              - - + DOMAIN + - -               * - - + STATUS + - - *
    **********************************************************************
    * default                                       * DEPLOYED           *
    **********************************************************************
    
    **********************************************************************************************
    *   - - + APPLICATION + - -            *       - - + DOMAIN + - -       * - - + STATUS + - - *
    **********************************************************************************************
    * connector_tutorial                   * default                        * DEPLOYED           *
    **********************************************************************************************

アプリケーションの使用

  1. Web ブラウザを開き、次の URL に移動します:
    http://localhost:8081/gettweets?sname=mulesoft

  2. この要求により、アプリケーションに対する要求が開始され、最終的に gettweets ファイルが返され、ブラウザからダウンロードするよう要求されます。ファイルをダウンロードするのではなく、Anypoint Studio に戻り、コンソールのコンテンツでログ記録されたメッセージを確認します。コンソールに 20 件のログエントリのセットが表示され、MuleSoft の公式 Twitter アカウントによる最新のツイートがリストとして表示されます。

    INFO  2018-05-03 04:52:21,953 [[connector_tutorial].HTTP_Listener_Configuration.worker.01] org.mule.api.processor.LoggerMessageProcessor: We live in a time of #digital Darwinism: when digital technology is driving business evolution and success https://t.co/TvzOl4qhg9 #CIO #CEO
    INFO  2018-05-03 04:52:21,954 [[connector_tutorial].HTTP_Listener_Configuration.worker.01] org.mule.api.processor.LoggerMessageProcessor: Companies often pass through 6 sequential phases on their path to #digital transformation https://t.co/TvzOl4qhg9 #CIO #CEO
    INFO  2018-05-03 04:52:21,955 [[connector_tutorial].HTTP_Listener_Configuration.worker.01] org.mule.api.processor.LoggerMessageProcessor: @esfand Hahaha it's our pleasure Esfand!
    INFO  2018-05-03 04:52:21,955 [[connector_tutorial].HTTP_Listener_Configuration.worker.01] org.mule.api.processor.LoggerMessageProcessor: Learn how @CocaCola, @Cisco and @Docusign are executing #digital transformation. Register now! https://t.co/cTNqyKfpXL #CONNECT16 #CIO
    INFO  2018-05-03 04:52:21,956 [[connector_tutorial].HTTP_Listener_Configuration.worker.01] org.mule.api.processor.LoggerMessageProcessor: RT @MuleDev: A tutorial by @PriyobrotoGhos2 on how to use #Java Arrays with Oracle database and #Mule! https://t.co/i7t4N1tVvN
    INFO  2018-05-03 04:52:21,957 [[connector_tutorial].HTTP_Listener_Configuration.worker.01] org.mule.api.processor.LoggerMessageProcessor: The Race Against #Digital Darwinism: The Six Stages of Digital Transformation https://t.co/TvzOl4qhg9 #CIO #CEO
    INFO  2018-05-03 04:52:21,958 [[connector_tutorial].HTTP_Listener_Configuration.worker.01] org.mule.api.processor.LoggerMessageProcessor: Learn how @Audi is executing a 3 year #digital journey and shift in culture  https://t.co/yQTfEBg3h1 (via @CMOAustralia) #CIO #CMO
    INFO  2018-05-03 04:52:21,958 [[connector_tutorial].HTTP_Listener_Configuration.worker.01] org.mule.api.processor.LoggerMessageProcessor: .@Audi has embarked on a 3 year #digital journey to better engage with customers https://t.co/yQTfEBg3h1 (via @CMOAustralia) #CIO #CMO
    INFO  2018-05-03 04:52:21,959 [[connector_tutorial].HTTP_Listener_Configuration.worker.01] org.mule.api.processor.LoggerMessageProcessor: How @Audi Australia built a #digital practice https://t.co/yQTfEBg3h1 (via @CMOAustralia) #CIO #CMO
    INFO  2018-05-03 04:52:21,960 [[connector_tutorial].HTTP_Listener_Configuration.worker.01] org.mule.api.processor.LoggerMessageProcessor: Every company is grappling to cope w/ #digital transformation. This is Enterprise Darwinism. (via @ITProPortal) https://t.co/ot23NDwqOO #CIO
    INFO  2018-05-03 04:52:21,960 [[connector_tutorial].HTTP_Listener_Configuration.worker.01] org.mule.api.processor.LoggerMessageProcessor: Enterprise Darwinism and the centre for enablement (via @ITProPortal) https://t.co/ot23NDwqOO #CIO #digital
    INFO  2018-05-03 04:52:21,961 [[connector_tutorial].HTTP_Listener_Configuration.worker.01] org.mule.api.processor.LoggerMessageProcessor: The most adaptable companies are surviving. This is Enterprise Darwinism. (via @ITProPortal) https://t.co/ot23NDwqOO #CIO #digital
    INFO  2018-05-03 04:52:21,962 [[connector_tutorial].HTTP_Listener_Configuration.worker.01] org.mule.api.processor.LoggerMessageProcessor: Marc @Benioff started as a #Sales Dev Rep at Oracle. Are you ready for a role in tech sales? https://t.co/MDqR98rxRO #RunWithTheMules
    INFO  2018-05-03 04:52:21,962 [[connector_tutorial].HTTP_Listener_Configuration.worker.01] org.mule.api.processor.LoggerMessageProcessor: Two of the most important skills in building a successful career are #sales and people management https://t.co/xmU9NnDb6I #RunWithTheMules
    INFO  2018-05-03 04:52:21,963 [[connector_tutorial].HTTP_Listener_Configuration.worker.01] org.mule.api.processor.LoggerMessageProcessor: RT @MuleDev: Super helpful video tutorial by @LuisKiet displaying how to create a custom connector: https://t.co/UeZaFPK35X
    INFO  2018-05-03 04:52:21,964 [[connector_tutorial].HTTP_Listener_Configuration.worker.01] org.mule.api.processor.LoggerMessageProcessor: RT @Suave_Swappy: @MuleDev Working with RAML files today and MuleSoft just provides the best of environment to integrate and work..luving i…
    INFO  2018-05-03 04:52:21,964 [[connector_tutorial].HTTP_Listener_Configuration.worker.01] org.mule.api.processor.LoggerMessageProcessor: RT @MuleDev: Check out this blog by @jonakerstrom to see some awesome #MuleSoft hacks! https://t.co/MZeGn0KPHD
    INFO  2018-05-03 04:52:21,965 [[connector_tutorial].HTTP_Listener_Configuration.worker.01] org.mule.api.processor.LoggerMessageProcessor: How a Role in Tech #Sales Will Jumpstart Your Career https://t.co/MDqR98rxRO #RunWithTheMules
    INFO  2018-05-03 04:52:21,966 [[connector_tutorial].HTTP_Listener_Configuration.worker.01] org.mule.api.processor.LoggerMessageProcessor: The always-on, always-connected world is fracturing IT under increasing #digital demands https://t.co/S0gSbhu6un #CIO #dev #integration
    INFO  2018-05-03 04:52:21,966 [[connector_tutorial].HTTP_Listener_Configuration.worker.01] org.mule.api.processor.LoggerMessageProcessor: #Digital transformation requires a new IT operating model. Find out how in our new eBook: https://t.co/S0gSbhu6un #CIO #dev #integration
  3. ブラウザで、mulesoft の値を別の Twitter ユーザのスクリーン名に置き換えます。Enter キーを押して、Studio コンソールでログ記録された結果を表示します。

アプリケーションの停止

アプリケーションを停止するには、コンソールの上にある赤い正方形の [Terminate (終了)] アイコンをクリックします。

StopApp

追加課題

コネクタについて理解できたら、理解した内容を追加課題で試してみましょう。ユーザからツイートを取得した後で、最後のツイートを自分自身のデモ Twitter アカウントに投稿するようにアプリケーションを作り直します。

出典を明らかにせずに他人のツイートをコピーするのは失礼にあたるため、リツイートは必ず RT @スクリーン名 : ツイートテキスト​という形にしてください。

サポートが必要な場合は、下記のヒントを参照してください。

ヒントと答え

以下のセクションで、ヘルプと解決策を示します。

ヒント

ヒントの各質問の実装方法については、「答え」セクションを参照してください。

ユーザ名を取得する方法は?

アプリケーションにもう 1 つの Twitter コネクタを追加して、screenName 属性 ([Screen Name (スクリーン名)] 項目) から式を再利用します。

#[message.inboundProperties.'http.query.params'.sname]

または、より信頼性の高い式を使用することもできます。各ツイートにはメタデータが付随しているため、必要な変数 (このメタデータのスクリーン名) にアクセスできます。この場合、スクリーン名は次の式を使用してアクセスできます。

#[message.payload[0].user.screenName]

RT @ユーザ名: が含まれるようにツイートを変更する方法は?

このタスクを実行するにはいくつか方法があり、そのうち 1 つの方法では、新しい変数内でツイートにテキストを追加します。ただし、Set Payload Transformer Reference トランスフォーマを使用すれば近道できます。次のように、複数の部分で構成された式を使用してペイロード全体のコンテンツを置き換えます。

RT @#[message.payload[0].user.screenName]:  #[message.payload[0].text]
actsetp

ツイートを Twitter に投稿する方法は?

[Operation (操作)] 項目を使用して異なるアクションを実行するようにもう 1 つの Twitter コネクタを設定できます。操作を Update Status に設定します。前のステップでペイロードを置き換えた場合、単に #[payload] を状況として使用します。ツイートのテキストを変数に保存した場合は、代わりに変数をコールします。

twitter2

答え

ステップの説明および完全なコードを含めて、答えを確認してください

  1. Set Payload メッセージプロセッサをフローの最後に追加して、そのプロパティエディタをクリックして開きます。

  2. [Value (値)] 項目で、ペイロードを次のように設定します。

    RT @#[message.payload[0].user.screenName]: #[message.payload[0].text]

    このペイロードでは、Get timeline 操作、screenName、ツイートテキストによって返されるオブジェクトで 2 つの変数を使用します。

  3. もう 1 つの Twitter コネクタ​をフローの最後に追加して、そのプロパティエディタをクリックして開きます。

  4. その Connector Configuration を最初の Twitter コネクタと同じグローバル要素に設定します。

  5. その [Operation (操作)] を [Update Status (状況の更新)] に設定し、状況を #[payload] に設定します。

flow extra credit

この例を機能させるには、手動でグローバル Twitter コネクタ (twitter:config 要素) の次の値を設定する必要があります。

  • accessKey

  • accessSecret

  • consumerKey

  • consumerSecret

フローは次のようになります。

<?xml version="1.0" encoding="UTF-8"?>

<mule xmlns:twitter="http://www.mulesoft.org/schema/mule/twitter"
xmlns:http="http://www.mulesoft.org/schema/mule/http"
xmlns="http://www.mulesoft.org/schema/mule/core"
xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
	xmlns:spring="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/core
http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/http
http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/twitter
http://www.mulesoft.org/schema/mule/twitter/current/mule-twitter.xsd">
    <http:listener-config name="HTTP_Listener_Configuration"
host="localhost" port="8081" doc:name="HTTP Listener Configuration"/>
    <twitter:config name="Twitter__Configuration"
accessKey="Access_Key" accessSecret="Access_Secret"
consumerKey="Consumer_Key" consumerSecret="Consumer_Secret"
doc:name="Twitter: Configuration"/>
    <flow name="connector_tutorialFlow">
        <http:listener config-ref="HTTP_Listener_Configuration"
path="gettweets" doc:name="HTTP"/>
        <twitter:get-user-timeline-by-screen-name
config-ref="Twitter__Configuration"
screenName="#[message.inboundProperties.'http.query.params'.sname]"
doc:name="Twitter"/>
        <foreach doc:name="For Each">
            <logger message="#[payload.text]" level="INFO" doc:name="Logger"/>
        </foreach>
        <set-payload value="RT @#[message.payload[0].user.screenName]: #[message.payload[0].text]"
doc:name="Set Payload"/>
        <twitter:update-status config-ref="Twitter__Configuration"
status="#[payload]" doc:name="Twitter"/>
    </flow>
</mule>

関連情報

Was this article helpful?

💙 Thanks for your feedback!