问题描述
要求-
要创建的任何APEX
问题,在Jira
页上将显示在以下字段中。
- 问题编号/问题ID
- 摘要
- 说明
- 状态
- 受让人
例如,user01和user02都可以访问Oracle APEX and Jira
。 user01在Jira中创建了3个问题,而user02在Jira中创建了5个问题。现在,当用户01登录Oracle APEX时,应该看到3个问题,当用户02登录Oracle APEX
时,应该在APEX页面上看到5个问题。
https://jira.local.com/jira/rest/api2
我是APEX Rest服务调用的新手,并要求你们所有人提供一些示例APEX代码,以便使用用户名/密码来调用Jira REST API,以满足上述要求。
谢谢。
解决方法
我以前做过类似的事情。在我的情况下,目标是从Jira获取项目PRJ001(Jira项目密钥)的所有问题,并将它们定期存储在本地数据库表(J_ISSUES)中,因此我创建了一个Job,该Job会不时执行以下过程时间:
create or replace PROCEDURE "JIRA_SYNC_ISSUES" as
var_response CLOB;
var_counter number := 0;
var_total number := 1;
var_prj_key varchar2(10);
begin
var_prj_key := 'PRJ001';
var_total := 1;
var_counter := 0;
while var_total > var_counter
loop
apex_session.create_session (p_app_id => 107,p_page_id => 1,p_username => 'USERNAME01');
var_response:= apex_web_service.make_rest_request(
p_url => 'https://yourcompany.atlassian.net/rest/api/2/search?jql=project="'|| var_prj_key ||'"&maxResults=100&startAt=' || var_counter || '',p_http_method => 'GET',p_credential_static_id => 'oud_rest'
);
SELECT JSON_VALUE(var_response,'$.total' RETURNING NUMBER) into var_total
FROM DUAL;
for i in (SELECT *
FROM
JSON_TABLE(var_response,'$.issues[*]'
COLUMNS (
key VARCHAR2(100) PATH '$.key',prj_key VARCHAR2(100) PATH '$.fields.project.key',status VARCHAR2(100) PATH '$.fields.status.name',updated VARCHAR2(100) PATH '$.fields.updated',assignee VARCHAR2(100) PATH '$.fields.assignee.name',time_spent NUMBER PATH '$.fields.timespent'
)))
loop
begin
insert into j_issues (jis_key,jis_jpr_key,jis_status,jis_updated,jis_assignee,jis_time_spent)
values (i.key,i.prj_key,i.status,to_timestamp(substr(i.updated,1,10)||' '||substr(i.updated,12,8),'YYYY-MM-DD HH24:MI:SS'),i.assignee,i.time_spent);
exception
when dup_val_on_index then
update j_issues
set jis_jpr_key = i.prj_key,jis_status = i.status,jis_updated = to_timestamp(substr(i.updated,jis_assignee = i.assignee,jis_time_spent = i.time_spent
where jis_key = i.key;
end;
var_counter := var_counter + 1;
end loop;
end loop;
end jira_sync_issues;
在第一部分中,它是对API进行身份验证和调用。在第二个中,它使用var_response并将其插入所需的表中。 对于第一部分,我已阅读以下内容:https://www.jmjcloud.com/blog/simplifying-apex_web_service-oauth2-client-credentials 第二个:https://docs.oracle.com/database/121/SQLRF/functions092.htm
注意var_counter和var_total变量。它们用于遍历Jira响应,因为每个响应中检索到的项都有限制。因此,如果您期望超出该限制,则应该拨打更多电话来检索它们。
如果问题的数量很大,则执行这样的预定同步而不是让用户等待整个结果是有好处的。数据放入数据库后,您只需照常查询即可。
让我知道是否有帮助;)