第三方获取待办数

场景描述

第三方系统需要获取某个用户(传入用户名)的待办数量。

实现思路

在应用中添加一个服务请求,获取某个人的待办数。这个请求设置为匿名访问,提供给第三方系统调用。

由于调用工作流的api需要先登录,查询待办数需要人的id,所以服务请求分为三部分:

  1. 登录系统
  2. 用用户名查询出用户id
  3. 查询该用户的待办数

实现步骤

1 登录系统

登录系统的代码参考开发手册——高级篇——集成——第三方登录企业云中后端java登录里面的代码

  • 可以固定一个用户用于登录
  • 使用http请求传用户名和密码执行login,在response的headers中可以获取Set-Cookie中的user_session

2 根据用户名查询出用户id

根据用户名查询出用户id,代码如下

String url = "/uaa/dbrest/users?select=users.id&users.username=eq."+username;
JSONArray users = ServiceUtil.get(SpringWebUtil.getRequest(),"entry",url,null,JSONArray.class);
if(users.size()>0) {        
    String userId = users.getJSONObject(0).getString("users.id");
}

3 查询某个用户的待办数

查询某个用户待办数的api如下

post https://域名/wf/BusinessServer/business-action
headers
    Cookie :第一步获取的user_session
    Content-Type : application/json
body
{
    "process": "/SA/task/taskCenter/taskCenterProcess",
    "activity": "mainActivity",
    "action": "queryTaskCountAction",
    "parameters": {
        "status": "waiting",
        "org": 第二步获取的用户id,
        "filter": "SA_Task.sKindID<>'tkNotice'"
    }
}

执行post请求的部分代码如下

String url = ServiceUtil.getServiceUrl("wf") + "/BusinessServer/business-action";
Map<String, String> headers = ServiceUtil.getExtHeaders(request);
headers.put("Cookie", user_session);
headers.put("content-type", "application/json");
ServiceUtil.post(url, data, headers, String.class);

返回内容如下

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <flag>true</flag>
    <message/>
    <code/>
    <reason/>
    <stack/>
    <messages>[]</messages>
    <data xmlns:xbiz="http://www.justep.com/xbiz#">
        <xbiz:simple type="http://www.w3.org/2001/XMLSchema#Long">2</xbiz:simple>
    </data>
    <customer>15</customer>
    <guid>1651914198</guid>
    <md5>D17820701B87B9683DF1C89471E4A89D</md5>
    <ver>534</ver>
    <aCode>Z201307010178</aCode>
    <ext></ext>
</root>

其中data中的2是查询到的待办数

results matching ""

    No results matching ""

    results matching ""

      No results matching ""