0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

WorkatoAdvent Calendar 2021

Day 1

Workato:Workato REST APIとSlackを組み合わせてアクティブレシピの管理を効率化する

Last updated at Posted at 2021-11-30

はじめに

Workatoにおける既知の問題として、現在有効なレシピ(アクティブレシピ)とその数は分かるが、どのレシピが課金対象(Callable Recipe以外)であるか一目で分からないという問題があります。

Workatoでは「Projects」で現在有効なレシピ(アクティブレシピ)をの数やその内容を確認することが出来ます。しかし、ここで確認できるものはスタートしているレシピの総数であり、課金対象・非課金対象のレシピの区別はされていません。
image.png

目視でCallable Recipeを数えて課金対象と非課金対象のレシピを把握する方法もありますが、Workato導入当初のようなレシピの少ない状況であれば、まずはそれで事足りるとは思いますが、運用が進むにつれ、レシピの数が多くなれば、目視でCallable Recipeを数える方法で状況把握する方法は現実的ではなくなります。何より、目視で数える方法は効率的とはいえません。

また、意図せずスタートするレシピにも注意が必要です。一部のコネクターには、レシピが停止していても、トリガーが呼び出されることで自動的にレシピをスタートされるものが存在します。これにより、いつの間にか課金対象のレシピが増えた、課金対象のレシピが増えたことで契約レシピ数を超えてしまった等の問題に遭遇することがあります。

※例えば、Workbot for Slackの場合、Workbotのコマンドが呼び出されると、停止しているレシピであっても、そのレシピにエラーが無ければレシピが勝手にスタートします。

それから、課金対象レシピを含め、アクティブレシピの状況を把握するために毎回Workatoを開くのも非効率であるといえます。可能であれば、Slack等のコミュニケーションツールを利用して、毎日自動的に知らせてほしいものです。

ということで、今回はWorkatoのアクティブレシピの管理を効率化するためのレシピを作成していきます。

Workato REST API

WorkatoにはWorkato自身を操作するためのREST APIが用意されています。本REST APIを利用することで、例えば現在動作中のレシピの一覧(リスト)や、各レシピのトリガーを含めた詳細情報を確認することができます。つまり、REST APIを利用することで、どのレシピが課金対象になり、どのレシピが課金対象外となるかを確認することもできます。

Workato REST APIの詳細は、以下を参照ください。

Workato API Keyの取得

Workato REST APIを利用するには、まずWorkato API Keyの取得が必要です。
API Keyは、Workatoを開き、「Setting」-「API Key」の順にクリックすることで確認することができます。

image.png

コネクションの作成

最初に、HTTPコネクターのコネクションを新たに作成します。

image.png

次に、コネクションの設定を行います。

image.png

フィールド
Connection name 任意の名称
Location 任意のプロジェクトあるいはフォルダ
Authentication type Header auth
Header authentication x-user-token: <WorkatoのAPI Key>
x-user-email: <WorkatoワークスペースのAcccount email>
Use custom TLS/SSL certificate settings No
Is this app in a private network? No gateway

レシピの作成

次のようなレシピを作成します。

image.png

上記レシピの作成手順について、順を追って説明します。

【1】レシピの作成に必要な情報の取得(準備作業)

image.png

1.トリガーとアクションの設定

トリガーには Scheduler by Workato コネクターを指定し、設定はデフォルトのままとします。
アクションには HTTP コネクターを指定し、先に作成したコネクションを指定のうえ、次の通り設定します。なお、Requestのみ設定し、Responseは未設定のままとします。(Responseは後ほど設定します)

Request name

任意の名称

Request

Method

GET

Request URL

https://www.workato.com/api/recipes/

Request URL parameters

image.png

フィールド
per_page 1
running true
adapter_names_any true
Request headers

デフォルトのまま

2.レシピのテスト実行とJSONテキストの取得

以上の設定が完了したら、画面右上の「Test」をクリックし、レシピのテストを行います。
image.png

テストが完了し、成功すると「Successful」と表示されます。
image.png

また、HTTPコネクターをクリックし、「Output」タブをクリックすると、レスポンスを確認することができます。
image.png

レスポンス内の「Body」の値をコピーします。
image.png

3.Response schemaの設定

レシピ編集画面へ戻り、Response schemaの「Use JSON」をクリックします。
image.png

JSON sampleに先ほどコピーしたBodyの内容を貼付し、「Next」をクリックします。
image.png

内容を確認のうえ、問題なければ「Generate schema」をクリックします。
image.png

以下の通り、Response schemaが自動で生成されます。
image.png

 

【2】変数・配列の定義

1.List by Workatoコネクターを追加します。

「Create repeat helper list」を選択します。Sizeは10 とします。
image.png

2.Variables by Workatoコネクターで変数を追加します。

「no_results」変数(Boolean型)を定義します。デフォルト値は No とします。
image.png

3.Variables by Workatoコネクターでリストを追加します。

「billable_recipes」と「non_billable_recipes」リストを追加します。List item schemaには、いずれも「recipe_id」(String型)と「recipe_name」(String型)を定義します。
image.png

【3】レシピリストの取得と処理

1.ループ処理でレシピのリストを取得します。

ループ処理に使用するリストは、【2】の1で追加したList by Workatoコネクターの出力値を使用します。
image.png

2.HTTPコネクターを編集します。

HTTPコネクターは先に追加したものを使用します。Request URL parametersの「per_page」を 100 に変更し、「page」を追加したうえで Step 6の Seq noをセットします。
image.png

3.HTTPコネクターの戻り値が0件であった場合の処理を定義します。

戻り値の件数が0件であった場合は、「no_results」の値を Yes にします。
image.png

Ifブロックの条件に指定するList sizeは、Step 8の値を使用します。
image.png

4.HTTPコネクターの戻り値が0件以外の場合の処理を定義します。

Ifブロックの条件に指定するList sizeは、上記3と同様、Step 8の値を使用します。
image.png

5.取得したレシピのリストをループ処理します。

image.png

ループに使用するリストは、Step 8の Items を使用します。

image.png

6.Callable recipe と Callable recipe以外のリストを作成します。

Ifブロックを追加し、Callable Recipeでない場合と、Callable Recipeである場合の条件を定義します。
Callable Recipeがトリガーの場合、 「Trigger application」の値は workato_serviceになりますので、 workato_service であるか、そうでないかでCallable Recipeである・ないの判別が可能です。
image.png

それぞれの条件にVariables by Workatoコネクターを追加し、「Add item to list」アクションを選択し、List nameより該当するリストを選択のうえ、各リストに値をセットします。「Recipe ID」と「Recipe name」の各値は、Step 12の値を使用します。
image.png

【4】Workbot for Slackコネクターの追加

image.png

1.課金対象アクティブレシピのSlack通知のためにWorkbot for Slackコネクターを追加し、次の通り定義します。

※記載のない項目は、デフォルトのままとします。

項目
Channel name/DM 通知先のチャンネル
Notification text 「課金対象のアクティブレシピ」など
Multiple attachments Yes
Attachments source list Step4の billable_recipes
Attachment color Warning など

Attachment fields

Field Title Value
#1 ID Step4の Recipe ID
#2 Name Step4の Recipe name
#3 URL https://app.workato.com/recipe/ Step4の Recipe ID

2.課金対象外アクティブレシピのSlack通知のためにWorkbot for Slackコネクターを追加し、次の通り定義します。

※記載のない項目は、デフォルトのままとします。

項目
Channel name/DM 通知先のチャンネル
Notification text 「課金対象のアクティブレシピ」など
Multiple attachments Yes
Attachments source list Step5の non_billable_recipes
Attachment color good など

Attachment fields

Field Title Value
#1 ID Step5の Recipe ID
#2 Name Step5の Recipe name
#3 URL https://app.workato.com/recipe/ Step5の Recipe ID

実行例

上で作成したレシピを実行すると、次のようにSlackへ通知されます。これにより課金対象のアクティブレシピと課金対象外のアクティブレシピを一目で判断することができます。また、Slackへ定期的に通知させることで、Workatoの画面を見ることなく、アクティブレシピの状況を把握できるようになります。

image.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?