当前位置:网站首页>Jira --- workflow call external api
Jira --- workflow call external api
2022-07-17 05:52:00 【鲨鱼辣椒的小地摊儿】
Jira --- workflow call external api
1.postfounction
Transition:
- 在workflow中到了某个状态,自动呼叫外部api
- 打开workflow transition
- Add post function
- http get
下面是groovy script
get无参,测试OK
import groovy.json.JsonSlurper;
import groovy.json.StreamingJsonBuilder;
//import com.atlassian.jira.ComponentManager;
import com.atlassian.jira.issue.CustomFieldManager;
import com.atlassian.jira.issue.fields.CustomField;
import com.atlassian.jira.issue.IssueManager;
import com.atlassian.jira.component.ComponentAccessor;
import com.atlassian.jira.issue.Issue;
import com.atlassian.jira.issue.MutableIssue
import org.apache.commons.codec.binary.Base64;
import groovyx.net.http.HTTPBuilder
import static groovyx.net.http.ContentType.*
import groovyx.net.http.ContentType
import static groovyx.net.http.Method.*
import groovy.json.JsonSlurper
import net.sf.json.groovy.JsonSlurper
import groovy.json.JsonOutput
// Define Required Component Access
def customFieldManager = ComponentAccessor.getCustomFieldManager()
def issueManager = ComponentAccessor.getIssueManager()
// Define Web API to post to
def baseURL = "http://xxxxxy";
URL url = new URL(baseURL);
log.error("url="+url);
HttpURLConnection connection = url.openConnection() as HttpURLConnection;
connection.setRequestMethod("GET")
connection.connect();
log.error("URL="+url+",Status="+connection.getResponseCode() as String)
log.error("status1:"+connection.getResponseMessage())
connection.disconnect()
get有参,在社区找到的,还没试
import groovy.json.JsonSlurper;
import groovy.json.StreamingJsonBuilder;
import com.atlassian.jira.ComponentManager;
import com.atlassian.jira.issue.CustomFieldManager;
import com.atlassian.jira.issue.fields.CustomField;
import com.atlassian.jira.issue.IssueManager;
import com.atlassian.jira.component.ComponentAccessor;
import com.atlassian.jira.issue.Issue;
import com.atlassian.jira.issue.MutableIssue
import org.apache.commons.codec.binary.Base64;
import groovyx.net.http.HTTPBuilder
import static groovyx.net.http.ContentType.*
import groovyx.net.http.ContentType
import static groovyx.net.http.Method.*
import groovy.json.JsonSlurper
import net.sf.json.groovy.JsonSlurper
import groovy.json.JsonOutput
// Define Required Component Access
def customFieldManager = ComponentAccessor.getCustomFieldManager()
def issueManager = ComponentAccessor.getIssueManager()
// Get Issue ID that contains the Data
Issue issue = issueManager.getIssueObject( "SSD-18222" );
// Get field values
def fullName = customFieldManager.getCustomFieldObjectByName("Full Name");
def fullNameValue = issue.getCustomFieldValue(fullName);
//def firstName = customFieldManager.getCustomFieldObjectByName("Firstname");
//def firstNameValue = issue.getCustomFieldValue(firstName);
def firstNameValue = "Jane"
def lastName = customFieldManager.getCustomFieldObjectByName("Surname");
def lastNameValue = issue.getCustomFieldValue(lastName);
//def officeNumber = customFieldManager.getCustomFieldObjectByName("Office Number");
//def officeNumberValue = issue.getCustomFieldValue(officeNumber);
def officeNumberValue = "+27115234020"
def mobileNumber = customFieldManager.getCustomFieldObjectByName("Cell Phone Number");
def mobileNumberValue = issue.getCustomFieldValue(mobileNumber);
//def faxNumber = customFieldManager.getCustomFieldObjectByName("Office Number");
//def faxNumberValue = issue.getCustomFieldValue(faxNumber);
def title = customFieldManager.getCustomFieldObjectByName("Job Title");
def titleValue = issue.getCustomFieldValue(title);
def department = customFieldManager.getCustomFieldObjectByName("Department");
def departmentValue = issue.getCustomFieldValue(department);
def siteName = customFieldManager.getCustomFieldObjectByName("Site Code");
def siteNameValue = issue.getCustomFieldValue(siteName);
def idNumber = customFieldManager.getCustomFieldObjectByName("ID Number");
def idNumberValue = issue.getCustomFieldValue(idNumber);
//def passportNumber = customFieldManager.getCustomFieldObjectByName("Passport Number");
//def passportNumberValue = issue.getCustomFieldValue(passportNumber);
//def birthdate = customFieldManager.getCustomFieldObjectByName("Birthday");
//def birthdateValue = issue.getCustomFieldValue(birthdate);
// Define JSON
def ContainerPath = "LDAP://OU=BU3,OU=BU2,OU=BU1,OU=Employees,OU=contoso,DC=contoso,DC=com"
def jsonBody = "{
\"parentContainerPath\":" + ContainerPath + "," +
\"firstName\":" + firstNameValue + "," +
\"lastName\":" + lastNameValue + "," +
\"telehpone\":" + officeNumberValue + "," +
\"mobile\":" + mobileNumberValue + "," +
\"title\":" + titleValue + "," +
\"department\":" + departmentValue + "," +
\"siteName\":" + siteNameValue + "," +
\"identificationNumber\":" + idNumberValue + "," +
\"passportNumber\":" + idNumberValue + "," +
\"birthDate\":" + birthday"
}"
return jsonBody
// Define Web API to post to
def baseURL = "http://<server>:8090/api/Employees";
// Establish Connection and post data
URL url = new URL(baseURL);
//URLConnection connection = url.openConnection();
HttpURLConnection connection = url.openConnection() as HttpURLConnection;
connection.requestMethod = "POST"
connection.doOutput = true
connection.setRequestProperty("Content-Type", "application/json;charset=UTF-8")
connection.outputStream
connection.outputStream.withWriter("UTF-8") {
new StreamingJsonBuilder(it, jsonBody) }
connection.connect();
log.info ("URL="+url+"Status="+connection.getResponseCode() as String)
边栏推荐
- 牛客题目——打家劫舍一、打家劫舍二
- What is the difference between Samsung series NAND flash?
- 目标检测和边界框
- FMC sub card: 8-channel 125msps sampling rate 16 bit AD acquisition sub card
- 【MySQL】 事务:事务基础知识、MySQL事务实现原理、事务日志 redolog & undolog 详解
- How can FD apply the vector diagnostic tool chain?
- 泰坦尼克号乘客获救预测(进阶)
- Spark3.x入门到精通-阶段七(spark动态资源分配)
- INSTALL_PARSE_FAILED_MANIFEST_MALFORMED
- Application of A2B audio bus in intelligent cockpit
猜你喜欢

机器学习之随机森林

MongoDB 索引

Comparative analysis of the differences between nor and NAND

How can FD apply the vector diagnostic tool chain?

This article introduces you to SOA interface testing

Pytorch随记(2)

fiddler 抓包工具使用

59 get prototype size
![[MySQL] lock mechanism: detailed explanation of lock classification, table lock, row lock and page lock in InnoDB engine](/img/7e/ddf05e76da26e9b2d1fd1519703571.png)
[MySQL] lock mechanism: detailed explanation of lock classification, table lock, row lock and page lock in InnoDB engine

Spark3.x entry to proficiency - stage 3 (in-depth analysis of the whole process of spark data processing)
随机推荐
2022 review questions and mock exams for main principals of hazardous chemical business units
Flutter3.0(framework框架)——UI渲染
Jenkins如何设置邮箱自动发送邮件?
Canel Introduction & use
Basic lighting knowledge of shader introduction
Read gptp in a quarter of an hour
[day01] preface, introductory program, constant variables
INSTALL_PARSE_FAILED_MANIFEST_MALFORMED
xgboos-hperopt
Spark3.x entry to proficiency - stage 3 (in-depth analysis of the whole process of spark data processing)
微信OAuth2.0 登录流程以及安全性分析
Promote trust in the digital world
Introduction & use of Maxwell
Double index mechanism of redis source code analysis
【MySQL】 锁机制:InnoDB引擎中锁分类以及表锁、行锁、页锁详解
Flink入门到实战-阶段三(DataStreamAPI)
Pytoch notes (3)
Spark3.x-实战之双流join(窗口和redis实现方式和模板代码)
Pytorch随记(3)
60. Clear cache

