此页面介绍如何配置 JIRA 工作流中的转换。有关工作流基础知识的更多信息,请参见 Jira工作流管理

作为 JIRA 管理员,您可以控制转换行为的以下方面:

  • 触发器 – 当连接的开发工具(比如 Atlassian 的 Bitbucket 或 Stash)发生某些事件时,转换 JIRA 事务。
  • 条件 – 检查用户是否应该执行转换。
  • 验证程序 – 在执行转换之前,检查转换的任何输入(例如,用户的输入)是否有效。
  • 后期功能 – 执行转换之后,执行其他处理操作。
  • 属性 – 可用于进一步自定义转换的键值对。

此页面上的其他内容:

触发器

JIRA 管理员可以在 JIRA 工作流中配置触发器,以响应链接的开发工具中的事件。这样您就能够设置开发工具和 JIRA 工作流,以便在发生一些操作时(例如开发人员创建分支,开始在 Atlassian 的 Bitbucket 或 Stash 中处理事务),事务将自动从“Open”转换为“In progress”。

(info) 如果您以前没有设置过触发器,或者您想更详细地了解触发器,请参见我们提供的触发器指南:配置工作流触发器。该指南还会向您介绍如何配置具有触发器的工作流,过程与此示例开发工作流类似:具有触发器的开发工作流(来自 Atlassian 应用商店)。

配置触发器

要查看或设置转换的触发器,请编辑包含转换的工作流,选择转换,然后在该转换的属性面板中单击 Triggers

为转换添加触发器:

  1. 以具有“JIRA Administrators” 全局权限的用户身份登录。
  2. Error rendering macro 'excerpt-include'

    No link could be created for 'JSDOC:导航到工作流管理控制台'.

  3. 找到您要更改的转换所在的工作流,单击 Edit
  4. 在“Workflow Designer”中,选择转换。

  5. 在属性面板中单击 Triggers ,显示为转换配置的触发器。
  6. 在 Triggers 选项卡中单击 Add trigger 以配置触发器。

条件

条件用来控制用户是否应该执行转换。例如,条件可用于:

  • 只允许报告人执行转换。
  • 只允许拥有特定权限的用户执行转换。
  • 只有在已提交或未提交有关该事务的代码时允许执行转换。

如果条件失败,用户将不会在View issue页面看到转换按钮,因此将不能执行转换。

条件无法在转换界面上验证从用户处收集的输入参数 – 您需要验证程序来执行此操作。

以下部分介绍:

添加条件

要将条件添加到转换,请编辑包含转换的工作流,选择该转换,然后在转换的属性面板中单击 Conditions

要将条件添加到转换,请执行以下操作:

  1. 以具有“JIRA Administrators” 全局权限的用户身份登录。
  2. Error rendering macro 'excerpt-include'

    No link could be created for 'JSDOC:导航到工作流管理控制台'.

  3. 找到您要更改的转换所在的工作流,单击 Edit
  4. 在“Workflow Designer”中,选择转换:

  5. 在属性面板中单击 Conditions

在 Conditions 选项卡中,您可以查看您已设置的所有条件。

单击 Add condition 时,您可以从可用条件中进行选择,并为条件设置所有必要参数。已安装插件可以提供更多的条件。或者,您可以使用插件系统创建自己的条件;请参见工作流插件模块了解详情。

请注意,您还可以在“文本”模式下编辑转换。

对条件进行分组

您可以通过分组和嵌套条件来构造复杂的条件。单击条件的“Add grouped condition”图标,可以将条件修改为群组。现在,您可以向该新群组添加更多条件,如上文所述。

您还可以切换群组中各个条件之间的逻辑关系。有两种选择:All 和 Any。 

验证程序

执行转换之前,验证程序可检查对转换执行的所有输入是否有效。输入可以包括在转换界面上从用户处收集的输入。

如果验证程序失败,事务不会进入转换的目标状态,且不会执行 转换的 后期功能

 添加验证程序

要将验证程序添加到转换,请编辑包含转换的工作流,选择该转换,然后在转换的属性面板中单击 Validators

将验证程序添加到转换:

  1. 以具有“JIRA Administrators” 全局权限的用户身份登录。
  2. Error rendering macro 'excerpt-include'

    No link could be created for 'JSDOC:导航到工作流管理控制台'.

  3. 找到您要更改的转换所在的工作流,单击 Edit
  4. 在“Workflow Designer”中,选择转换:

  5. 在属性面板中单击 Validators

在 Validators 选项卡中,您可以查看您已设置的所有验证程序。

单击 Add validator 时,您可以从可用验证程序中进行选择,并为验证程序设置所有必要参数。

请注意,您还可以在“文本”模式下编辑转换。

后期功能

后期功能会实施执行转换后所需的额外处理操作,例如:

  • 更新事务的字段
  • 生成事务的变更记录
  • 向事务添加评论
  • 生成事件以触发电子邮件通知

以下部分介绍:

重要后期功能

每个 JIRA 转换都提供以下重要的后期功能,按以下顺序执行:

  1. 将事务状态设为目标工作流状态的关联状态。
  2. 如果在转换期间输入了评论,则向事务添加评论。
  3. 更新事务的变更记录并将事务存储在数据库中。
  4. 重新索引事务,让索引与数据库保持同步。
  5. 触发可由侦听器处理的事件。

这些重要后期功能无法从转换删除或重新排序。但是,您可以在其中插入其他(可选)后期功能。

可选后期功能

JIRA 包括一些可添加到转换的可选后期功能。

可选后期功能

Description

Assign to Current User

将事务指派给执行转换的用户。

(info) 除非用户拥有可指派的用户权限,否则该后期功能会被忽略。创建一个条件,可以在执行转换前为该登录用户提供该权限。

Assign to Lead Developer

将事务指派给组件负责人(如果存在)或项目负责人。

Assign to Reporter

将事务指派给创建事务的用户。

Create Perforce Job Function

完成工作流转换后创建 Perforce Job(如果需要)。

Notify HipChat

向一个或多个 HipChat 房间发送通知。有关更多信息,请参见使用后期功能发送 HipChat 通知

Trigger a Webhook

完成工作流转换后触发指定的 Webhook。

添加该后期功能时,系统将要求您指定 Webhook。该 Webhook 必须已在 JIRA 中定义(请参见管理 Webhook)。

Update Issue Field

将事务的一个字段更新为给定值。可更新的字段包括:

  • Assignee
  • Description
  • Environment
  • Priority
  • Resolution
  • Summary
  • Original Estimate
  • Remaining Estimate

(info) 该后期功能无法更新自定义字段,且必须位于其他可选后期功能之后。

已安装插件可以提供更多的后期功能。或者,您可以使用插件系统创建自己的后期功能;请参见工作流插件模块了解详情。

 
添加后期功能

要将后期功能添加到转换,请编辑包含转换的工作流,选择该转换,然后在转换的属性面板中单击 Post functions

将后期功能添加到转换:

  1. 以具有“JIRA Administrators” 全局权限的用户身份登录。
  2. Error rendering macro 'excerpt-include'

    No link could be created for 'JSDOC:导航到工作流管理控制台'.

  3. 找到您要更改的转换所在的工作流,单击 Edit
  4. 在“Workflow Designer”中,选择转换:

  5. 在属性面板中单击 Post functions

在 Post functions 选项卡中,您可以查看您已设置的所有后期功能。单击 Add post function 时,您可以从可用后期功能中进行选择,并设置所有必要参数。用于编辑或删除后期功能的选项,以及用于修改执行顺序的选项均位于选项卡右边(悬停鼠标即可看到)。

请注意,您还可以在“文本”模式下编辑转换。

将后期功能与初始转换搭配使用

如果您在创建事务时,需要执行处理任务(例如设置特定字段的值),可将后期功能添加到工作流的初始转换。初始转换称为“Create”(如果您创建空白工作流)或“Create Issue”(如果您复制系统工作流)。

JIRA 包括以下适用于工作流初始转换的重要后期功能,这些功能必须按此顺序执行:

  1. 创建事务。
  2. 触发可由侦听器处理的事件。

以下可选的后期功能仅适用于初始转换:

可选的后期功能(仅限初始转换)

说明

Create Comment

如果在转换期间输入了评论,则向事务添加评论。

Update Issue Status

将事务状态设为目标工作流状态的关联状态。

Store Issue

将更新存储到事务(不创建变更记录)。

此外,标准可选后期功能还可添加到初始转换,

添加到“Create”转换的可选后期功能必须放置在“Create the issue originally”后期功能之前

如果您愿意,可以为工作流配置初始状态以进行不同的初始转换。请参见配置初始状态了解详情。

注意

如果您需要在创建事务时设置“Resolution”字段,请在“Create the issue”后期功能添加“Update Issue Field”后期功能,之后再添加“Store Issue”后期功能。“Store Issue”后期功能在创建事务期间对设置“Resolution”字段非常有用。

但是,请仅在必要时使用“Store Issue”后期功能,因为它:

  • 不生成变更记录
  • 无法保存与事务具有一对多关系的字段(例如“Version”或“Component”)

使用后期功能设置字段

您可以使用“Update Issue Field”后期功能,在执行特定转换后设置事务字段的值。

例如,您可能需要使用转换将事务移至 Closed 状态,以自动设置“Resolution”字段。

示例:使用后期功能设置“Resolution”字段:

  1. 编辑该转换所在的工作流,并从状态拖放至另一个以创建新转换。

  2. 选择 None 或不包含 Resolution 字段的界面:
  3. 添加类型为“Update Issue Field”的新后期功能,并:
    1. 从 Issue Field 列表中选择 Resolution
    2. Field Value 列表中选择合适的决议。

要创建清除 Resolution 字段的转换,请遵循与上述将“Update Issue Field”后期功能添加到转换相同的步骤。但是,请从 Field Value 列表中选择 None

该转换的后期功能列表包括以下语句:

  • The Resolution of the issue will be cleared.

每次执行这样一项转换时,事务的决议将自动按照这些后期功能的规定进行设置或清除。

使用后期功能发送 HipChat 通知

您可以使用“Notify HipChat”后期功能,在事务借助该后期功能完成转换时向一个或多个 HipChat 房间发送通知。您还可将 JQL 查询添加到“Notify Hipchat”后期功能,以过滤会触发 HipChat 通知的事务。

发送 HipChat 通知:

  1. 创建或编辑转换。
  2. 添加“Notify HipChat”类型的新后期功能。
  3. 在“Add Parameters to Function”页面:
    1. 视需要指定 JQL 查询。只有与该查询相匹配的事务才发送通知。
      将该字段留空以便向完成该转换的所有事务发送通知。
    2. 选择要与您的工作流转换关联的 HipChat 房间。

使用后期功能发送电子邮件通知

使用“Fire an event that can be processed by the listeners”后期功能来触发“通用事件”,该事件属于内置 JIRA 事件,可用于在执行特定转换后触发电子邮件通知的发送。

另外,您可以触发为该转换专门创建的自定义事件

执行转换时,JIRA 将:

  • 查找与事务的项目相关的通知模型,并识别与所触发事件相关的用户;
  • 向每位用户发送电子邮件通知。

(info) 已触发的事件还可以传播到所有已注册的侦听程序

示例:使用后期功能触发“Generic Event”以发送电子邮件通知:

  1. 创建或编辑转换。
  2. 单击转换的 Post Functions 选项卡,然后编辑“Fire an event that can be processed by the listeners”后期功能。
  3. 从事件列表中选择 Generic Event

转换属性

属性是指可用于进一步自定义转换的“键-值”对。例如,转换属性可帮助您扩展复制的系统工作流,以实现用户界面的多语言翻译。

查看和编辑转换属性:

  1. 在图表中选择一个转换。
  2. 单击“Properties”面板中的 Properties
  3. 执行以下任一操作:
    • 添加新的转换属性。
    • 删除属性,方法是单击属性右侧的图标。

重要提示

在此页面上无法编辑转换属性。要更改任何属性的键或值(或这两者),您必须先删除想要更改的属性并添加更新的新属性。

 

请注意,您还可以在“文本”模式下编辑转换。

您可以使用转换属性对转换实施限制。有关更多信息,请参见工作流属性

自定义转换的显示方式

查看事务时,您可以通过其顶部的一排按钮查看大部分操作和工作流转换。

更改转换按钮数量(默认情况下为两个):

默认情况下,转换按钮组中的前两个转换将显示为单独的按钮。其他转换显示在 Workflow 菜单中。按钮显示的顺序取决于系统工作流中定义的顺序。

  1. 关闭 JIRA。
  2. 编辑 jira-config.properties 文件(位于 JIRA 应用主目录中)。请参见 更改 jira-config.properties 文件,了解更多信息。
  3. 将“X”(位于此文件的 ops.bar.group.size.opsbar-transitions = X 属性中)的值更改为需要显示在 Workflow 菜单之前的转换按钮数量。
    (info) 如果 jira-config.properties 文件中没有该属性,请自行添加。否则,系统将采用默认值 2。
  4. 保存更新后的 jira-config.properties 文件。
  5. 重新启动 JIRA。
 


更改转换按钮的顺序:

要更改转换按钮(包括 Workflow 菜单中的其他转换)的顺序,请将属性唯一标识 opsbar-sequence 添加到您想对其重新排序的每个工作流转换中。每个 opsbar-sequence 属性唯一标识都需要一个属性值,用于定义转换操作在事务视图中的顺序。

  1. 转到转换的属性,如前面的转换属性部分所述。
  2. 在“Add New Property”下的 Property Key 字段中输入 opsbar-sequence
  3. 在 Property Value 字段中输入一个值,该值必须为正整数(从“0”开始),用于定义转换按钮在事务视图中的顺序。
    建议使用一系列 opsbar-sequence 属性值(如 10、20、30...),以便日后轻松添加新转换。
  4. 单击 Add

全局转换

全局转换可将工作流中的任意状态转换为另一特定状态。

添加一个全局转换:

  • 在创建新状态(添加现有状态)时,选中 Add global transition to status 选项。
  • 选择一个状态,然后选中状态属性面板中的 Allow all statuses to transition to this one

创建两个指向同一目标步骤的全局转换:

  1. 在工作流设计器中,按照正常流程选择一个步骤并选中“Allow all statuses to transition to this one”,从而创建第一个全局转换
  2. 针对目前未用于全局转换的任意其他步骤,创建第二个全局转换
  3. 然后,从文本编辑器中选择您创建的第二个全局转换
  4. 单击“Edit”按钮并将“Destination Step”更改为您为第一个全局转换选择的步骤,然后单击“Update”