はじめに
こんにちは。TIGの町田です。
Zuora Central Platform(Zuora社が提供するサブスクリプションプラットフォーム名の正式名称/以降 Zuora と記載いたします)の連載の第4回はWorkflowです。
Workflowは前回の記事で説明した通知機能と同じく、業務フローを設計する際に必ず理解する必要があります。また、Workflowは通知機能との組み合わせることが多いです。
他のZuora記事はこちらを参照ください。
目次
概要
Workflowの概要はWorkflow - Zuoraから引用します。
Zuora Workflow is a Zuora product for designing, configuring, and deploying business workflows in Zuora. With Workflow, you can automate a set of business processes that otherwise need to be performed manually and repetitively.
訳:Zuoraワークフローは、Zuoraでビジネスワークフローを設計、構成、および展開するためのZuora製品です。ワークフローを使用すると、手動で繰り返し実行する必要がある一連のビジネスプロセスを自動化できます。
とあるように、Zuoraに実際の業務に合わせた制御を加えるために必須の機能です。業務プロセスの自動化や業務フローの設計には必ずWorkflowを利用することになるでしょう。
Workflow開発方法
- Zuoraログイン後のサイドメニューにて
プラットフォーム
>ワークフロー
を選択。 WorkflowのTOP画面であるOVERVIEW
タブに遷移する。ここではWorkflowの実行状況やサマリを確認できる。 - WORKFLOWタブをクリックで、Workflow一覧画面に遷移する。右上の表示切替ボタンをクリックするとリスト形式の一覧にできます。編集したいWorkflowの
Edit
ボタンをクリックすることで、Workflow編集画面へと遷移する。 - Workflow編集画面: WorkflowはTaskと呼ばれる個々の機能を繋げ合わせることで完成する。
- ▶ボタンがあるTaskが開始Taskとなっている
+
ボタンをクリックすることで後続Taskを追加することができる。 - 開始Task移行のTask
🖊
ボタン:Taskの設定・編集x
ボタン:Taskの削除+
ボタン:後続Taskを追加
- Taskの追加: 各Taskの
+
をクリック後、Task成功時はOn Success
、Taskエラー時はOn Failure
を選択して追加したいTaskを選択する。各Taskの機能についてはWorkflow - Zuoraを参照。
Workflow設定
- Workflowの設定にはWorkflow全体の設定を、Workflowごとの設定がある
- Workflow全体設定:
SETTINGS
タブをクリック: Workflowのメンテナンスをするためのユーティリティ、Workflow開発ユーザの設定、外部SMTPサーバの設定が可能。初期設定以外で触ることはほとんどないと思われる。 - Workflowごとの設定:各Workflow編集画面で
SETTINGS
タブをクリック - Workflow Information: Workflow名、説明の設定
- Workflow Triggers: Workflowを実行する方法を選択
- On Demand: チェックするとWorkflow一覧画面や編集画面から実行することができるようになる。
- Callout: チェックするとAPIによるWorkflowの実行ができるようになる。
- Scheduled: Cron形式でスケジュール実行の設定ができる。
- Workflow Email Notifications: メールアドレスを設定することで、Workflow成功時、エラー時等にメールによる通知ができる。複数アドレス可。
- Execution Priority: Workflowの優先度を設定。同時に実行中のWorkflowがあった場合には、優先度が高いWorkflowが優先して実行される。
- Workflow Configuration: 設定不可
- Callout Config: WorkflowをコールアウトAPIで実行する場合の情報について確認できる。
- Mapped Input Fields and Params: Workflow内で利用可能な変数はここで定義する。
コールアウトAPIによって呼ばれた際に、ここで設定したパラメータをリクエストBodyに設定することで値の受け渡しができる。
- Workflow全体設定:
Workflow実行方法
Workflowの実行方法は以下3通りです。
Workflow設定のWorkflowごとの設定のWorkflow Triggersにてチェックした実行方法が有効となります。
(1)オンデマンド実行
- Workflow一覧画面にて、実行したいWorkflowの
▶Run
をクリック - またはWorkflow編集画面で開始Taskの▶をクリック
![](/images/20200720/workflow_run2.png)
(2)コールアウト実行
こちらのAPIによる実行。 Workflow設定のWorkflowごとの設定のCallout ConfigにてURLやRequest情報が確認できます。
curl --location --request POST 'https://workflow.apps.zuora.com/api/v1/workflows/{workflow_id}/run' \ |
Bodyに設定するパラメータはWorkflow設定のWorkflowごとの設定のMapped Input Fields and Paramsにて設定したパラメータを設定します。
![](/images/20200720/workflow_run3.png)
--data-raw '{ |
(3)スケジュール実行
Workflow設定のWorkflowごとの設定のWorkflow TriggersにてScheduledにチェックすると、Scheduled Config項目が表示されます。
![](/images/20200720/workflow_run4.png)
設定はInterval
欄にてcron形式で設定が可能だが、設定項目の各プルダウン項目を選択することでも設定が可能です。
Task
WorkflowはTaskの組み合わせて開発する。TaskについてはWorkflow - Zuoraに各Taskの機能説明あります。よく使うと思われるTaskを紹介します。
(1)Object Query
https://knowledgecenter.zuora.com/Central_Platform/Workflow/Workflow_tasks/AB_Query
Zuoraオブジェクトを選択してデータの取得を行うTaskです。
- 選択
FIELDS
タブで、選択したオブジェクトで取得したいフィールドを選択
![](/images/20200720/workflow_task6.png)
![](/images/20200720/workflow_task7.png)
(2)Data Query
https://knowledgecenter.zuora.com/Central_Platform/Workflow/Workflow_tasks/AC_data_query
SQL(ZOQLというらしい)によるデータのエクスポートを行うTask。Object Queryより柔軟なデータ取得ができます。
![](/images/20200720/workflow_task1.png)
SQLを書くだけで、取得した結果はCSV、TSV、DSV、JSONにフォーマットして後続Taskに渡すことが可能です。
![](/images/20200720/workflow_task2.png)
超えることはそうそうないとは思うが、Data Queryには制限があるため注意しましょう。
![](/images/20200720/workflow_task3.png)
LIMIT(制限) | VALUE(閾値) |
---|---|
Max Execution Time(最大実行時間) | 120分 |
Max Number of Input Records(入力レコード最大数) | 500K |
Max Number of Output Records(出力レコード最大数) | 100K |
Number of Concurrent Queries(同時クエリ数) | 5 |
Max Memory per Query(1クエリ毎の最大メモリ数) | 2G |
(3)CSVTranslator
Data Queryなどで取得した結果をJSON構造やXML構造に変換するためのTaskです。
![](/images/20200720/workflow_task10.png)
![](/images/20200720/workflow_task9.png)
変換だけでなく、取得したデータをFilterしたり、Mergeができます。
**JSONTransform**という、Data Queryなどで取得した結果をJSON構造に変換するためのTaskです。
![](/images/20200720/workflow_task8.png)
クエリで取得した結果のデータをネストしたJSON構造などにする際にはこちらを利用する。主にJSONataという式を駆使して実装することになる。
![](/images/20200720/workflow_task12.png)
JSONata式による実装は若干とっつきにくいが、JSONata Exerciserという便利ツールを利用することで、結果を確認しながら実装が可能です。
(4)Callout
https://knowledgecenter.zuora.com/Central_Platform/Workflow/Workflow_tasks/IC_Notifications_Callout
Workflow内で取得・加工した結果をCalloutAPIを呼び出して連携するためのTaskです。
![](/images/20200720/workflow_task14.png)
![](/images/20200720/workflow_task13.png)
- BODYタブでRequest.Bodyに設定する値を定義する。こちらはLiquid式を利用して設定する。(
HELP
タブ参照)
![](/images/20200720/workflow_task15.png)
- AUTHENTICATIONタブで、Callout呼び出し時の認証について設定する。認証方式はBasic認証、OAuth2.0やhmacなど利用可能です。
![](/images/20200720/workflow_task16.png)
Swimlane
Workflow開発時にデバッグをしたい場合に利用する機能です。詳細はこちら参照ください。
- Workflow編集画面の
TASKS
タブを開くと、各タスクの実行履歴一覧が表示されるので、デバッグしたいTaskの行の一番左のメニューカラムをクリックしてSwimlane
をクリックする。 - Swimlaneは一度でもWorkflowを実行してTask履歴が存在しないと確認できない。
- Swimlane画面では、各タスクの実行状況と、Workflow内の各パラメータ値やデバッグが行える。
- Workflow内で扱うパラメータ値。選択したTask時点のパラメータが表示される。
- エラーが発生しているTaskは赤い表示
- エラーの内容はInfoで確認できる。
Workflow Task Config
やInstance Config
で設定変更してRerun
で、そのTaskから再実行ができる。 - Data QueryやCalloutによるWorkflow内でのAPI実行の結果は、
API Calls
でRequestやResponse内容が確認できる。
![](/images/20200720/workflow_swimlane8.png)
最後に
予期せぬ動きをさせないためには、Workflow全体の動きや個々のTaskの動作をよく理解した上で使いこなす必要はありますが、WorkflowはZuoraとの連携を行ったシステム構築や、Zuoraの基本機能から外れた制御を行う場合には、必ず必要となる機能になります。
Workflow開発リンク集
開発に役立つリンクです。
- Workflow - Zuora
- Workflowの概要、チュートリアル、使用例、Taskのリファレンスなどについて掲載
- General steps for using Workflow - Zuora
- Workflowの開発手順について掲載
- Edit a Workflow - Zuora
- Workflow開発画面での編集方法について掲載
- Workflow User Interface - Zuora
- Workflow画面のUIについての説明が掲載
- Monitor and Troubleshoot a Workflow - Zuora
- Workflow実行した際の履歴の確認、デバッグ方法について掲載
Workflow開発に便利なリンク集:
- Liquid template language
- Workflowの一部のTaskの設定ではLiquid式というテンプレート言語を利用してロジックを書くことになる
- JSONata Exerciser
- Workflowの一部のTaskでJSONata式でJSONフォーマットを行うことができます。上記はJSONataのテスターとして利用可能