実行したジョブが一向に終わらないときの考えられる原因
実は、実行しているアクションが「Long action」だった、という可能性が高いです。
Long actionとは?
アクションの中には、long actionと呼ばれる特殊なアクションが存在します。
どんなものかと言うと、「非同期で実行されるアクション」です。
例えば、
- Bulkアクション
- SchedulerコネクターのWaitアクション
- ストリーミングでファイルを転送する系のアクション
こういったものがlong actionであるケースが多いです。
Long actionがレシピに含まれる場合、レシピを「start」させる
Long actionが含まれるレシピを実行するときはレシピをstartして稼働させておく必要があります。
なぜ稼働させておく必要があるのか?
一般的に、処理に時間がかかるAPIは非同期で呼び出されるようにデザインされている場合があります。こういったAPIは、アプリケーション側がリクエストを受け付けたら一旦すぐにレスポンスを返しちゃいます。そして裏で処理を粛々と進めます。
そのため、逆にAPIを呼び出した側は処理が終わってるかどうかは別途「終わってるかな〜?」と確認しにいく必要があります。終わってなければ、もう少し待って再度様子を見にいきます。
Workatoはこういった非同期で呼び出すアクションを実行すると、裏で5分おきに処理が終わってるかどうかのリクエストを自動で投げます。ただし、これはレシピがstartされて稼働しているときにしか行われません。
なので、例えばレシピを稼働させてない状態でtest実行すると、非同期APIを呼び出してはくれますが、終わってるかどうかのチェックが行われないためずっとProcessing...となってしまうわけです。
一応、test実行してからレシピの編集画面をexitし、レシピをstartさせた場合はうまく動作します。