当前位置:网站首页>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)
边栏推荐
- INSTALL_PARSE_FAILED_MANIFEST_MALFORMED
- 京东购买意向预测(四)
- 机器学习面试题(转载)
- Basic lighting knowledge of shader introduction
- 微信OAuth2.0 登录流程以及安全性分析
- 京东购买意向预测(三)
- 912. 排序数组(数组排序)
- Jenkins如何设置邮箱自动发送邮件?
- Discussion on blackmail virus protection
- 4-channel FMC interface baseband signal processing board (2 FMC interfaces, 2 fmc+ interfaces)
猜你喜欢
随机推荐
理解LSTM和GRU
京东购买意向预测(三)
导出文件or下载文件
环境变量和文件夹放置位置
4-channel FMC interface baseband signal processing board (2 FMC interfaces, 2 fmc+ interfaces)
2022危险化学品经营单位主要负责人复习题及模拟考试
Redis jump table implementation principle & time complexity analysis
Thales security solutions: key steps to improve national network security
Pytoch notes (2)
Modify checkbox style
FMC sub card: 4-channel 250msps sampling rate 16 bit AD acquisition sub card
会话技术【黑马入门系列】
How does Jenkins set the mailbox to automatically send mail?
How does continuous integration manage Jenkins?
Spark3.x入门到精通-阶段六(RDD高级算子详解&图解&shuffle调优)
INSTALL_PARSE_FAILED_MANIFEST_MALFORMED
力扣114题:二叉树展开链表
@ConditionalOnMissingBean 如何实现覆盖第三方组件中的 Bean
PCIe bus architecture high performance data preprocessing board / K7 325t FMC interface data acquisition and transmission card
Pycharm interface settings