Workato の長時間実行アクションの注意点

# はじめに

Workato では、単一のステップが 90 秒、単一のジョブが 90 分で完了しない場合、タイムアウトのエラーが発生します。

ただし、大量のデータを処理可能な一部のアクションについては、長時間実行アクション(Long Actions)として、この制限を超えて、タイムアウトを発生させずに数分から数時間かかるアクションを実行することができます。

長時間実行アクションは便利な機能ではありますが、通常のアクションと異なり、注意が必要な点もいくつかあります。



# 長時間実行アクションについて

データベースや Salesforce などで大量のデータの取得や更新のアクションがサポートされています。
長時間実行アクションは[長時間実行アクションの一覧](https://docs.workato.com/recipes/long-actions.html#list-of-long-actions)に記載されているものか、カスタムコネクターで、[マルチステップアクション](https://docs.workato.com/developing-connectors/sdk/guides/building-actions/multistep-actions.html)として実装したもののいずれかになります。

# 長時間実行アクションの注意点

長時間実行アクションには大きく二つの注意点があります。

### １．ジョブが同時に実行されることがある

通常、Workato のジョブはレシピに設定された同時実行数を超えて同時に実行されることはありません。

同時実行数のデフォルト値は 1 ですので、通常は同じレシピのジョブが同時に実行されることはありません。

しかしながら、長時間実行アクションを含んでいる場合、実行中のジョブが完了していなくても、次のジョブが開始される可能性があります。

そのため、ジョブが同時実行されないようにルックアップテーブルなどを利用して、前のジョブの実行中は新しいジョブを即座に終了するように設定したり、同時に実行されても問題ないように作成したりといった考慮が必要となります。


### ２．テスト実行ができない

長時間実行アクションを含んでいるレシピはテスト実行ができません。

正確には、テスト実行自体はできてしまいますが、Processing のままとなり、終了しません。

長時間実行アクションの一つである Salesforce コネクタの [Search records in bulk using SOQL] で動作を確認してみます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755136/0891e3eb-0835-c104-917f-b8612fda0e1a.png)


Lead の情報をすべて取得する設定をしますが、この環境では 10 件程度しかないため、通常であればそれほど時間はかかりません。

しかしながら、テスト実行すると、10分経ってもジョブが完了せず、実行中のままとなり、[Cancel job] を押して中断するしかなくなってしまいます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755136/833a2188-ccdc-6a7a-d211-978c247a7ea8.png)

テスト実行ができないときに、開発時に任意のタイミングで実行したい場合はどうすれば良いでしょうか？

長時間実行アクションをレシピファンクションにして、別のレシピから呼び出すようにすれば、呼び出し側のレシピのテスト実行を利用することで任意のタイミングで実行することができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755136/a9720ab7-af2c-ede2-acea-c1f371c6a417.png)

処理が正常終了します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755136/0aa3f84d-c7a8-9cc3-46be-15c7059411b9.png)

ただし、長時間実行アクションを含むレシピ自体は通常の実行となりますので、ネットワークのデバッグ情報は取得できません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755136/6ea6bba2-1974-01a5-a342-2d178d7b68c7.png)


ネットワークのデバッグ情報が取得したい場合は、該当のジョブを選択して、[Repeat this job] を利用して再実行する必要があります。
当然ですが、再実行しても問題ないレシピであることが前提となります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755136/76aaa856-2439-49e0-d478-e7d03df46385.png)


また、レシピの呼び出しは必ず [Call a recipe function (asynchronous)] のアクションを選択する必要があります。
[Call a recipe function (synchronous)] のアクションを選択して、呼び出し側のレシピをテスト実行した場合、同様に Processing のままとなり終了しなくなってしまいますので、ご注意ください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755136/d7256d91-5015-5ed5-7cc9-0c91e0ad876b.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755136/fcff4e26-cff9-7188-77d7-6d19fd2f948e.png)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755136/83dcf38b-8ad9-f8fb-9300-f6363f399f3a.png)


# まとめ

まとめると、以下のようになります。

- Workato にはタイムアウトを起こさずに長時間の処理ができる、長時間実行アクションが用意されている
- 長時間実行アクションには注意点がある
  - ジョブが同時に実行されることがある
  - テスト実行ができない
    - 任意のタイミングで実行したい場合、[Call a recipe function (asynchronous)] が活用できる
    - ネットワークのデバッグ情報を取得したい場合は、[Repeat this job] を利用する必要がある

# おわりに

Workato の長時間実行アクションは強力ですが、注意点があります。

Workatoの導入・導入後の活用などでお困りの場合、Workatoリセラーにご相談する方法もございます。お困りごとがございましたら、認定リセラーの[日立ソリューションズ](https://www.hitachi-solutions.co.jp/rpa/sp/products/workato/?utm_source=sns&utm_medium=qiita&utm_campaign=["62c7358305be7869372a"])へ是非ご相談ください。

# 参考リンク

* 株式会社 日立ソリューションズ
    * [Workato ご紹介サイト](https://www.hitachi-solutions.co.jp/rpa/sp/products/workato/?utm_source=sns&utm_medium=qiita&utm_campaign=["62c7358305be7869372a"])
* Workato 公式サイト
    * [Long Actions](https://docs.workato.com/recipes/long-actions.html)
    * [Recipe jobs/Timeouts](https://docs.workato.com/recipes/jobs.html#timeouts)
    * [How-to guides - Multistep actions](https://docs.workato.com/developing-connectors/sdk/guides/building-actions/multistep-actions.html)
* 本記事のサンプルレシピ
    * JPデータセンター利用者向け
        * [[Example] Search Leads in bulk (Long Action)](https://app.jp.workato.com/recipes/416843?st=4d32ae32d7b26bc5086c7806d832a37d729e1937eb02e59b875a7f16821860de)
        * [[Example] Call Long Action Recipe (Async)](https://app.jp.workato.com/recipes/416840?st=74ab369c54d6d851aa71764cd77b8ff17f67e7de410afcd7eb0f2669a5041426)
        * [[Example] Call Long Action Recipe (Sync)](https://app.jp.workato.com/recipes/416841?st=d957d723c4dc7a653335423ce461c56adb7d1d7459761bffed8e683cb46fe603)
    * USデータセンター利用者向け
        * [[Example] Search Leads in bulk (Long Action)](https://app.workato.com/recipes/48747169?st=43031250e474b8d2bbd36bf8c08622624c0a8a6be4bc02d52ae5b305eaec4548)
        * [[Example] Call Long Action Recipe (Async)](https://app.workato.com/recipes/48747282?st=2452fcdaf6beb2905ba07a936d4df4cbc5aece38848a4f219319bd1b7da90e53)
        * [[Example] Call Long Action Recipe (Sync)](https://app.workato.com/recipes/48748211?st=a64b53b02214b91a51aa6b4192f9b2e56536c79af2ff8a63856af73c3aad1c70)