public class InfoPlusEntity extends Object
流程平台内存使用xml格式存储表单数据,在事件调用时转换为key-value格式,可通过InfoPlusEvent.getFormData()
方法获取,称为Map格式。
Java开发中使用对象来表达表单数据,表单中的非重复字段表达为对象的属性,重复字段则组织为子对象存放在上级对象的集合属性中,称为Bean格式。
下表是流程平台数据类型和建议的Java类型:
流程平台类型 | Java类型 |
---|---|
string | String |
boolean | Boolean |
integer | Integer |
double | BigDecimal |
date | Date |
XHTML | String |
User | InfoPlusUser |
Organize | CodeItem |
Code | CodeItem |
File | InfoPlusFile |
以下为一个采购申请表单的示例:
表单数据结构:
purchaseRequest ---- 采购申请主表单 fieldRequest ---- User, 申请人 fieldRequestDate ---- Date, 申请日期 fieldTitle ---- String, 申请标题 groupItems ---- 重复结构,采购明细 fieldItemName ---- String, 采购物品名称 fieldItemPrice ---- Double, 采购物品单价 fieldItemAmount ---- Integer,采购物品数量Java对象定义:
//采购申请主表单 class PurchaseRequest { private InfoPlusUser request; //申请人 private Date requestDate; //申请日期 private String title; //申请标题 private List<PurchaseItem> items; //采购明细 ... //setter & getter } //采购明细 class PurchaseItem { String itemName; //采购物品名称 BigDecimal itemPrice; //采购物品单价 Integer itemAmount; //采购物品数量 ... //setter & getter }Map格式的表单数据(json表达):
{ "fieldRequest": "user1", "fieldRequest_Name": "张三", "fieldRequestDate": 1640966400, "fieldTitle": "采购办公用品", "fieldItemName": ["记号笔", "白板擦"], "fieldItemPrice: [20, 5], "fieldItemAmount": [5, 10] }Bean格式的表单数据(json表达):
{ "request": { "account": "user1", "trueName": "张三" }, "requestDate": "2020-01-01", //Date类型,这里为示意 "title": "采购办公用品", "items": [{ "itemName": "记号笔", "itemPrice": 20, "itemAmount": 5 }, { "itemName": "白板擦", "itemPrice": 5, "itemAmount": 10 } }InfoPlusEntity类提供了Map格式和Bean格式相互转换的方法,但开发者一般不需要直接使用,通常情况下通过以下方法来实现转换:
InfoPlusEvent.toBean(Class)
方法获得表单数据从Map格式转换为Bean格式,获取代表表单数据的Java对象实例;
InfoPlusResponse.toForm(edu.sjtu.infoplus.applicationToolkit.InfoPlusEvent, java.lang.Object)
方法将表单数据的Bean格式转换为Map格式,存放在InfoPlusResponse
中作为事件的处理结果返回。
构造器和说明 |
---|
InfoPlusEntity() |
限定符和类型 | 方法和说明 |
---|---|
static <T> T |
toBean(String workflowCode,
Class<T> clazz,
Map<String,Object> formData)
转换表单数据Bean格式到Map格式,并返回json序列化结果。
|
static <T> void |
toBean(String workflowCode,
T obj,
Map<String,Object> formData) |
static String |
toString(String workflowCode,
Object instance)
转换表单数据Bean格式到Map格式,并返回json序列化结果。
|
public static String toString(String workflowCode, Object instance)
转换过程依赖表单数据结构的定义,需调用流程平台API接口获取,因此此方法依赖InfoPlusApplication.getService()
返回的InfoPlusService
实例。
确保传入的workflowCode可以通过注册的Messenger获取到流程密钥,并确保该流程拥有sys_start Scope。
workflowCode
- 表单数据所属的流程代码instance
- 表单数据实例public static <T> T toBean(String workflowCode, Class<T> clazz, Map<String,Object> formData) throws Exception
转换过程依赖表单数据结构的定义,需调用流程平台API接口获取,因此此方法依赖InfoPlusApplication.getService()
返回的InfoPlusService
实例。
确保传入的workflowCode可以通过注册的Messenger获取到流程密钥,并确保该流程拥有sys_start Scope。
T
- 转换结果的类型workflowCode
- 表单数据所属的流程代码clazz
- 转换结果的类型formData
- Map格式的表单数据Exception
- 转换过程中的任何异常Copyright © 2024. All rights reserved.