项目地址:activiti-workflow
有时候需要将一些业务数据保存到流程中,activiti本身已经支持用户自定义参数,整个流程和用户节点都支持。
设置自定义流程参数
整个流程的参数都在Process对象中,通过看Process的方法可以看到有一个setAttributes方法
public void setAttributes(Map<String, List<ExtensionAttribute>> attributes) {
this.attributes = attributes;
}
看一下ExtensionAttribute对象,有这些属性
public class ExtensionAttribute {
protected String name;
protected String value;
protected String namespacePrefix;
protected String namespace;
public ExtensionAttribute() {
}
}
说一些在使用中踩过的坑。
当时是这样设置的
Map<String, List<ExtensionAttribute>> attributes = new HashMap<>(2);
List<ExtensionAttribute> extensionAttributes = new ArrayList<>();
ExtensionAttribute extensionAttribute = new ExtensionAttribute();
extensionAttribute.setName("name");
extensionAttribute.setValue("lisi");
extensionAttribute.setNamespace("user");
extensionAttribute.setNamespacePrefix("activiti");
extensionAttributes.add(extensionAttribute);
attributes.put("user",extensionAttributes);
process.setAttributes(attributes);
这样设置后面是可以取处理,但是节点上的一些属性就拿不到了。比如formKey属性。
这是由于activii在将模型数据解析为XML时,会给属性设置命名空间。
可以看UserTaskXMLConverter这个类
@Override
@SuppressWarnings("unchecked")
protected void writeAdditionalAttributes(BaseElement element