编写事件驱动的触发器

注意:有关事件驱动的触发器的详细信息,请参见我们的文档,网址为 https://github.com/shotgunsoftware/shotgunEvents

Shotgun 会为在其中发生的每个动作创建事件日志条目。您可以在您的 Shotgun 站点中以及通过 Shotgun API 查看这些事件。

除了在 Shotgun 中查看事件的详细历史记录外,您还可以编写自己的事件侦听器脚本来轮询事件日志并对您关注的某些事件执行操作。您的脚本可以执行您的工作流中的其他内部脚本,也可以使用 Shotgun API 并更新 Shotgun 中的其他信息,或同时实现两者。

示例用例

下面是一些使用事件驱动的触发器的示例:

  • 每当镜头的“布局”(Layout)任务状态标记为“final”时,自动将“动画”(Animation)任务状态设置为“ready to start”,以便动画设计师知道可以开始处理该镜头。
  • 每当在 Shotgun 中创建了新镜头时,都在文件系统上创建合适的镜头目录。
  • 当某个镜头进入“on hold”状态时通知分配给该镜头的美工人员。
  • 最终确定了某个资产时将目录设为只读。
  • 在 Shotgun 中将版本添加到审核时,将相关版本(或镜头)信息复制到样片系统。
  • 场景增加到 25 个镜头时,通过 Twitter 发布一个以与场景的“说明”(Description)字段中第三个词语相同的字母开头的随机引文。

事件驱动的触发器的工作方式

下面是 Shotgun 生成的事件日志条目简单图表。您的脚本将使用 API 获取自上次查询以来发生的事件列表。然后,它将查看每个事件类型(例如 Shotgun_Task_Change),看看其中是否有您关注的事件类型。

一旦找到关注的事件,它将更进一步检查事件的详细信息(例如,更改了哪些字段,值更改为什么等。此时,如果需要,您甚至可以使用 API 请求实体的详细信息)。

如果事件符合要求,脚本将对该事件执行操作,并执行用于确定是使用 Shotgun API、您的工作流中的内容还是两者时需要执行的任何代码。没有其他事件要查看时,重复该过程,然后使用 API 获取自上次查询以来发生的事件列表。

事件日志轮询

在 Shotgun 内部轮询事件日志与触发器

Shotgun 提供持续的事件信息流,您可以侦听所有事件,并只对您关注的事件执行操作。相比于让 Shotgun 自己控制触发器,这具有以下优势:

  • 灵活:您的触发器脚本可以独立于 Shotgun 运行。这样,您的脚本可以按照您所需的任何方式与 Shotgun 和您的工作流交互。您可以根据需要定义规则和动作,不受任何约束。Shotgun 不需要了解您的事件触发器的任何信息。它只需持续生成事件日志条目。您可以控制后面发生的情况的所有其他方面。
  • 远程:您的脚本可以从能通过网络访问 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 在事务中执行破坏性数据库查询,且仅当事务完成时向事件日志写入。因此,您在此处使用“最高 ID”方法时可能会丢失事件。但我们 GitHub 站点上的事件触发器框架中有应该能处理这些情况的代码。

关注

0 评论

登录写评论。