注: イベント駆動型トリガの詳細については、https://github.com/shotgunsoftware/shotgunEvents にある当社のドキュメントを参照してください。
Shotgun は、Shotgun で発生するすべてのアクションのイベント ログ エントリを作成します。これらのイベントは Shotgun サイトだけでなく、Shotgun API からも確認できます。
Shotgun のイベントの詳細履歴の確認に加えて、EventLog のポーリングや特定のイベントの操作のために独自のイベント リスナー スクリプトを作成できます。スクリプトはパイプラインの他の内部スクリプトを実行したり、Shotgun API を使用して Shotgun 内の他の情報を更新したりできます。
使用例
イベント駆動型トリガの使用例をいくつか示します。
- ショットの「Layout」タスクのステータスが「final」としてマークされると、自動的に「Animation」タスクのステータスを「ready to start」に設定して、アニメータがショットで作業を開始することを把握できるようにする。
- 新しいショットが Shotgun で作成されるたびにファイルシステム上で適切なショット フォルダを作成する。
- 「on hold」の場合にショットに割り当てるアーティストを通知する。
- アセットの作成が完了したらフォルダを読み取り専用にする。
- バージョンが Shotgun のレビューに追加されると、関連するバージョン(またはタスク)情報をデイリー システムにコピーする。
- シーンのショットが 25 個になったら、シーンの説明フィールドの 3 番目の文字と同じ文字で始まる任意の引用をツイートする。
イベント駆動型トリガの仕組み
次に、Shotgun で生成される EventLogEntries を簡単な図で説明します。スクリプトは API を使用して、指定後に発生したイベントのリストを取得します。次に、各イベント タイプ(Shotgun_Task_Change など)を調べ、どのイベント タイプが対象となるかを確認します。
候補のイベントが見つかると、イベントの詳細をさらに調べます(変更されたフィールドや変更された値など)。このときに API を使用してエンティティの詳細情報を要求することもできます)。
イベントが操作対象だと判明したら、スクリプトは、Shotgun API、パイプラインの他のコード、またはその両方を使用して、イベントに指定したコードを実行して操作します。チェックするイベントがなくなると、プロセスを繰り返し、API を使用して先ほどチェックした後に発生したイベントのリストを取得します。
EventLog のポーリングと Shotgun 内のトリガの比較
Shotgun はイベント情報を絶えず流し続けており、ユーザはその情報をすべて確認し、任意のイベントに対してのみ操作を実行できます。これは、Shotgun 自体でトリガをコントロールするよりも非常に大きな利点があります。
- 柔軟: トリガ スクリプトは Shotgun とは関係なく実行することができます。このため、スクリプトは任意の方法で Shotgun とパイプラインの両方とやり取りできます。何の制約も受けずに任意のルールとアクションを定義します。Shotgun 側では、指定したイベント トリガについて何も把握する必要はありません。Shotgun に必要なのは、EventLogEntries を生成し続けることです。それ以外のことはすべてユーザが管理します。
- リモート: スクリプトは、Shotgun サーバにネットワーク アクセスできる任意の場所から実行できます。スクリプトの実行に必要なのは API アクセスだけです。
- 多様性: 複数のスクリプトを同時に実行できます。それぞれの部門でニーズは異なるため、異なるイベントを待機します。すべてのトリガが同じスクリプトから実行されなければならない、というような制限はありません。トリガを個別の論理的スクリプトに分割できる場合もあります。ポーリングのクエリーは非常に軽量であるため、パフォーマンスにはほとんど影響しません。
- 説明責任: スクリプトで Shotgun を変更した場合は、このスクリプトによる変更内容を正確に記録する独自のイベントも生成されます。
イベント タイプ
内部のすべてのイベント タイプは「Shotgun_[entity_type]_[New|Change|Retirement]」というフォーマットを順守しています。たとえば、「Shotgun_Shot_New」や「Shotgun_Asset_Change」などがあります。詳細については、https://github.com/shotgunsoftware/shotgunEvents/wiki/Technical_Overview#event-types にある「イベント タイプ」のドキュメントを参照してください。
トランザクションと欠落の可能性があるイベント
Shotgun はトランザクションで破壊的データベース クエリーを実行し、トランザクション終了時に EventLog にのみ書き込みます。このため、「ID の最大値」メソッドを使用すると、イベントを見落としてしまう可能性があります。ただし、GitHub サイトのイベント トリガ フレームワークには、この状況を処理できるコードがあります。