InfoPlusDataAPI - infoplus/docs GitHub Wiki

流程数据API

概述

  • 此组API提供对流程数据的强类型查询
  • 使用GraphQL协议
  • 支持多租户参数(参数 tenant 和 X-Tenant-ID),参考Multitenancy
  • 类型按流程区分,而非按流程版本
    • 多版本流程以上线版主表单结构为准
    • 否则,以该流程产生的最大流水号的正式流水的主表单结构为准。

表单数据类型

数据类型 缩写 说明
string str 字符
anyURI URI URI链接地址
XHTML XH 富文本
integer int 整型
double dbl 浮点型
boolean bln 布尔型
date dte 日期,Unix时间戳,记录了1970年1月1日(00:00:00 GMT)以来的秒数
datetime dtm 时间,Unix时间戳,记录了1970年1月1日(00:00:00 GMT)以来的秒数
time tm 时间,记录了从00:00:00到该时刻以来的秒数
User Usr 用户账号,KV格式
Organize Org 组织机构,KV格式
Code Co 代码表,KV格式
File Fi 文件(JSON格式)
Thing Th 物品,KV格式
Location Loc 位置类型,采用WGS84坐标系
Signature Sig 数字签章
  • 注:KV格式是指,该字段存储key(比如用户帐号),字段_Name存储显示内容(比如用户姓名),字段_Attrs存储其他属性。

通用类型定义

表单字段类型对应的Key/Value类型定义

# 用户 
type User {
  code: String
  text: String 
}

# 组织机构
type Organize {
  code: String
  text: String 
}

# 代码表项
type Code {
  code: String
  text: String 
}

# 物品
type Thing {
  code: String
  text: String 
}

其他类型定义为标量(scalar)

# URL链接地址,实际类型为 String 
scalar anyURI 

# 富文本,实际类型为 String 
scalar XHTML 

# 日期,实际类型为 Int,Unix时间戳 
scalar date  

# 时间日期,实际类型为 Int,Unix时间戳 
scalar datetime

# 时间,实际类型为 Int,记录了从00:00:00到该时刻以来的秒数
scalar time   
# 数字签章,实际类型为 String(JSON格式)
scalar File  

# 位置类型,实际类型为 String,采用WGS84坐标系,逗号分隔
scalar Location 

# 数字签章,实际类型为 String(JSON格式)
scalar Signature 

其他通用类型定义


# 下拉框数据项,符合[Provider代码表注解](https://github.com/infoplus/canvas-docs/wiki/Provider)
type DataSourceItem {
  # @code
  code: String
  # @text
  text: String 
}

# 下拉框数据项查询方法
type Query {
  # 默认查询
  dataSourceItems(
    # 搜索关键字
    keywords: String, 
    # 按流程名、字段名过滤 
    filter: DataSourceItemFilter,
  ): DataSourceItemConnection 
}

input DataSourceItemFilter {
  # 流程代码
  app: StringFilter
  # 字段名称
  field: StringFilter 
}

input StringFilter {
  eq: String
}


动态类型定义

  • 每个类型按表单内容生成数据结构

类型名规约

  • 根类型使用流程代码
  • 如重复节/表以 "group" 开头,则自动去掉 "group"
  • 重复节/表需以自身名称下划线拼接其父类型名构成完整类型名称,如 流程名_第一层重复节_第二层重复节
  • 丢弃规则与字段名规约相同(参考下节)

字段名规约

  • 改名规则:定义表单字段名到GraphQL类型字段名的映射

    • 如字段以 "field" 开头,则自动去掉 "field"
    • 遇到 "-",转为 "__" 双下划线
    • 否则,表单字段名和类型字段名一致
  • 丢弃规则:

    • 如类型字段名不符合GraphQL字段要求(含有特殊字符等),丢弃该字段
    • 如字段改名后如果和其他未改名的字段冲突,则丢弃改名字段
    • 如多个改名字段改名后冲突,都丢弃
  • 通用属性定义(例)


type Foo {
  # 流水号 
  _entry: Int         
  # 父对象类型引用,仅适用于子类型 
  _parent: {父对象类型} 
}