描述
camunda引擎使用java语言开发的,当使用java语言开发业务系统,并且采用camunda引擎嵌入到业务系统中的使用方法时,可以采用纯java数据类型。如果数据通过rest api通信不方便了,更多的是采用json、xml等数据类型
docs.camunda.org/manual/7.18… docs.camunda.org/manual/7.18…
Camunda Spin Dataformat 默认支持xml、json,现在互联网项目中使用的最多的是json类型,本教程以json为主。
spin json数据写入、读取
Json写入
S('{"customer": "Kermit"}');
Json读取
Javascript中的用法,也可直接在BPMN中的Expression中使用
.elements():获取集合中的所有元素
.get(index):根据index获取集合中的具体元素
.prop("propName"):根据属性名获取值
.value():不区分类型的获取值
.stringValue():不区分类型的获取值
.numberValue():不区分类型的获取值
.value():不区分类型的获取值
.fieldNames():获取节点中所有子节点和属性的名称
.prop():设置属性
.deleteProp("name"):删除给定名称的属性
.deleteProp(List of names):删除一个或多个具有给定名称的属性
Json数组
.indexOf(Object):获取搜索对象第一次出现的索引
.lastIndexOf(Object):获取搜索对象最后一次出现的索引
.append(Object):将一个对象添加到列表末尾
.insertAt(Index, Object):在列表的特定索引处追加一个对象
.insertBefore(Search object, Object):在第一次出现第一个参数对象之前插入第二个参数对象
.insertAfter(Search object, Object):在第一次出现第一个参数对象之后插入第二个参数对象
.remove(Object):删除对象的第一次出现
.removeLast(Object):删除对象的最后一次出现
.removeAt(Index):删除指定索引处的列表项
例如${S(varibaleName).elements().get(0).prop("id").numberValue() != 1 },
从变量中,获取变量名为varibaleName的集合中的第一个元素,并获取数字类型的id是否不等于1。
类型转换
主要支持三大类型数据转换,字符串stringValue(),数字numberValue(),布尔boolValue()。
类型判断
- isObject() returns boolean
- hasProp() returns boolean
- isBoolean() returns boolean
- isNumber() returns boolean
- isString() returns boolean
- isNull() returns boolean
- isValue() returns boolean
- isArray() returns boolean
依赖添加
<dependency>
<groupId>org.camunda.bpm</groupId>
<artifactId>camunda-engine-plugin-spin</artifactId>
</dependency>
<dependency>
<groupId>org.camunda.spin</groupId>
<artifactId>camunda-spin-dataformat-all</artifactId>
</dependency>