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中作为事件的处理结果返回。
| 限定符和类型 | 类和说明 |
|---|---|
static class |
InfoPlusEntity.SetterInterceptor |
| 限定符和类型 | 字段和说明 |
|---|---|
static String |
CLASS_SUFFIX_TRACK
跟踪类的类名后缀。
|
static String |
FIELD_TRACK_GROUPS
"增强子类"中定义的额外属性,类型为Map<String, Object>,存放所有重复结构的索引值。
|
static String |
FIELD_TRACK_INDEX
"增强子类"中定义的额外属性,类型为int,存放增强实例在重复结构中的位置,对于非重复属性,默认为0。
|
static String |
FIELD_TRACK_MODIFIED_FIELDS
"增强子类"中定义的额外属性,类型为Set,存放初始化后所有设置过值的属性名。
|
static String |
FIELD_TRACK_PARENT
"增强子类"中定义的额外属性,类型为Object,存放上级实例。
|
| 构造器和说明 |
|---|
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 final String CLASS_SUFFIX_TRACK
public static final String FIELD_TRACK_GROUPS
public static final String FIELD_TRACK_MODIFIED_FIELDS
public static final String FIELD_TRACK_INDEX
public static final String FIELD_TRACK_PARENT
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 © 2025. All rights reserved.