Joule Studio というサービスがリリースされてから約3ヶ月が経ちました。すでに SAP Tutorial にもいくつかコンテンツが公開されており、少しずつ盛り上がりを見せつつあります。一方で、「Joule Studio でどこまでできるのか?」という点は、まだ気になっている方も多いのではないでしょうか。
Tutorial の1つに 「Build Your First Joule Skill in Joule Studio」 というものがあります。以下のように、S/4 のモックからデータを参照する Action 、バッジを作成する Action を開発し、それらを利用した Joule Skill を開発する内容です。
In this tutorial, you will create an action project for accessing business partner information from an OData service representing an SAP system. You will also create an action project for creating a badge request via an OData service representing a third-party system.
非常に勉強になる Tutorial なのですが、同僚から「例えば、複数のユーザを一気にバッジリクエストしたい場合はどうするの?」という質問をもらいました。確かに、このままの構成だと1ユーザずつ Joule にリクエストしないといけません。
それでは、複数ユーザ分をまとめてバッジリクエストできるようにしてみましょう。
ただし、ここで1つ問題があります。Joule Skill には、SBPA の Process でいうところの 「Go to Step」 や、Automation でいうところの 「forEach」 に相当するような、ループ制御の機能がありません。そのため、BusinessPartner の GET と Badge Create の POST を Joule Skill の中だけで繰り返し実行するのは難しい状況です。
そこで今回は、Automation を組み合わせる というアプローチを取ってみます。以下が完成形です。
1. Joule Skill の仮組みを作成
Joule Skill からは Automation(および Process)を呼び出すことができます。今回は、Business Partner ID のリストを Automation に渡して処理させる構成にします。 ただし、Joule Skill 内における Automation への Input には Data Type の設定がなく、 String 型のみ です。
そのため、Joule 側では “AAAA, BBBB” のようにカンマ区切りの文字列として ID を入力してもらい、Automation 内で String から List of String に変換します。
Joule Skill の Input パラメータ名:BusinessPartnerListDescription:a list of BusinessPartner ID like “0001, 0002”
といった形で定義しておきます。
(元ネタの Tutorial では他にもいくつかパラメータを設定していますが、本記事では割愛します。)
2. Automation の作成
次に、Automation を作成します。一度 Joule Skill の開発画面から離れて、SAP Build Process Automation 側で Automation プロジェクトを作成します。
※ まだ Desktop Agent をセットアップしていない場合は、以下の URL を参考にセットアップしてください:
Install and Set Up Desktop Agent 3
最初に、Custom Script を使って String から List への変換を実装します。イメージは以下のような JavaScript 関数です。
function parseIds(rawIds) {
if (typeof rawIds !== “string”) {
throw new Error(“rawIds must be a string like ‘AAA, BBBB’.”);
}
const ids = rawIds
.split(“,”)
.map(s => s.trim())
.filter(Boolean);
if (ids.length === 0) {
throw new Error(“No valid IDs found. Expected something like ‘AAA, BBBB’.”);
}
return ids;
}
こうすることで、後続ステップで forEach を使って ID ごとの処理を実装できるようになります。
続いて、右上の Project Properties から Manage Dependencies → Add an Action Project Dependency を選択し、Tutorial で作成した Business Partner の GET と Badge Create の POST の Action Project を依存関係として追加します。
あとは、以下のようにフローを組みます。
Input 文字列を String to List で List に変換forEach で ID を1件ずつ取り出すGet data from BP API の Action を呼び出す結果を使って Create Badge の Action を呼び出す
最後に、Project Properties(右上の歯車マーク) → Attributes から、Agent セットアップ時に設定した Agent の属性を紐づけておきます。
準備ができたら、Release → Deploy を実行します。その後、Joule Skill から利用できるように、Lobby の該当バージョンで Publish to Library をクリックして公開します。
3. Automation の導入(Joule Skill 側)
再度 Joule Skill の画面に戻り、Run Automation を追加します。まずは、Browse All Automations から、先ほど作成した Automation を選択します。
Input パラメータ BusinessPartnerList を Automation の Input にマッピングします。
後続のステップに Send Message ノードを追加します。
これでフローが完成したら、Joule Skill 側でも Release → Deploy を実施します。
4. テスト
先ほども少し触れましたが、Automation には Agent が必要です(ここでいう Agent は、いわゆる AI エージェントではありません、念のため…)。
Joule Skill 内で Automation を実行する場合も、どの Agent を使うか を指定しておく必要があります。
Automation および Joule Skill をデプロイした環境に、Control Tower → Environments からアクセスします。その上で、Agent Management にて、対象の Agent を追加します。
ローカルの PC で動いている Desktop Agent の設定で、Agent Mode が Unattended になっていることを確認します。
一番右側のタブに「Joule」とあるので、作成した Joule Skill のバージョンを確認し、Launch ボタンから Joule にアクセスします。
実際にプロンプトを入力して試してみます。
それぞれの ID について Badge リクエストが登録されていることが確認できます。
やっていること自体は、Automation 側で forEach によるループを回しているだけなので、1件のリクエストにも複数件のリクエストにも対応できる構成になっています。
将来的にファイルアップロードが Joule Skill でサポートされれば、ファイルを元にさらに多くのリクエストを一括処理する、といったことも期待できそうです。
5. 最後に
いかがでしたでしょうか。既存の SAP Build Process Automation(SBPA)の知識をほとんどそのまま活かしながら、Joule Skill を拡張していくことができます。
一方で、
Go to Step のような柔軟なフロー制御が Joule Skill 側にないことAutomation の Output を Joule Skill の変数に直接マッピングできないこと (Help には Output タブがあると記載されていますが、少なくとも私の環境ではまだ確認できていません)
など、現時点では少し物足りない部分があるのも事実です。 とはいえ、Joule Studio と SBPA を組み合わせることでできることは、今後さらに広がっていくはずです。これからのアップデートがとても楽しみです!
CoE Japan チームでは、Joule Studio だけでなく、様々な製品を対象に PoC やユースケース検証を実施しています。技術検証やアーキテクチャ検討、ベストプラクティスのご紹介などを通じて、お客様・パートナーの皆さまの SAP 活用を技術面からご支援しています。
Joule や SAP Build 周りで「こういうことはできる?」といったお悩みがあれば、ぜひ CoE Japan チームまでお気軽にご相談ください。
Joule Studio というサービスがリリースされてから約3ヶ月が経ちました。すでに SAP Tutorial にもいくつかコンテンツが公開されており、少しずつ盛り上がりを見せつつあります。一方で、「Joule Studio でどこまでできるのか?」という点は、まだ気になっている方も多いのではないでしょうか。Tutorial の1つに 「Build Your First Joule Skill in Joule Studio」 というものがあります。以下のように、S/4 のモックからデータを参照する Action 、バッジを作成する Action を開発し、それらを利用した Joule Skill を開発する内容です。In this tutorial, you will create an action project for accessing business partner information from an OData service representing an SAP system. You will also create an action project for creating a badge request via an OData service representing a third-party system. 非常に勉強になる Tutorial なのですが、同僚から「例えば、複数のユーザを一気にバッジリクエストしたい場合はどうするの?」という質問をもらいました。確かに、このままの構成だと1ユーザずつ Joule にリクエストしないといけません。それでは、複数ユーザ分をまとめてバッジリクエストできるようにしてみましょう。ただし、ここで1つ問題があります。Joule Skill には、SBPA の Process でいうところの 「Go to Step」 や、Automation でいうところの 「forEach」 に相当するような、ループ制御の機能がありません。そのため、BusinessPartner の GET と Badge Create の POST を Joule Skill の中だけで繰り返し実行するのは難しい状況です。そこで今回は、Automation を組み合わせる というアプローチを取ってみます。以下が完成形です。 1. Joule Skill の仮組みを作成Joule Skill からは Automation(および Process)を呼び出すことができます。今回は、Business Partner ID のリストを Automation に渡して処理させる構成にします。 ただし、Joule Skill 内における Automation への Input には Data Type の設定がなく、 String 型のみ です。そのため、Joule 側では “AAAA, BBBB” のようにカンマ区切りの文字列として ID を入力してもらい、Automation 内で String から List of String に変換します。Joule Skill の Input パラメータ名:BusinessPartnerListDescription:a list of BusinessPartner ID like “0001, 0002″といった形で定義しておきます。(元ネタの Tutorial では他にもいくつかパラメータを設定していますが、本記事では割愛します。) 2. Automation の作成次に、Automation を作成します。一度 Joule Skill の開発画面から離れて、SAP Build Process Automation 側で Automation プロジェクトを作成します。※ まだ Desktop Agent をセットアップしていない場合は、以下の URL を参考にセットアップしてください:Install and Set Up Desktop Agent 3最初に、Custom Script を使って String から List への変換を実装します。イメージは以下のような JavaScript 関数です。function parseIds(rawIds) {
if (typeof rawIds !== “string”) {
throw new Error(“rawIds must be a string like ‘AAA, BBBB’.”);
}
const ids = rawIds
.split(“,”)
.map(s => s.trim())
.filter(Boolean);
if (ids.length === 0) {
throw new Error(“No valid IDs found. Expected something like ‘AAA, BBBB’.”);
}
return ids;
}こうすることで、後続ステップで forEach を使って ID ごとの処理を実装できるようになります。続いて、右上の Project Properties から Manage Dependencies → Add an Action Project Dependency を選択し、Tutorial で作成した Business Partner の GET と Badge Create の POST の Action Project を依存関係として追加します。あとは、以下のようにフローを組みます。Input 文字列を String to List で List に変換forEach で ID を1件ずつ取り出すGet data from BP API の Action を呼び出す結果を使って Create Badge の Action を呼び出す最後に、Project Properties(右上の歯車マーク) → Attributes から、Agent セットアップ時に設定した Agent の属性を紐づけておきます。準備ができたら、Release → Deploy を実行します。その後、Joule Skill から利用できるように、Lobby の該当バージョンで Publish to Library をクリックして公開します。 3. Automation の導入(Joule Skill 側)再度 Joule Skill の画面に戻り、Run Automation を追加します。まずは、Browse All Automations から、先ほど作成した Automation を選択します。Input パラメータ BusinessPartnerList を Automation の Input にマッピングします。後続のステップに Send Message ノードを追加します。これでフローが完成したら、Joule Skill 側でも Release → Deploy を実施します。 4. テスト先ほども少し触れましたが、Automation には Agent が必要です(ここでいう Agent は、いわゆる AI エージェントではありません、念のため…)。Joule Skill 内で Automation を実行する場合も、どの Agent を使うか を指定しておく必要があります。Automation および Joule Skill をデプロイした環境に、Control Tower → Environments からアクセスします。その上で、Agent Management にて、対象の Agent を追加します。ローカルの PC で動いている Desktop Agent の設定で、Agent Mode が Unattended になっていることを確認します。一番右側のタブに「Joule」とあるので、作成した Joule Skill のバージョンを確認し、Launch ボタンから Joule にアクセスします。実際にプロンプトを入力して試してみます。それぞれの ID について Badge リクエストが登録されていることが確認できます。やっていること自体は、Automation 側で forEach によるループを回しているだけなので、1件のリクエストにも複数件のリクエストにも対応できる構成になっています。将来的にファイルアップロードが Joule Skill でサポートされれば、ファイルを元にさらに多くのリクエストを一括処理する、といったことも期待できそうです。 5. 最後にいかがでしたでしょうか。既存の SAP Build Process Automation(SBPA)の知識をほとんどそのまま活かしながら、Joule Skill を拡張していくことができます。一方で、Go to Step のような柔軟なフロー制御が Joule Skill 側にないことAutomation の Output を Joule Skill の変数に直接マッピングできないこと (Help には Output タブがあると記載されていますが、少なくとも私の環境ではまだ確認できていません)など、現時点では少し物足りない部分があるのも事実です。 とはいえ、Joule Studio と SBPA を組み合わせることでできることは、今後さらに広がっていくはずです。これからのアップデートがとても楽しみです! CoE Japan チームでは、Joule Studio だけでなく、様々な製品を対象に PoC やユースケース検証を実施しています。技術検証やアーキテクチャ検討、ベストプラクティスのご紹介などを通じて、お客様・パートナーの皆さまの SAP 活用を技術面からご支援しています。Joule や SAP Build 周りで「こういうことはできる?」といったお悩みがあれば、ぜひ CoE Japan チームまでお気軽にご相談ください。 Read More Technology Blog Posts by SAP articles
#SAP
#SAPTechnologyblog