Activiti错误解决

1.不是 'NCName' 的有效值

eclipse画bpmn文件时,给节点id设置为1,deploy时提示该错误。后发现是因为NCName有自己的命名规范,字符或者下划线()开头,后接xml规范中允许的任意字符、数字、符号等。此处不符合命名规范,所以报错,修改命名后,解决。

2.[Validation set: 'activiti-executable-process' | Problem: 'activiti-servicetask-missing-implementation'] : One of the attributes 'class', 'delegateExpression', 'type', 'operation', or 'expression' is mandatory on serviceTask. - [Extra info : processDefinitionId = myProcess | processDefinitionName = yewujiedian |  | id = service1 |  | activityName = 业务1 | ] ( line: 5, column: 43)

设置服务节点时,未设置'class', 'delegateExpression', 'type', 'operation', or 'expression'属性中的任意一个,可构建一个class方法,填在class属性中即可

3.在流程启动的时候RuntimeService.startProcessInstanceById(id, params)设置了流程实例级别的全局变量,但是在ProcessInstance.getProcessVariables()却获取不到(答案参考自:https://www.oschina.net/question/915507_155915

这个问题,要从activiti的模型说起。

activiti自己实现了一个命令模式,所有的操作都是通过命令模式实现的,命令模式的好处是可以在执行命令前打开环境,命名结束后关闭环境。

很不幸的是,activiti是通过这种方式,打开jdbc和关闭jdbc的。

所以,一旦关闭jdbc,也就是执行cmd后,就不能操作数据库里,它没有hibernate那种OpenSessionInVIew的功能。

所以,你必须在cmd执行完之前,告诉activiti,需要取变量,否则它根本就不会去搜索,不发sql,就算数据库里有变量,也取不出来啊。

告诉activiti的方式,就是通过includeProcessVariables。

比如runtimeService.createProcessInstanceQuery().includeProcessVariables().list()就有变量

比如runtimeService.createProcessInstanceQuery().list()就没变量

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值