生成フローの例

これらのサンプルプロンプトは、生成フロー機能の使用を開始し、独自のユースケースに合わせてプロンプトを作成する方法を理解するのに役立ちます。

新規ケース通知を実装する

会社には、毎日多数の顧客からの問い合わせやサポート要求が届きます。Salesforce で新規ケースが作成されるたびにメール通知を実装して、顧客に迅速に返答し、タイムリーなケース解決を確保して顧客満足度を高めたいと考えています。

このタスクのフローを生成するには、​「Generate a flow that sends an email when a case is created in Salesforce」​ (Salesforce でケースが作成されたときにメールを送信するフローを生成) などのプロンプトを入力します。

このプロンプトにより、次のような新しいフローの XML コードが生成されます。

<flow name="sendEmailOnNewCaseFlow">
    <salesforce:new-object-listener objectType="Case" doc:name="On New Object" doc:id="8b5dec5e-31a2-4b78-9188-b681891898be" config-ref="Salesforce_Sfdc_config"> (1)
        <scheduling-strategy>
            <fixed-frequency />
        </scheduling-strategy>
    </salesforce:new-object-listener>
    <salesforce:query-result-list doc:name="Query result list" doc:id="79da7485-339c-4ab6-956a-0684210b2ded" config-ref="Salesforce_Sfdc_config"/>
    <salesforce:query-result-stream-by-id doc:name="Query result stream by id" doc:id="bdf16fc8-017f-439b-b1fc-3bff23d881d8" config-ref="Salesforce_Sfdc_config"/>
    <ee:transform doc:name="Transform Message"  >
        <ee:message > (2)
           <ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
payload map {
    CaseNumber: $.CaseNumber,
    Subject: $.Subject,
    Description: $.Description,
    Status: $.Status,
    Priority: $.Priority
}]]></ee:set-payload>
        </ee:message>
    </ee:transform>
    <email:send config-ref="Email_SMTP" fromAddress="user1@domain.com" subject="New Case Created"> (3)
        <email:to-addresses >
            <email:to-address value="user3@domain.com" />
            <email:to-address value="user2@domain.com" />
        </email:to-addresses>
        <email:body contentType="text/html" > (4)
            <email:content ><![CDATA["<h1>New Case Created:</h1>"]]></email:content>
        </email:body>
    </email:send>
</flow>
1 このフローは、Salesforce Connector の ​on-new-object-listener​ トリガーで開始され、新規ケースが作成されるとフローがトリガーされます。
2 新規ケースのペイロードは、Transform コンポーネント内の DataWeave スクリプトを使用して変数で設定されます。
3 メールは、定義済み SMTP 設定を使用して Email Connector の ​Send​ 操作を使用して送信されます。

メールの件名は、​「New Case Created:」​ (新規ケースが作成されました:) に設定され、その後にケースの件名が続きます。

4 メールの本文は HTML 形式に設定され、ケース ID、件名、説明が含まれます。

フローを完了する

生成されたフローを確認してプロジェクトに挿入したら、次の手順を実行します。

  1. ユースケースで使用する対象メールアドレスを入力します。次に例を示します。

    <email:to-address value="demo@gmail.com" />

  2. 対象メール ​${email.username}​ を​設定プロパティファイル​に追加します。

  3. 必要に応じて、​fixed-frequency​ 属性にスケジュール戦略の値を入力します。​スケジューラー​は、設定した値に従って新規ケースをポーリングするフローを開始します。次に例を示します。

    <scheduling-strategy>
        <fixed-frequency frequency="5000" />
    </scheduling-strategy>

    このサンプルフローは、5000 ミリ秒ごとに新規ケースをポーリングするように設定されています。

  4. 組み込みスニペットを使用して、Salesforce インスタンスとメール受信箱の設定を追加します。

次に、完了したフローの例を示します。

<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns="http://www.mulesoft.org/schema/mule/core"
    xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
    xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core"
    xmlns:http="http://www.mulesoft.org/schema/mule/http"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:salesforce="http://www.mulesoft.org/schema/mule/salesforce"
    xmlns:tls="http://www.mulesoft.org/schema/mule/tls"
    xmlns:email="http://www.mulesoft.org/schema/mule/email"
    xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
    http://www.mulesoft.org/schema/mule/ee/core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.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/salesforce http://www.mulesoft.org/schema/mule/salesforce/current/mule-salesforce.xsd
    http://www.mulesoft.org/schema/mule/tls http://www.mulesoft.org/schema/mule/tls/current/mule-tls.xsd
    http://www.mulesoft.org/schema/mule/email http://www.mulesoft.org/schema/mule/email/current/mule-email.xsd">

    <salesforce:sfdc-config name="Salesforce_Config">
        <salesforce:basic-connection username="${salesforce.username}" password="${salesforce.password}" securityToken="${salesforce.token}" />
    </salesforce:sfdc-config>

    <email:smtp-config name="Email_SMTP">
        <email:smtps-connection host="${email.host}" user="${email.username}" password="${email.password}">
            <tls:context>
                <tls:trust-store insecure="true" />
            </tls:context>
        </email:smtps-connection>
    </email:smtp-config>

    <flow name="sendEmailOnNewCase">
        <salesforce:new-object-listener objectType="Case" config-ref="Salesforce_Config">
            <scheduling-strategy>
                <fixed-frequency frequency="5000" />
            </scheduling-strategy>
        </salesforce:new-object-listener>
        <set-variable variableName="caseNumber" value="#[payload.CaseNumber]" doc:name="caseNumberVar" doc:id="vysmen" />
        <set-variable variableName="status" value="#[payload.Status]" doc:name="statusVar" doc:id="yeakie" />
        <email:send config-ref="Email_SMTP" doc:name="Send Email" subject="#['Case ' ++ vars.caseNumber ++ ' was created']">
            <email:to-addresses>
                <email:to-address value="demo@gmail.com" />
            </email:to-addresses>
            <email:body contentType="text/html">
                <email:content>
                    <![CDATA[#['New case ' ++ vars.caseNumber ++ ' was created with status ' ++ vars.status]]]>
                </email:content>
            </email:body>
        </email:send>
    </flow>
</mule>

電話番号を更新する

API コールを使用して電話番号を効率的かつ安全に更新することで、Salesforce システム管理者に合理化されたプロセスを提供します。

このタスクのフローを生成するには、​「Create a flow that listens for an API call and updates the phone number of a Salesforce Account object」​ (API コールをリスンし、Salesforce 取引先オブジェクトの電話番号を更新するフローを作成) などのプロンプトを入力します。

このプロンプトにより、次のような新しいフローの XML コードが生成されます。

<flow name="updatePhoneNumber" doc:id="1">
    <http:listener doc:name="Listener" doc:id="2" config-ref="HTTP_Listener_config" path="/updatePhoneNumber"/> (1)
    <ee:transform doc:name="Set Payload" doc:id="3"> (2)
        <ee:message>
            <ee:set-payload><![CDATA[%dw 2.0
output application/java
---
{
    "accountId": payload.accountId,
    "phoneNumber": payload.phoneNumber
}]]></ee:set-payload>
        </ee:message>
    </ee:transform>
    <salesforce:update doc:name="Update Account" doc:id="4" config-ref="Salesforce_Config" type="Account"> (3)
        <salesforce:records>#[payload]</salesforce:records> (4)
    </salesforce:update>
</flow>
1 このフローは、​/updatePhoneNumber​ パス上の API コールをリスンする HTTP リスナーから始まります。
2 Transform​ コンポーネントでは、更新する取引先 ID と電話番号を指定する ​<ee:transform>​ 操作を使用してペイロードが設定されます。
3 Salesforce Connector の ​Update​ 操作は、Salesforce の取引先オブジェクトを更新するために使用されます。

type​ 属性は ​Account​ に設定され、更新するオブジェクト種別を指定します。

4 ペイロードは、Salesforce で更新するレコードとして渡されます。

フローを完了する

このフローを実行するには、組み込みスニペットを使用して Salesforce インスタンスの設定を追加します。組み込みスニペットについての詳細は、コードスニペットの操作を参照してください。

次に、完了したフローの例を示します。

<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns="http://www.mulesoft.org/schema/mule/core"
      xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
      xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core"
      xmlns:http="http://www.mulesoft.org/schema/mule/http"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:salesforce="http://www.mulesoft.org/schema/mule/salesforce"
      xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
                          http://www.mulesoft.org/schema/mule/ee/core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.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/salesforce http://www.mulesoft.org/schema/mule/salesforce/current/mule-salesforce.xsd">
    <http:listener-config name="HTTP_Listener_config">
        <http:listener-connection host="0.0.0.0" port="8081" />
    </http:listener-config>
    <salesforce:sfdc-config name="Salesforce_Config">
        <salesforce:basic-connection username="${salesforce.username}" password="${salesforce.password}" securityToken="${salesforce.token}" />
    </salesforce:sfdc-config>
    <flow name="updateAccountPhone">
        <http:listener config-ref="HTTP_Listener_config" doc:name="Listener" path="/updateAccountPhone" allowedMethods="POST" doc:id="listener" />
        <set-variable variableName="accountIdVar" value="#[payload.accountId]" mimeType="application/json" doc:name="Set Account ID var" doc:id="set-variable-accountId" />
        <set-variable variableName="phoneVar" value="#[payload.phoneNumber]" mimeType="application/json" doc:name="Set Phone var" doc:id="set-variable-phone" />
        <salesforce:update type="Account" config-ref="Salesforce_Config" doc:name="Update Salesforce Account" doc:id="update-account">
            <salesforce:records>
                <![CDATA[#[output application/json ---
                [{
                    "Id": vars.accountIdVar,
                    "Phone": vars.phoneVar
                }]]]]>
            </salesforce:records>
        </salesforce:update>
        <logger doc:name="Logger" message="Phone number updated for Account with Id: #[vars.accountIdVar]" doc:id="logger" />
    </flow>
</mule>

取引先オブジェクトを同期する

このフローにより、Salesforce とデータベース間のリアルタイム更新が可能になり、Salesforce とデータベースの両方でデータが常に最新かつ正確であることが保証されます。Salesforce で電話項目が変更された直後に、その項目はデータベース内ですぐに更新されます。その逆も同様です。

このタスクのフローを生成するには、​「Create a flow that syncs the phone field of account objects between a Salesforce org and a database」​ (Salesforce 組織とデータベース間で取引先オブジェクトの電話項目を同期するフローを作成) などのプロンプトを入力します。

このプロンプトにより、次のような新しいフローの XML コードが生成されます。

<flow name="syncAccountPhone" doc:id="1">
    <http:listener doc:name="Listener" doc:id="2" config-ref="HTTP_Listener_config" path="/syncAccountPhone" allowedMethods="POST" /> (1)
    <set-variable variableName="accountId" value="#[payload.accountId]" doc:name="Set Account ID" doc:id="3" /> (2)
    <set-variable variableName="phone" value="#[payload.phone]" doc:name="Set Phone" doc:id="4" /> (3)
    <db:select doc:name="Select Account from Database" doc:id="5" config-ref="Database_Config">
        <db:sql><![CDATA[SELECT * FROM Account WHERE Id = :accountId]]></db:sql> (4)
        <db:input-parameters><![CDATA[#[{
            "accountId": vars.accountId
        }]]]></db:input-parameters>
    </db:select>
    <ee:transform doc:name="Create Update Data" doc:id="6"> (5)
        <ee:message>
            <ee:set-payload><![CDATA[%dw 2.0
output application/java
---
{
    "Id": vars.accountId,
    "Phone": vars.phone
}]]></ee:set-payload>
        </ee:message>
    </ee:transform>
    <salesforce:update config-ref="Salesforce_Config" doc:name="Update Salesforce Account" doc:id="7" type="Account">
        <salesforce:records><![CDATA[#[payload]]]></salesforce:records>
    </salesforce:update> (6)
    <db:update doc:name="Update Account in Database" doc:id="8" config-ref="Database_Config">
        <db:sql><![CDATA[UPDATE Account SET Phone = :phone WHERE Id = :accountId]]></db:sql> (7)
        <db:input-parameters><![CDATA[#[{
            "accountId": vars.accountId,
            "phone": vars.phone
        }]]]></db:input-parameters>
    </db:update>
    <set-payload value="#['Phone field synced successfully']" doc:name="Set Payload" doc:id="9" /> (8)
</flow>
1 /syncAccountPhone​ パスで POST 要求をリスンするように HTTP ​Listener​ 操作を設定します。
2 ペイロードから取引先 ID を抽出し、​accountId​ という名前の変数に保存します。
3 ペイロードから電話番号を抽出し、​phone​ という名前の変数に保存します。
4 Database Connector の ​Select​ 操作は、取引先 ID に基づいてデータベースから取引先レコードを取得します。
5 DataWeave の ​Transform​ 操作を使用して、Salesforce 取引先オブジェクトの更新データを作成します。
6 Salesforce 取引先を更新するには、Salesforce Connector の ​Update​ 操作を使用します。
7 Database Connector の ​Update​ 操作を使用して、データベース内の取引先情報も更新されます。
8 ペイロードは、同期が成功したことを示すために ​[Phone field synced successfully (電話項目が正常に同期されました)]​ に設定されます。

フローを完了する

生成されたフローを確認してプロジェクトに挿入したら、次の手順を実行します。

  1. MySQL データベースの設定と一致するようにデータベーステーブルと項目の名前を更新します。

  2. このフローを実行するには、組み込みスニペットを使用して Salesforce インスタンスの設定を追加します。

次に、完了したフローの例を示します。

<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns="http://www.mulesoft.org/schema/mule/core"
      xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
      xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core"
      xmlns:http="http://www.mulesoft.org/schema/mule/http"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:salesforce="http://www.mulesoft.org/schema/mule/salesforce"
      xmlns:db="http://www.mulesoft.org/schema/mule/db"
      xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
                          http://www.mulesoft.org/schema/mule/ee/core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd
                          http://www.mulesoft.org/schema/mule/salesforce http://www.mulesoft.org/schema/mule/salesforce/current/mule-salesforce.xsd
                          http://www.mulesoft.org/schema/mule/db http://www.mulesoft.org/schema/mule/db/current/mule-db.xsd">

    <salesforce:sfdc-config name="Salesforce_Config">
        <salesforce:basic-connection username="${salesforce.username}" password="${salesforce.password}" securityToken="${salesforce.token}" />
    </salesforce:sfdc-config>

    <db:config name="Mysql_Database_Config">
        <db:my-sql-connection host="${mysql.host}" port="${mysql.port}" user="${mysql.username}" password="${mysql.password}" database="${mysql.database}" />
    </db:config>

    <flow name="SyncAccountPhoneToDatabase">
        <salesforce:modified-object-listener objectType="Account" config-ref="Salesforce_Config" doc:name="On Modified Object" doc:id="listener">
            <scheduling-strategy>
                <fixed-frequency />
            </scheduling-strategy>
        </salesforce:modified-object-listener>

        <ee:transform doc:name="Transform Message" doc:id="transform">
            <ee:message>
                <ee:set-payload>
                    <![CDATA[%dw 2.0
                    output application/json
                    ---
                    {
                        Id: payload.Id,
                        Phone: payload.Phone
                    }]]>
                </ee:set-payload>
            </ee:message>
        </ee:transform>

        <db:update doc:name="Update Phone in Database" doc:id="update">
            <db:sql>
                <![CDATA[UPDATE Account SET Phone = :Phone WHERE Id = :Id]]>
            </db:sql>
            <db:input-parameters>
                <![CDATA[#[{
                    Phone: payload.Phone,
                    Id: payload.Id
                }]]]>
            </db:input-parameters>
        </db:update>
    </flow>
</mule>

新規レコード通知を自動化する

新しいデータベースレコードが更新されたときにユーザーへのメール通知を自動化すると、手動による介入が最小限に抑えられ、効率が向上し、エラーや遅延の可能性が減ります。

このタスクのフローを生成するには、​「Generate a flow to send an email when a record is created in the database」​ (データベースにレコードが作成されたときにメールを送信するフローを生成) などのプロンプトを入力します。

これにより、次のような新しいフローの XML コードが生成されます。

<flow name="sendEmailFlow">
    <db:listener table="record" doc:name="On Table Row" doc:id="dbListener" watermarkColumn="CREATION_DATE">
        <scheduling-strategy> (2)
            <fixed-frequency frequency="1" timeUnit="SECONDS"/>
        </scheduling-strategy>
    </db:listener> (1)
    <set-variable variableName="record" value="#[payload]" doc:name="Set Variable" doc:id="setVariable"/> (3)
    <email:send config-ref="Email_SMTP" fromAddress="sender@example.com" subject="New Record Created"> (4)
        <email:to-addresses>
            <email:to-address value="recipient@example.com"/> (5)
        </email:to-addresses>
        <email:body contentType="text/plain">
            <email:content><![CDATA[New record created with ID: #[vars.record.id]]]></email:content>
        </email:body>
    </email:send>
</flow>
1 このフローは、データベース ​record​ テーブル内の新規レコードをリスンする Database Connector の ​Listener​ コンポーネントから始まります。
2 スケジュール戦略は、1 秒ごとに一定間隔でフローをトリガーするように設定されています。
3 リスナーのペイロードは、​Set Variable​ 操作を使用して ​record​ という名前の変数に保存されます。
4 メールは、​Email Send​ コンポーネントを使用してアドレス ​sender@example.com​ から送信されます。
5 メールはアドレス ​recipient@example.com​ に送信されます。

フローを完了する

生成されたフローを確認してプロジェクトに挿入したら、次の手順を実行します。

  1. 特定のユースケースに合わせて、送信者メールアドレス、受信者メールアドレス、メール本文を更新します。

  2. フローが新規レコードをリスンするデータベーステーブルに対応するようにデータベーステーブル名を更新します。

  3. Database Connector の ​Listener​ の ​watermarkColumn​ を、新規レコードを示すために使用されるデータベース列に更新します。

    この列から取得された値を使用して次のポーリングの内容が絞り込まれるため、より大きなウォーターマーク値を持つ行のみが処理されます。

  4. このフローを実行するには、組み込みスニペットを使用してデータベースとメール受信箱の設定を追加します。

次に、完了したフローの例を示します。

<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns="http://www.mulesoft.org/schema/mule/core"
    xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
    xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core"
    xmlns:http="http://www.mulesoft.org/schema/mule/http"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:salesforce="http://www.mulesoft.org/schema/mule/salesforce"
    xmlns:db="http://www.mulesoft.org/schema/mule/db"
    xmlns:email="http://www.mulesoft.org/schema/mule/email"
    xmlns:tls="http://www.mulesoft.org/schema/mule/tls"
    xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
    http://www.mulesoft.org/schema/mule/ee/core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd
    http://www.mulesoft.org/schema/mule/db http://www.mulesoft.org/schema/mule/db/current/mule-db.xsd
    http://www.mulesoft.org/schema/mule/email http://www.mulesoft.org/schema/mule/email/current/mule-email.xsd
    http://www.mulesoft.org/schema/mule/tls http://www.mulesoft.org/schema/mule/tls/current/mule-tls.xsd">

    <db:config name="Mysql_Database_Config">
        <db:my-sql-connection host="${mysql.host}" port="${mysql.port}" user="${mysql.username}" password="${mysql.password}" database="${mysql.database}" />
    </db:config>

    <email:smtp-config name="Email_SMTP">
        <email:smtps-connection host="${email.host}" user="${email.username}" password="${email.password}">
            <tls:context>
                <tls:trust-store insecure="true" />
            </tls:context>
        </email:smtps-connection>
    </email:smtp-config>

    <flow name="sendEmailFlow">
        <db:listener table="records" doc:name="On Table Row" doc:id="dbListener" watermarkColumn="CREATION_DATE" config-ref="Mysql_Database_Config">
            <scheduling-strategy>
                <fixed-frequency frequency="1" timeUnit="SECONDS" />
            </scheduling-strategy>
        </db:listener>
        <set-variable variableName="record" value="#[payload]" doc:name="Set Variable" doc:id="setVariable" />
        <email:send config-ref="Email_SMTP" fromAddress="sender@example.com" subject="New Record Created">
            <email:to-addresses>
                <email:to-address value="recipient@example.com" />
            </email:to-addresses>
            <email:body contentType="text/plain">
                <email:content>
                    <![CDATA[New record created with ID #[vars.record.id]]]>
                </email:content>
            </email:body>
        </email:send>
    </flow>
</mule>