Skip to content

InfoPlus

ChangYo edited this page Oct 25, 2026 · 2 revisions

InfoPlus

项 值
平台 form.sjtu.edu.cn/infoplus
认证 OAuth 2.0;User Token / System Token
数据方向 读 + 写(流程、任务、表单)
难度 高(App 审批 + 租户/流程权限)
最后验证 2026-10-25
证据等级 B(官方 API Reference;未逐接口实测)

InfoPlus 是交我办背后的流程与表单平台,负责流程实例、待办任务、表单数据、附件、通知和导出。它不是通用校园数据 API。

要点

  • Base:https://form.sjtu.edu.cn/infoplus/apis/v2/(测试环境用 v2d/)
  • 认证:OAuth 2.0。授权码或隐式模式取得 User Token,客户端凭据取得 System Token。
  • 可获取:用户可办应用、待办/在办/已办、流程详情与表单数据、附件、通知、导出、组织/岗位/权限、统计。
  • 注意:User Token 和 System Token 不能互相替代;语法正确的调用也可能返回 HTTP 200 和 errno != 0;没有 App 或租户权限时无法读取数据。

1. 平台模型

概念 含义
App 应用。分 Global(不隶属租户/流程)、Enterprise(隶属租户)、Workflow(隶属一个流程)
Enterprise 企业/租户;交我办里通常对应学校或部门
Process 流程实例,有唯一流水号 entry
Task 一个具体任务;一个 task 只能被办理一次
Triple (User, Dept, Post) 三元关系,表示用户在某部门某岗位
Position {dept}:{post},支持 * 通配
FormData 流程表单数据;生命周期见官方文档

App 类型会影响权限范围:

  • Workflow App 的 Token 只能发起该流程,不能发起其他流程。
  • Enterprise App 的 Token 限定在该租户内。
  • Global App 不隶属租户/流程,常用于 TaskCenter 这类全局应用。

2. 认证

端点

用途 地址
授权 https://form.sjtu.edu.cn/infoplus/oauth2/authorize
Token https://form.sjtu.edu.cn/infoplus/oauth2/token

授权方式

InfoPlus 支持:

  1. Authorization Code
  2. Implicit
  3. Client Credentials

(官方说支持 1、2、4,跳过 Resource Owner Password。)

  • 1/2 拿到的叫 User Token:代表用户,/me/* 接口、发起流程、办理任务。
  • 3 拿到的叫 System Token:代表应用,/user/{id}/*、系统级任务、管理接口。

Warning

User Token 和 System Token 不能互相替代。/me/profile 只支持 User Token;System Token 要用 /user/{userId}/profile,scope 加 sys_ 前缀。

scope

  • sys 开头的 scope 只用于 System Token;其他用于 User Token。
  • 每个 API 后面标了 u/s 或 u/s;申请时按接口勾。
  • 常见:profile、task、process、process_edit、submit、start、triple、sys_triple、sys_process_edit、app、sys_app、stats、entrust、sys_thing。

3. 通用请求与响应

  • RESTful;GET/PUT/POST/DELETE。
  • URL/参数大小写敏感;camelCase(access_token 除外)。
  • 时间用 Unix 秒。
  • 所有语法正确的调用都返回 HTTP 200;语义错误在 body 里。
{
  "errno": 0,
  "ecode": "OK",
  "error": "success",
  "total": 0,
  "entities": [{ "...": "..." }]
}
  • errno: 0 成功;非 0 失败。
  • ecode 是字符串错误码,便于阅读。
  • error 是人可读信息,随 Accept-Language 变。
  • total 是分页总数;不是列表时为 0。
  • 单条数据在 entities[0]。

分页

  • start:起始条序号,0 下标。
  • limit:每页条数;不传由系统决定。
  • 不同接口支持的过滤参数不同,见下表。

4. 端点表

Base:https://form.sjtu.edu.cn/infoplus/apis/v2/

User

接口 说明
GET /me/profile 当前用户信息(姓名、账号、邮箱、手机、租户、收藏应用/任务/标签)
GET /me/preference/{k} 用户偏好
PUT /me/preference/{k}/{v} 增加偏好条目
DELETE /me/preference/{k}/{v} 删除偏好条目
GET /me/positions 用户岗位
GET /me/accesses 用户权限

Task / Process

接口 说明
GET /me/apps 用户可办应用;不支持分页
GET /me/tasks/todo 待办;支持 sep、thing、entrust、start、limit
GET /me/processes/doing 在办
GET /me/processes/done 已办
GET /me/processes/completed doing + done
GET /me/processes/{cate} unrated/cc/entrusted/admin/guest/operator
GET /process/{id} 流程详情(含 tasks)
GET /process/{id}/data 流程表单数据
GET /process/{id}/data/{format} 导出 Word/PDF/PNG
POST /process/{id}/data 修改表单数据
POST /me/processes 调整用户所有流程(如标记抄送已读)

流程列表支持 app、entry、keyword、timestamps、lastUpdate、orderTimes、milestones、ratings、statuses、states、sep、thing、unread、archive、start、limit、order。[官方]

Task Execution

接口 说明
POST /task/{id} 办理一个任务
PUT /process 发起一个新流程
POST /process/{id} 评价/终止/挂起/恢复/归档/标记已读等
GET /thing/{code}/tasks 按物品码查任务

办理任务的关键参数:actionId/actionCode、remark、thing、pickup;System Token 还可以传 userId。[官方]

发起流程返回 entities:

  • [0] 流水号
  • [1] 步骤号
  • [2] 第一步 URL
  • [3] 第一步 Task JSON

写操作与副作用

InfoPlus 的写操作会改变真实业务流程,比读接口危险得多。

操作 影响 必须先确认 可撤销性
PUT /process 发起流程 创建真实流程实例,第一步进入待办 流程类型、表单数据、参与人 可终止/归档,但已产生的记录不会消失
POST /task/{id} 办理任务 任务只能办理一次;可能触发下一节点/通知 动作(同意/驳回)、备注、附件 通常不可撤销;只能走后续流程
POST /process/{id} 评价/终止/挂起/恢复/归档/标记已读 改变流程状态或可见性 目标流程、动作、理由 挂起可恢复;终止/归档通常不可逆
POST /process/{id}/data 修改表单 改业务数据,可能触发校验/联动 字段、旧值、新值 取决于流程;不要假设能回滚
POST /me/processes 标记全部抄送已读 批量改变已读状态 范围 不可撤销

Warning

写操作要用户逐次确认;不要做「自动办理」「批量同意」「后台重放」。失败时先查流程或任务状态,确认是否已经生效,再决定是否重试。任务只能办理一次,盲目重试可能产生错误或重复副作用。

Admin / Triple / Grant / Stats / Tenant / Entrust / Thing

组 代表接口 说明
Admin GET /app/{idc}、POST /app/{idc}、GET /me/apps/{access}、GET /me/processes/{access} App meta、上下线、权限列表
Admin GET /task/{id}/candidates、POST /task/{id}/candidates、DELETE /task/{id} 可办理人、撤回
Triple GET /triple/{type}/{idc}、GET /triple/{type}s、PUT/POST/DELETE /triple/{type} 用户/部门/岗位
Grant GET /user/{id}/positions、GET /position/{position}/users、PUT/DELETE /position/{position}/users 岗位成员
Stats GET /stats/apps、GET /stats/app/{id}/processes/status、/recent、/tasks/todo 统计;2 分钟缓存
Tenant GET /enterprise/{type}/{id}、GET /enterprise/{type}s、CRUD /code/{cid}/item/{iid} 租户设置、代码表
Entrust GET /user/{id}/{relationship}、PUT/DELETE /user/{id}/{relationship}/{other} 委托/被委托
Thing PUT /thing/{code}/pickup、GET /thing/{code}、GET /pickup/{pickup}/things 物品/收件码

5. 数据模型

App

{
  "id": "guid",
  "name": "服务事项名称",
  "code": "应用代码",
  "abbreviation": "缩略名",
  "description": "摘要",
  "tags": "标签1,标签2",
  "icon": "uri",
  "palette": "#ff0000",
  "department": "负责院系",
  "contact": "联系人",
  "recommend": 0,
  "rating": 0,
  "rated": 0,
  "visible": true,
  "ready": true,
  "system": "所属系统"
}

Process

关键字段:id、name、entry(流水号)、create、update、read、app、owner、status(doing/suspended/done/killed)、states、tasks、milestones、flow、activities、ancestors。

Task

关键字段:id、name、uri、description、process、assignUser、actionUser、actualUser、assignTime、actionTime、actionName、expireTime、status(1 待做/2 已做/3 子流程)、actions、executors、reviewers、permission。


6. 文件、通知、导出

这些是 InfoPlus 的周边 API,不在主 API Reference 里:

API 用途
File API 流程附件、文件上传/下载
Notification API 流程内通知、邮件/其他渠道
Export API 按模板导出 Word/Excel/PDF
Messenger API 平台与第三方系统的事件驱动互操作;目前主要 Java SDK
Push API 长轮询订阅待办/抄送变化;前端用 infoplus.sdk.js,后端 sub 尚不支持

7. 申请现实

仅有 jAccount 不足以调用 InfoPlus:

  1. 按应用管理规范创建/申请 InfoPlus App。
  2. 在开发环境拿 App ID/Secret。
  3. 由流程/租户管理员配置应用能访问的流程和数据。
  4. 代表用户办理时用 Authorization Code/Implicit 拿 User Token。
  5. 后端系统任务用 Client Credentials 拿 System Token。
  6. 正式上线还要走应用上线申请。

个人自用工具通常拿不到;这是实验室/社团/部门应用的路线。


8. 常见问题

  1. HTTP 200 不等于成功:看 errno/ecode。
  2. User/System Token 混用:/me/* 只认 User;/user/{id}/* 要 System + sys_ scope。
  3. start 从 0 开始。
  4. v2 vs v2d:v2d 是测试数据;不要拿测试数据当正式。
  5. App 类型决定权限范围:Workflow App 只能发起该流程;Enterprise App 限定租户。
  6. includeExecutors 最多 50 人:多于 50 只返回前 50,顺序不可预测。
  7. 统计结果有 2 分钟缓存:非实时数据。
  8. 表单数据有生命周期:不要在错误阶段读写;见官方 FormData 文档。
  9. 写流程要用户确认:发起/办理/终止都是真实业务动作。
  10. 委托只支持办理,不支持发起:app + from/to 时间区间。
  11. 附件/文件走 File API:不要在表单 JSON 里塞二进制。
  12. Messenger/Push 不是轮询替代品:前端长轮询可以,后端 sub 尚不支持。

9. 最小示例

# 1. 用授权码换 User Token
curl -X POST 'https://form.sjtu.edu.cn/infoplus/oauth2/token' \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -d 'grant_type=authorization_code' \
  -d "code=$CODE" \
  -d "redirect_uri=$REDIRECT_URI" \
  -d "client_id=$APP_ID" \
  -d "client_secret=$APP_SECRET"

# 2. 读待办
curl 'https://form.sjtu.edu.cn/infoplus/apis/v2/me/tasks/todo?start=0&limit=20' \
  -H "Authorization: Bearer $USER_TOKEN"

# 3. 读流程详情
curl 'https://form.sjtu.edu.cn/infoplus/apis/v2/process/<id>' \
  -H "Authorization: Bearer $USER_TOKEN"

10. 证据与来源

  • OAuth、App 类型、响应结构、分页、端点表、数据模型、限制:[官方 2026-10-25,developer.sjtu.edu.cn/form/reference/api.html]
  • 应用管理/上线流程:[官方] developer.sjtu.edu.cn/form/standard/application.html、onlineApply.html
  • File/Notification/Export/Messenger:[官方] 对应 reference 页面

变更记录

  • 2026-10-25:首版。抽取官方 API Reference 的核心端点、Token 语义、分页与限制。

Clone this wiki locally