# 实体服务使用说明
实体服务提供模板可供使用,分别为新增、删除、修改、分页查询、用ID查询五个模板。该文档说明五个模板中的参数意义以及参数的取值使用。
# 新增实体服务
新增实体服务用于服务实体绑定的新增目标服务或者表单的拓展新增逻辑,实现服务实体的数据新增或者表单的拓展新增。主要有三个参数,分别为datasourceName、entityName、models。
datasourceName
数据类型:String
描述:
预留字段,数据源名称,在多数据源中使用,不传值则取默认值,默认为default数据源
entityName
数据类型:String
描述:
实体名称,用于判断操作那张数据库表。
models
数据类型:DataObject类型的数组。
描述:
要新增的实体数据,可以将数据类型选为低开中对应的构建包下的数据实体类型。
返回值
无
# 删除实体服务
删除实体服务用于服务实体绑定的删除目标服务或者表单的拓展删除逻辑,实现服务实体的数据删除或者表单的拓展删除。主要有三个参数,分别为datasourceName、entityName、ids。
datasourceName
数据类型:String
描述:
预留字段,数据源名称,在多数据源中使用,不传值则取默认值,默认为default数据源
entityName
数据类型:String
描述:
实体名称,用于判断操作那张数据库表。
ids
数据类型:String类型的数组。
描述:
删除数据的数据库主键ID,删除数据时会根据主键删除。
返回值
数据类型:DataObject类型的数组。
描述:
所删除的实体数据。
# 修改实体服务
修改实体服务用于服务实体绑定的修改目标服务或者表单的拓展修改逻辑,实现服务实体的数据修改或者表单的拓展修改。主要有三个参数,分别为datasourceName、entityName、models。
datasourceName
数据类型:String
描述:
预留字段,数据源名称,在多数据源中使用,不传值则取默认值,默认为default数据源
entityName
数据类型:String
描述:
实体名称,用于判断操作那张数据库表。
models
数据类型:DataObject类型的数组。
描述:
要修改的实体数据,可以将数据类型选为低开中对应的构建包下的数据实体类型。根据主键ID修改。
返回值
数据类型:DataObject类型的数组。
描述:
所修改的实体数据。
# 分页查询实体服务
分页查询实体服务用于服务实体绑定的分页查询目标服务,实现服务实体的分页查询。主要有六个参数,分别是datasourceName、entityName、condition、cascadeDeep、pageIndex、pageSize。
datasourceName
数据类型:String
描述:
预留字段,数据源名称,在多数据源中使用,不传值则取默认值,默认为default数据源
entityName
数据类型:String
描述:
实体名称,用于判断操作那张数据库表。
condition
数据类型:QueryConditionModel
描述:
查询条件实体,服务实体的查询条件会封装在该实体中。
QueryConditionModel介绍
该实体模型共分为四级,在逻辑流中想取出某个查询条件,应一级一级取出该值。
例如:条件中存储了name属性为puyuan的条件,在逻辑流中应使用XPath的方式取值,如condition/and/items.0/propertyValue,此时取出的值即为puyuan。想取不一样的条件下面的值,则修改对应的属性即可。
如图,在调试过程中,可以看到condition的完整属性。
public class QueryConditionModel { private QueryConditionModel.QueryConditionItemGroup and; // and条件组 private QueryConditionModel.QueryConditionItemGroup or; // or条件组 private QueryConditionModel.QueryConditionItemGroup[] orAnd; private QueryConditionModel.QueryConditionItemGroup[] andOr; private String orderPropertyNames; // 排序字段名 private QueryConditionModel.ExpandConfigItem[] expandConfigs; // 拓展属性组 public QueryConditionModel() { } public QueryConditionModel.QueryConditionItemGroup getAnd() { return this.and; } public void setAnd(QueryConditionModel.QueryConditionItemGroup and) { this.and = and; } public QueryConditionModel.QueryConditionItemGroup getOr() { return this.or; } public void setOr(QueryConditionModel.QueryConditionItemGroup or) { this.or = or; } public QueryConditionModel.QueryConditionItemGroup[] getOrAnd() { return this.orAnd; } public void setOrAnd(QueryConditionModel.QueryConditionItemGroup[] orAnd) { this.orAnd = orAnd; } public QueryConditionModel.QueryConditionItemGroup[] getAndOr() { return this.andOr; } public void setAndOr(QueryConditionModel.QueryConditionItemGroup[] andOr) { this.andOr = andOr; } public String getOrderPropertyNames() { return this.orderPropertyNames; } public void setOrderPropertyNames(String orderPropertyNames) { this.orderPropertyNames = orderPropertyNames; } public QueryConditionModel.ExpandConfigItem[] getExpandConfigs() { return this.expandConfigs; } public void setExpandConfigs(QueryConditionModel.ExpandConfigItem[] expandConfigs) { this.expandConfigs = expandConfigs; } public static class ExpandConfigItem { private String propertyNames; private String childPropertyNames; private String refEntityName; private String refPropertyName; private String refEntityPropertyIncludes; private String refEntityPropertyExcludes; private String dictTypeCode; public ExpandConfigItem() { } public String getPropertyNames() { return this.propertyNames; } public void setPropertyNames(String propertyNames) { this.propertyNames = propertyNames; } public String getChildPropertyNames() { return this.childPropertyNames; } public void setChildPropertyNames(String childPropertyNames) { this.childPropertyNames = childPropertyNames; } public String getRefEntityName() { return this.refEntityName; } public void setRefEntityName(String refEntityName) { this.refEntityName = refEntityName; } public String getRefPropertyName() { return this.refPropertyName; } public void setRefPropertyName(String refPropertyName) { this.refPropertyName = refPropertyName; } public String getRefEntityPropertyIncludes() { return this.refEntityPropertyIncludes; } public void setRefEntityPropertyIncludes(String refEntityPropertyIncludes) { this.refEntityPropertyIncludes = refEntityPropertyIncludes; } public String getRefEntityPropertyExcludes() { return this.refEntityPropertyExcludes; } public void setRefEntityPropertyExcludes(String refEntityPropertyExcludes) { this.refEntityPropertyExcludes = refEntityPropertyExcludes; } public String getDictTypeCode() { return this.dictTypeCode; } public void setDictTypeCode(String dictTypeCode) { this.dictTypeCode = dictTypeCode; } } public static class QueryConditionItem { private String propertyName; private String op; private Object propertyValue; private Object minValue; private Object maxValue; private boolean isNot; public QueryConditionItem() { } public String getPropertyName() { return this.propertyName; } public void setPropertyName(String propertyName) { this.propertyName = propertyName; } public String getOp() { return this.op; } public void setOp(String op) { this.op = op; } public Object getPropertyValue() { return this.propertyValue; } public void setPropertyValue(Object propertyValue) { this.propertyValue = propertyValue; } public Object getMinValue() { return this.minValue; } public void setMinValue(Object minValue) { this.minValue = minValue; } public Object getMaxValue() { return this.maxValue; } public void setMaxValue(Object maxValue) { this.maxValue = maxValue; } public boolean isNot() { return this.isNot; } public void setNot(boolean isNot) { this.isNot = isNot; } } public static class QueryConditionItemGroup { private QueryConditionModel.QueryConditionItem[] items; public QueryConditionItemGroup() { } public QueryConditionModel.QueryConditionItem[] getItems() { return this.items; } public void setItems(QueryConditionModel.QueryConditionItem[] items) { this.items = items; } } }
脚本图元使用condition示例:
创建服务实体,请参考请参考本文档最上方的新增服务实体;
在服务实体绑定的条件查询逻辑流中,添加脚本图元;
脚本图元添加name=puyuan条件
在脚本图元,可以给condition参数设值,此处示例为服务实体中,将查询条件设置为name全匹配puyuan的条件。
代码如下:
// 条件对象 def conditionObject = new com.primeton.gocom.afcenter.common.model.QueryConditionModel.QueryConditionItem() // 设置条件op为= conditionObject.op="=" // 设置条件属性为name conditionObject.propertyName = "name" // 设置属性条件值为puyuan conditionObject.propertyValue = "puyuan" // 条件数组 def conditonList = [] conditonList.push(conditionObject) // 设置condition条件的查询条件为name=puyuan context.condition.and.items = conditonList;
调试模式下,可以查看下个图元处,condition变量的值,此时,condition的条件即为name=puyuan
服务图元结果查看,此时就查询的为name=puyuan的结果
不加查询条件时,结果为如图所示:
注意:此处示例为name=puyuan,若想换成其他的属性,只需要修改脚本图元中的条件属性和条件值,但是要想添加其他条件,如果是全匹配条件,则需要创建条件对象,设置属性后添加到条件数组中; 如果想添加条件换为or的条件,则需要将最后一步context.condition.and.items中的and换为or。
赋值图元取值示例
赋值图元取值时,需要一级一级取,本示例为将条件condition中的name属性的值取出来存到逻辑流的name变量中
创建服务实体,请参考本文档最上方的新增服务实体;
在服务实体绑定的条件查询逻辑流中,添加赋值图元;
在服务实体页面视图中添加name的筛选条件
双击逻辑流空白处,给逻辑流添加name变量
脚本图元取值并赋值给name变量,XPath为condition/and/items.0/propertyValue
在服务图元视图的条件中填写条件,查询,逻辑流进入调试模式下,到结束图元,可以看到name的变量已经变为条件中的值。
注意:该示例,必须得在有查询条件的状态下才可以,否则会报错找不到XPath表达式。
cascadeDeep
数据类型:INT
描述:级联深度,-1,无限级联;0,不做级联;1,只级联一级...;默认是0。
pageIndex、pageSize
数据类型:INT
描述:分页参数
返回值
数据类型:PageResultList<DataObject>
PageResultList介绍:
属性:
包含三个属性,分别是INT类型的total,代表总条数;ResultList类型的data,代表所有查询出来的数据;Map<String, Serializable>类型的extendProperties,代表拓展的属性。
使用:
需要将结果集合放到PageResultList的data属性中,例如在逻辑流中查询出来结果集合result,则需要将result放入到PageResultList,具体方法可以采用赋值图元,左值选择out/data,右值为结果集合result。
# 用ID查询实体服务
用ID查询实体服务用于服务实体绑定的用ID查询目标服务,实现服务实体的用ID查询。主要有三个参数,分别是datasourceName、entityName、id。
datasourceName
数据类型:String
描述:
预留字段,数据源名称,在多数据源中使用,不传值则取默认值,默认为default数据源
entityName
数据类型:String
描述:
实体名称,用于判断操作那张数据库表。
id
数据类型:String
描述:
实体数据主键ID值,用来查找该数据。
返回值
数据类型:DataObject
描述:
该实体数据信息。