下载页面下方的一个classes文件,并将它放在jira安装目录:/atlassian-jira/WEB-INF/classes/com/hktx/condition 下
需要在com目录下创建hktx/conditon目录,如果使用的是linux,注意需要向启动jira的账户授权对文件目录及文件地读权限
步骤二
/atlassian-jira/WEB-INF/classes/目录下,修改system-issueoperations-plugin.xml文件
如场景中,我们要实现"在问题得到解决后,不能够再创建子任务",可以查到此文件的内容
<web-section key="operations-subtasks" name="Ops Bar Operations Subtask Section Section" location="opsbar-operations" i18n-name-key="webfragments.view.issue.opsbar.operations.subtasks" weight="50"/> <web-item key="create-subtask" i18n-name-key="webfragments.view.issue.opsbar.operations.subtasks.create" name="Create sub-task for this issue" section="operations-subtasks" weight="10"> <label key="createsubtaskissue.operation"/> <tooltip key="admin.issue.operations.plugin.create.subtask.name"/> <styleClass>issueaction-create-subtask</styleClass> <link linkId="create-subtask"> /secure/CreateSubTaskIssue!default.jspa?parentIssueId=${issueId} </link> <condition class="com.atlassian.jira.plugin.webfragment.conditions.IsIssueEditableCondition"/> <condition class="com.atlassian.jira.plugin.webfragment.conditions.SubTasksEnabledCondition"/> <condition class="com.atlassian.jira.plugin.webfragment.conditions.IsSubTaskCondition" invert="true" /> <condition class="com.atlassian.jira.plugin.webfragment.conditions.HasProjectPermissionCondition"> <param name="permission">create</param> </condition> <condition class="com.atlassian.jira.plugin.webfragment.conditions.HasSubTasksAvailableCondition"/> <!-- 以下是新增内容 --> <condition class="com.hktx.condition.UnsatisfyJqlCondition"> <param name="propertyKey">HKTXPROPERTIESKEY.UnsatisfyJqlCondition.subtask</param> <param name="jql"> resolved is not EMPTY </param> </condition> <!-- 以上是新增内容 --> </web-item>
即,我们在此配置中增加了以下内容
<!-- 以下是新增内容 --> <condition class="com.hktx.condition.UnsatisfyJqlCondition"> <param name="propertyKey">HKTXPROPERTIESKEY.UnsatisfyJqlCondition.subtask</param> <param name="jql"> resolved is not EMPTY </param> </condition> <!-- 以上是新增内容 -->
配置内容说明,我们可以修改以下内容项
项 | 值 | 是否必要 | 说明 |
---|---|---|---|
propertyKey | 参数配置插件中定义的全主键 | 非 | 如果配置这个参数,需要安装汇科天下免费的参数配置插件,并在此插件中配置相关参数 此插件主要是提供全局化配置,并在其它类里直接来引用; 建议使用此种方法,可以通过配置参数来调整业务上的参数,避免因配置错误或者业务修改,频繁的重新JIRA应用。 插件的使用方法具体查看:Gears properties manager for jira 如果这里配置了参数,但并未使用:Gears properties manager for jira 这个插件,或者此插件中并未定义正确的键值和参数,那么整个条件将返回false 全主键的参数需要是一个有效的JQL语句,会判断这条语句是否满足当前问题的条件,如果满足会返回false,如果不满足会返回true 比如"在问题得到解决后,不能够再创建子任务“场景中,我们可以配置参数:”resolved is not EMPTY “ |
jql | jql语句 | 非 | 如果我们不定义propertyKey参数(不定义propertyKey参数,可以不使用Gears properties manager for jira插件),那么这里的值将是有效的; 如果我们不配置此参数,那么整个的条件都将返回false; 如果配置了此参数,会判断这条语句是否满足当前问题的条件,如果满足会返回false,如果不满足会返回true 比如"在问题得到解决后,不能够再创建子任务“场景中,我们可以配置参数:”resolved is not EMPTY “ |
步骤三
修改当配置完成保存文件后,重新启动服务器。
验证
我们看一下“在问题得到解决后,不能够再创建子任务”的场景的配置情况。
当问题被解决的时候,查看问题是否还可以看创建菜单
更多场景
当然 ,对于jira中问题详情页的各项操作,也可以通过在文件system-issueoperations-plugin.xml的各项操作配置中增加UnsatisfyJqlCondition的配置来完成。
对于需要限定特定的项目才需要这么处理,可以通过配置参数来完成,比如
- 在指定的项目下,当前问题只有经办人才能创建子任务m可以写如下jql:“ project = demo and assignee = currentUser() ”
- 在指定的项目下,当字段的值等于A时,才能够分派经办人,可以写如下jql :"project = demo and cf[1234567] = A ", 交将配置添加以:system-issueoperations-plugin.xml文件中,并将配置内容增加到“key="assign-issue"” 的模块中。
以下是system-issueoperations-plugin.xml文件各个web-item的作用
项 | 说明 |
---|---|
edit-issue | 编辑问题(不能限定行编辑) |
assign-issue | 分派问题 |
assign-to-me | 经办人下面的分配给我 |
comment-issue | 备注(不能限定页面底部的备注) |
log-work | 登记工时 |
vote-issue | 投票 |
unvote-issue | 取消投票 |
view-voters | 查看投票人 |
watch-issue | 关注问题 |
unwatch-issue | 取消关注 |
manage-watchers | 管理关注人 |
create-subtask | 创建子问题 |
subtask-to-issue | 子问题转换为父问题 |
issue-to-subtask | 转换为子问题 |
move-issue | 移动问题 |
move-subtask | 移动子任务 |
link-issue | 链接问题 |
clone-issue | 复制问题 |
edit-labels | 编辑标签 |
archive-issue | 归档问题 |
delete-issue | 删除问题 |
transitions-all | 所有工作流动作不可见(可通过工作流来控制) |
opsbar-admin | 管理员管理项 |
下载附件