JIRA工作流编程:全面指南
立即解锁
发布时间: 2025-08-18 02:08:24 阅读量: 3 订阅数: 4 

### JIRA工作流编程:全面指南
在JIRA系统中,工作流的编程和配置是一项重要的任务,它可以帮助我们更好地管理问题的生命周期、控制权限、实现国际化等。本文将详细介绍JIRA工作流编程的多个方面,包括基于工作流状态的权限设置、工作流过渡的国际化、以编程方式获取可用的工作流操作、以编程方式推进工作流、从数据库获取工作流历史、重新排序工作流操作以及创建工作流中的通用过渡等内容。
#### 1. 基于工作流状态的权限设置
JIRA允许我们根据工作流状态限制对问题或其子任务的许多操作,如编辑、评论等。以下是具体的操作步骤:
1. 以JIRA管理员身份登录。
2. 导航到“管理”|“全局设置”|“工作流”。
3. 如果工作流处于活动状态,创建其草稿。导航到需要修改的步骤。
4. 点击“查看步骤属性”链接。
5. 在“属性键”字段中输入权限属性。属性的格式为:`jira.permission.[subtasks.]{permission}.{type}[.suffix]`,其中:
- `subtasks`:可选。如果包含,则权限应用于问题的子任务;否则,应用于实际问题。
- `permission`:在`Permissions`类中指定的简短名称,如`admin`、`use`、`edit`等。
- `type`:授予/拒绝的权限类型,如`group`、`user`、`assignee`等。
- `suffix`:可选后缀,用于在多次添加相同类型时使属性唯一。
6. 在“属性值”字段中输入适当的值。如果类型是`group`,则输入组名;如果是`user`,则输入用户名等。例如:
- `jira.permission.comment.group=some-group`
- `jira.permission.comment=denied`
- `jira.permission.edit.group.1=some-group-one`
- `jira.permission.edit.group.2=some-group-two`
- `jira.permission.modifyreporter.user=username`
- `jira.permission.delete.projectrole=10000`
- `jira.permission.subtasks.delete.projectrole=10000`
7. 如果工作流处于活动状态,返回并发布工作流;否则,将工作流与适当的方案关联。
需要注意的是,工作流权限只能限制权限方案中设置的权限,而不能授予权限。
#### 2. 工作流过渡的国际化
如果JIRA实例被世界各地说不同语言的人使用,我们可以使用国际化将JIRA转换为他们自己的语言。以下是修改工作流操作提交按钮名称或操作名称的步骤:
1. 打开`atlassian-jira/WEB-INF/lib/language_<language code>_<country code>.jar`文件。从JIRA 4.3开始,jar文件名的形式为`jira-lang-<language code>_<country code>-<jira version>.jar`。
2. 编辑jar文件中的`\com\atlassian\jira\web\action\JiraWebActionSupport_<language code>_<country code>.properties`文件。可以使用7zip等工具编辑jar文件中的内容,也可以提取jar文件、修改文件后再重新打包。
3. 添加i18n属性及其值,例如:`my.submit.button=My Submit Button`(英文)。
4. 更新文件并重启JIRA以加载新属性。
5. 以JIRA管理员身份登录。
6. 导航到“管理”|“全局设置”|“工作流”。
7. 如果工作流处于活动状态,创建其草稿。导航到需要修改的过渡。
8. 点击“查看此过渡的属性”链接。
9. 根据需要修改提交按钮名称或操作名称,在“属性键”字段中输入`jira.i18n.submit`或`jira.i18n.title`。
10. 在“属性值”字段中输入在属性文件中使用的i18n键。例如,键为`my.submit.button`。
11. 点击“添加”。
12. 如果工作流处于活动状态,返回并发布工作流;否则,将工作流与适当的方案关联。
工作流发布后,JIRA将在下次过渡时从i18n属性文件中填充提交按钮名称。
#### 3. 以编程方式获取可用的工作流操作
在程序中,我们可能需要检索问题上可用的当前工作流操作。以下是使用JIRA API实现的步骤:
1. 检索与问题关联的JIRA工作流对象:
```java
JiraWorkflow workFlow = componentManager.getWorkflowManager().getWorkflow(issue);
```
其中,`issue`是当前问题,是`com.atlassian.jira.issue.Issue`类的实例。
2. 获取问题状态并使用它检索与问题关联的当前工作流步骤:
```java
GenericValue status = issue.getStatusObject().getGenericValue();
com.opensymphony.workflow.loader.StepDescriptor currentStep = workFlow.getLinkedStep(status);
```
3. 从当前步骤中检索可用操作的集合:
```java
List<ActionDescriptor> actions = currentStep.getActions();
```
其中,`actions`是`com.opensymphony.workflow.loader.ActionDescriptor`的列表。
4. 遍历`ActionDescriptors`并根据需要获取每
0
0
复制全文
相关推荐









