如何动态添加新值以选择 jira 中的列表字段或使用插件

2024-03-20

这是我的用例。
1. 我有一个“客户名称”文本字段和“所有客户”单选列表。
2. 问题解决后,我想选择“客户名称”中存在的值,并希望添加到“所有客户”中。

如果要添加的值已存在于“所有客户”中,我就能够实现此目标。但我想用新值填充“所有客户”字段(如果该字段尚不存在),以便将来可供选择。 这个怎么做?可以这样做吗?


我找到了答案。这是完整的代码。它的 jira 插件会在已解决的事件上引发并从一个自定义字段中获取值并填充另一个字段。希望对其他人有帮助。

package com.spmsoftware.plugin.listeners;

import com.atlassian.event.api.EventListener;
import com.atlassian.event.api.EventPublisher;
import com.atlassian.jira.component.ComponentAccessor;
import com.atlassian.jira.event.issue.IssueEvent;
import com.atlassian.jira.event.type.EventType;
import com.atlassian.jira.issue.Issue;
import com.atlassian.jira.issue.MutableIssue;
import com.atlassian.jira.issue.customfields.manager.OptionsManager;
import com.atlassian.jira.issue.customfields.option.Option;
import com.atlassian.jira.issue.customfields.option.Options;
import com.atlassian.jira.issue.fields.CustomField;
import com.atlassian.jira.issue.fields.config.FieldConfig;
import com.atlassian.jira.issue.fields.config.FieldConfigScheme;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;

import java.util.List;
import java.util.Map;

/**
 * User: adnan
 * Date: 5/4/14
 * Time: 4:49 PM
 */
public class IssueUpdateListener  implements InitializingBean, DisposableBean {

    private static final Logger LOGGER = Logger.getLogger(IssueUpdateListener.class);

    private final EventPublisher eventPublisher;
   // private final JiraAuthenticationContext authenticationContext;

    public IssueUpdateListener(EventPublisher eventPublisher) {
        this.eventPublisher = eventPublisher;
       // this.authenticationContext = ComponentAccessor.getJiraAuthenticationContext();
    }

    @Override
    public void afterPropertiesSet() throws Exception {
        eventPublisher.register(this);
    }

    @Override
    public void destroy() throws Exception {
        eventPublisher.unregister(this);
    }

    @EventListener
    public void onIssueEvent(IssueEvent issueEvent) {
        Long eventTypeId = issueEvent.getEventTypeId();
        Issue issue = issueEvent.getIssue();
        if (eventTypeId.equals(EventType.ISSUE_RESOLVED_ID)) {
            MutableIssue mutableIssue = getMutableIssue(issue);
            CustomField customerNameCF = ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("Customer Name");
            CustomField allCustomersCF = ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("All Customers");
            Object customerNameVal = mutableIssue.getCustomFieldValue(customerNameCF);
            Option newOptions = addOptionToCustomField(allCustomersCF, customerNameVal.toString());
            LOGGER.info("New updated option {}" + newOptions);
        }
    }

    private MutableIssue getMutableIssue(Issue issue) {
        MutableIssue mutableIssue;
        if (issue instanceof MutableIssue)   {
            mutableIssue = (MutableIssue)issue;
        } else {
            mutableIssue = ComponentAccessor.getIssueManager().getIssueObject(issue.getKey());
        }
        return mutableIssue;
    }


    public Option addOptionToCustomField(CustomField customField, String value) {
        Option newOption = null;
        if (customField != null) {
            List<FieldConfigScheme> schemes = customField.getConfigurationSchemes();
            if (schemes != null && !schemes.isEmpty()) {
                FieldConfigScheme sc = schemes.get(0);
                Map configs = sc.getConfigsByConfig();
                if (configs != null && !configs.isEmpty()) {
                    FieldConfig config = (FieldConfig) configs.keySet().iterator().next();
                    OptionsManager optionsManager = ComponentAccessor.getOptionsManager();
                    Options l = optionsManager.getOptions(config);
                    int nextSequence = l.isEmpty() ? 1 : l.getRootOptions().size() + 1;
                    newOption = optionsManager.createOption(config, null, (long) nextSequence, value);
                }
            }
        }

        return newOption;
    }

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何动态添加新值以选择 jira 中的列表字段或使用插件 的相关文章

  • python爬虫之模拟登录

    最近应朋友要求 帮忙爬取了小红书创作平台的数据 感觉整个过程很有意思 因此记录一下 在这之前自己没怎么爬过需要账户登录的网站数据 所以刚开始去看小红书的登录认证时一头雾水 等到一步步走下来 最终成功 思路通了感觉其实还是很简单 解决思路 一
  • 常见异常解析

    ConcurrentHashMap与CopyOnWriteArrayList比较 博客分类 Java ConcurrentHashMap ConcurrentHashMap引入了Segment 每个Segment又是一个hashtable
  • S​alesforce是怎么完成从0到1的?

    我之前写过无数篇Salesforce的文章 但是很多人还是想看看Salesforce如何从0到1以及从1到10的发展 所以我找来Salesforce的创始人在2009年 Salesforce成立十周年 之际亲自写的一本书 云攻略 来给大家梳
  • 通过 API 列出所有 JIRA 转换

    我希望在 JIRA 中设置智能提交 但我的开发人员想了解其转换的所有选项 为了帮助他们 我想打印一份所有转换名称的备忘单 我相信他们足够聪明 能够弄清楚从那里做什么 但是当我翻阅REST API文档时 我只能找到一种方法来获取特定问题的转换
  • 使用 api 密钥访问 JIRA API,无需用户名和密码

    目前我正在使用用户名和密码访问 C Net 应用程序中的 JIRA API 但我需要访问 JIRA API 而无需输入用户名和密码 即使没有哈希用户名和密码也是如此 有没有办法创建 API 密钥并用它访问 JIRA API 是的 JIRA
  • 如何使用 REST API 在 Jira 中创建问题?

    如何使用 REST API 在 Jira 中创建问题 我已经尝试过使用curl 的示例 但我需要使用 Java 和 REST API 在 Eclipse 中创建缺陷 您想将 JIRA 集成到 Eclipse 中吗 See https con
  • Jira 用于错误跟踪和客户支持?

    我们正在考虑使用 Jira 进行错误跟踪 并将其与 Git 集成 以将错误修复与版本处理联系起来 您是否也推荐 Jira 来提供客户支持 还是我们应该寻找其他系统 例如 Zendesk 来实现此目的 我知道可以通过某种方式将 Hipchat
  • JIRA:生成每个用户的时间报告?

    抱歉 如果 SO 不是最好的地方 但我在 JIRA 中启用了时间跟踪 并且希望能够为给定日期范围内的每个用户生成时间报告 我唯一拥有的时间跟踪报告选项非常有限 并且不能满足我的要求 是否可以通过标准功能或免费插件来实现 您可能想查看用于 J
  • 在 java 中使用 REST API 创建新的“JIRA 问题”

    嘿伙计们 我真的很难解决这个问题 我想通过 REST API 使用 java 创建新的 JIRA 问题 但我看到的每个示例都不完整或不适合我 如下所示 如何使用 java rest api 在 jira 中创建问题 https stacko
  • JIRA:查找我上周记录的所有工作

    我如何创建一个 JIRA 过滤器来列出我遇到的所有问题 记录时间 然后我可以将其应用到活动流 通过 JQL 使用高级搜索 worklogAuthor currentUser AND worklogDate gt 2016 12 01 AND
  • JIRA 与 TortoiseSVN 集成

    谁能指定将 JIRA 与 TortoiseSVN 集成以跟踪问题详细信息的方法吗 URL部分应该指定什么URL 还需要哪些其他参数 您需要在 JIRA 方面做些什么来确保集成吗 在阅读有关该主题的 TortoiseSVN 文档时 我遇到了很
  • Tomcat 背后的 apache 代理路径错误

    我正在尝试将 apache 2 2 配置为服务器上某些应用程序的代理 tomcat jira 使用 Jira 安装程序安装 tomcat dev 只是其他应用程序的容器 首先 我的httpd conf是这样的 ProxyRequests O
  • HTTP 基本身份验证和 Atlassian JIRA、Confluence 和 Bitbucket

    我在 Apache 反向代理后面的服务器上部署了 JIRA Confluence 和 Bitbucket 他们中的每一个都通过应用程序链接与其他人连接 现在 我想通过在此之前实现 HTTP 基本身份验证来添加额外的保护层 当我这样做时 我会
  • 如何将 JIRA 与 Selenium WebDriver 集成?

    如何将 JIRA 与 Selenium WebDriver 集成 实际上我想执行测试用例并报告 JIRA 中每个测试用例的通过 失败状态 你的问题很笼统 我的回答也很笼统 Jira 并不完全是一个 TCM 测试用例管理器 应用程序 尽管它肯
  • 来自 cURL 请求的 RestSharp POST 请求翻译

    我正在尝试使用 RestSharp 发出 POST 请求以在 JIRA 中创建问题 而我必须使用的是一个使用 cURL 的示例 我对这两者都不够熟悉 不知道我做错了什么 这是example https developer atlassian
  • 通过 JIRA REST API 从自定义字段获取值

    我想获取自定义字段的所有下拉选项 对于系统字段 我使用以下 URI http localhost 8080 rest api 2 project XXXX components http localhost 8080 rest api 2
  • Maven 3 测试依赖的传递依赖被标记为编译,为什么?

    我在我的 Maven 3 0 5 JDK 1 7 构建中观察到一个奇怪的行为 在我发现的依赖树中TEST 具有传递性的资源COMPILE依赖关系 参见下面第 1 节 这会在随后的构建阶段中触发maven jira 插件 4 2 20将这些资
  • JIRA JQL:当前冲刺中解决的问题

    我希望能够过滤当前冲刺中已解决的问题 一般来说 这将用于防止在我们讨论开发人员在本次冲刺中实现了什么时出现在上一个冲刺中已解决但测试延迟 未重新开放 的问题 已关闭的问题也应该出现 但它们不是问题 就好像它们在上一个冲刺中被关闭一样 无论如
  • 如何使用 JQL 检索特定状态的问题

    输入 url 或使用curl 运行 例如 https
  • JIRA REST API 获取工作日志 - “您无权查看指定问题”

    我想获取 Jira 上指定问题的工作日志 根据这个文件https docs atlassian com jira REST latest d2e774 https docs atlassian com jira REST latest d2

随机推荐

  • 如何获取数据并在 useEffect() 中使用它?

    我正在尝试从 API 获取数据并使用数据设置状态 但是当我在子组件中使用数据时 我得到一个 Unhandled promise rejection TypeError null is not an object evaluating dat
  • 从不同域加载 jQuery Mobile 页面?

    有没有办法从外部页面加载启用 jQuery AJAX 的页面 我正在制作一个带有phonegap的应用程序 我需要在线托管一个页面 因为它将不断更新 但我似乎不知道如何 我尝试只是链接它 但没有用 有任何想法吗 由于您正在使用 PhoneG
  • 如何在 ASP.NET MVC 控制器中获取身份密码选项

    我想阅读身份PasswordOptions配置在Startup cs从 MVCController My PasswordOptions配置如下 services AddIdentity
  • c#:动作无与伦比?

    我正在尝试比较两个操作 与 的比较总是返回 false 就像 Equals 方法一样 即使它是同一个实例 我的问题是 这真的不可能还是我做错了 干杯 交流电 你做错了 如果我相信你 当你说 即使它是同一个实例 时 那么以下代码通过执行LIN
  • 我可以通过编程方式推导出 C++ dll 使用的调用约定吗?

    想象一下 您想要编写一个程序来测试 c dll 文件中的函数 您应该允许用户选择一个 dll 我们假设我们正在讨论 c dll 他应该能够获得 dll 导出的所有函数的列表 然后 用户应该能够从列表中选择一个函数名称 手动输入参数列表 参数
  • conda:从基本/根环境中删除所有已安装的软件包

    TL DR 如何删除所有已安装的软件包base 我在我的计算机中安装了一堆机器学习包base康达环境 我现在创建了一个ml机器学习环境 并希望重置我的base环境 删除安装在那里的所有软件包 我试过了 activate base conda
  • 实现 Serialized 接口的 Java 类

    我需要一个实现可序列化的类的列表 您还能告诉我什么样的类实现了该接口吗 在Java API中 大多数类都实现了Serialized here http java sun com javase 6 docs api java io class
  • 为文本添加背景颜色,但段落行之间留有空格

    我想知道 CSS 是否可以做一些事情 基本上我想使用 html css 在图像的 RHS 上重新创建文本 但目前我正在获取图像的 LHS HTML div div p This is an example of what I have p
  • 如何在php中编写json文件作为数据源?

    我有一些这样的数据 name abc adr bcd partners 101 name xyz com prices 1001 description Single Room amount 125 from 2012 10 12
  • 在不同条件下更新sequelize中的多行

    我正在尝试对 postgres 数据库中的行执行带有sequelize 的更新命令 我需要能够使用相同的值更新具有不同条件的多行 例如 假设我有一个包含以下字段的用户表 ID 名 姓 Gender Location 创建于 假设 我在此表中
  • rstudio - 是否可以在后台运行代码

    关于 RStudio 的问题 假设我在控制台中运行代码 gt code1 假使 假设code1 在控制台上不打印任何内容 但是code1 以上需要一个小时才能完成 我想在等待的同时做点别的事code1 是否可以 有没有类似的函数runInB
  • 为什么我会收到“找不到所请求的资源”。当访问简单的喷涂路线时?

    我尝试了一个简单的喷雾示例应用程序 但无法访问路线 我将示例源代码上传到了 github 但该示例源代码不起作用 喷雾 Tomcat 示例 https github com avidanyum spray tomcat example gi
  • 左排除加入续集

    我有两张表 其中一张表有另一张表的 ID 1 1 关系 所以像 EventFeedback somePrimaryKey userEventID UserEvent userEventID Sequelize 的关系定义为 models U
  • 在 Windows 10 上无法查看 Robomongo 中的集合

    我在互联网上彻底搜索但几乎找不到任何东西 我已经在 Windows 10 上安装了 MongoDB 3 2 0 和 Robomongo 0 8 5 安装后我能够成功启动 MongoDB 作为服务 之后 我在成功运行的 DBRestore e
  • Javascript 中两个字符串之间的网络效率差异

    我有一个网络应用程序 其中客户端编辑器正在编辑服务器端已知的非常大的文本 客户可以对此文本进行任何类型的修改 什么是最网络效率高如何以服务器理解的方式传输结果差异 另外 由于这将发生在客户端 Javascript 我也希望它 快 或者至少不
  • 无法从 Firebase 上的存储引用获取 URI

    我正在尝试获取存储在 Firebase 存储中的图像 URI 以便使用另一种方法对其进行处理 我正在使用以下内容 FirebaseStorage storage FirebaseStorage getInstance StorageRefe
  • 并行运行子进程

    我有一个 python 脚本 它必须调用某个应用程序 3 次 这些调用应该是并行的 因为它们需要几个小时才能完成并且彼此不依赖 但他们的脚本应该停止 直到所有脚本都完成 然后做一些清理工作 这是一些代码 do some stuff for
  • 重新安装 Android studio 会导致我的 Google Maps API 无法在我的应用程序中显示吗?

    我创建了一个利用 Google Maps API 的应用程序 我总是通过将其副本保存在外部驱动器上来备份我的应用程序 我最近重新安装了 Windows 并且不得不重新安装 Android Studio 当我导入保存的应用程序项目并运行它时
  • jQuery 禁用链接直到页面加载

    我有一个附加到链接的 jquery 弹出窗口 如果单击链接时页面未完全加载 即 js 文件 它将在浏览器窗口中打开 而不是弹出窗口 我正在考虑禁用 隐藏链接 直到加载页面 处理这种情况的最佳实践是什么 您有任何代码示例吗 首先将链接放在 d
  • 如何动态添加新值以选择 jira 中的列表字段或使用插件

    这是我的用例 1 我有一个 客户名称 文本字段和 所有客户 单选列表 2 问题解决后 我想选择 客户名称 中存在的值 并希望添加到 所有客户 中 如果要添加的值已存在于 所有客户 中 我就能够实现此目标 但我想用新值填充 所有客户 字段 如