`

Activiti 开发主意事项

阅读更多

Activiti 5.9

 

runtimeService.signalEventReceived(String signalName)

这里的signalName就是流程定义里的name(not id)

 

<signal id="alertSignal" name="alert" />
 

跟rule(Drools DRL)结合部署时, 需要将rule和流程定义文件一起打成一个BAR(zip包也可以)

Note 部署时, 如果流程文件的扩展名是.bpmn(用eclipse designer默认创建的流程文件就是.bpmn), 需要为deployment的name指定一个.bpmn20.xml的名称, 负责activiti无法识别到你的流程定义

 

Deployment deployment = repositoryService.createDeployment()
				.name("BusMonitorProcess.bpmn20.xml").addZipInputStream(zis)
				.deploy();

 另一种直接的方式就是在BAR包里的.bpmn文件直接改一下扩展名为 .bpmn20.xml

 

 

 

分享到:
评论
6 楼 nanquan 2013-06-20  
jinglai 写道
请问您能详细介绍一下 activiti 和 drools 结合的详细步骤吗?
找不到这方面的学习资料,实在是着急

还有就是pool之间没有message flow 要怎么传递信息呢?

坐等回复
跪谢了!


这个我接触的也不是很多, 你可以参考一下官方的资料 http://www.activiti.org/userguide/index.html#bpmnBusinessRuleTask

5 楼 jinglai 2013-06-13  
请问您能详细介绍一下 activiti 和 drools 结合的详细步骤吗?
找不到这方面的学习资料,实在是着急

还有就是pool之间没有message flow 要怎么传递信息呢?

坐等回复
跪谢了!
4 楼 nanquan 2012-07-20  
zhang3land 写道
我用Grails activiti5.8插件,发现连接Oracle数据库的时候非常的慢,请问有没有解决的办法?

没用activiti连过oracle, 不过应该不会表现这么差, 你可以看一下有没有其他的应用在用数据库, 导致资源争夺
3 楼 zhang3land 2012-07-19  
我用Grails activiti5.8插件,发现连接Oracle数据库的时候非常的慢,请问有没有解决的办法?
2 楼 nanquan 2012-06-07  
不好意思, 刚看到你的问题, 我建议你可以这样试试
<sequenceFlow id="flow3" sourceRef="requestApprovedDecision" targetRef="sendApprovalMail">
      <conditionExpression xsi:type="tFormalExpression">${vacationApproved == 'true'}</conditionExpression>
    </sequenceFlow>
我不确定可不可以这样比, 但是这个思路应该可以.

dashamo 写道
你好,请教你一个问题,我是刚学activiti的
activiti下载包里有一个工程activiti-engine-examples
我拿 VacationRequest.bpmn20.xml 这个请假流程作为一个学习例子。假期申请人A提交一个开始节点的表单(request.form)时没有问题,这时启动一个流程实例,并给相关人员B生成一个代理任务,这也没问题,但当相应人员B处理该代理任务也就是处理A的请假请求时,他提交他的任务表单approve.form  ,后台代码如下

String taskId = request.getParameter("taskId");
String vacationApproved = request.getParameter("vacationApproved");
String managerMotivation = request.getParameter("managerMotivation");

Map<String, String> formProperties = new HashMap<String, String>();
formProperties.put("vacationApproved_type", vacationApproved_type);
formProperties.put("vacationApproved", vacationApproved);
formProperties.put("managerMotivation", managerMotivation);
formService.submitTaskFormData(taskId, formProperties);

这时最后一句话 formService.submitTaskFormData(taskId, formProperties);报错误,错误如下:
严重: Error while closing command context
org.activiti.engine.ActivitiException: condition expression returns non-Boolean: true (java.lang.String)
at org.activiti.engine.impl.el.UelExpressionCondition.evaluate(UelExpressionCondition.java:43)
at org.activiti.engine.impl.bpmn.behavior.ExclusiveGatewayActivityBehavior.leave(ExclusiveGatewayActivityBehavior.java:63)
at org.activiti.engine.impl.bpmn.behavior.FlowNodeActivityBehavior.execute(FlowNodeActivityBehavior.java:36)
at org.activiti.engine.impl.pvm.runtime.AtomicOperationActivityExecute.execute(AtomicOperationActivityExecute.java:44)
at org.activiti.engine.impl.interceptor.CommandContext.performOperation(CommandContext.java:76)
at org.activiti.engine.impl.persistence.entity.ExecutionEntity.performOperationSync(ExecutionEntity.java:497)

意思是表达式返回的不是布尔值,确实不是布尔值,
在 approve.form 中vacationApproved确实要求是boolean类型的
  <select name="vacationApproved">
    <option value="true">Yes</option>
    <option value="false">No</option>
   </select>
   <input type="hidden" name="vacationApproved_type" value="Boolean" />
我传递到后台的
String vacationApproved = request.getParameter("vacationApproved");
vacationApproved 是字符串 “true”,
可是流程文件中审批请假的这个用户任务后的这个分支节点的输入条件要求的表达式是
${vacationApproved}
流程文件片段如下
    <sequenceFlow id="flow3" sourceRef="requestApprovedDecision" targetRef="sendApprovalMail">
      <conditionExpression xsi:type="tFormalExpression">${vacationApproved}</conditionExpression>
    </sequenceFlow>

看意思是要求vacationApproved是布尔类型的,可这个变量
是请假审批人提交表单的一个数据,这个数据只能是字符串型的,因为
formService 这个服务类提交用户任务表单的方法是
void submitTaskFormData(String taskId, Map<String, String>
properties);

只能传递字符串。


现在的问题就是我传递字符串过去后台报错说 返回值是字符串“true”,不是boolean 类型的,可是我也不能直接传递一个boolean 类型的过去呀,因为api 不允许。

怎么办?
请教了!

1 楼 dashamo 2012-06-04  
你好,请教你一个问题,我是刚学activiti的
activiti下载包里有一个工程activiti-engine-examples
我拿 VacationRequest.bpmn20.xml 这个请假流程作为一个学习例子。假期申请人A提交一个开始节点的表单(request.form)时没有问题,这时启动一个流程实例,并给相关人员B生成一个代理任务,这也没问题,但当相应人员B处理该代理任务也就是处理A的请假请求时,他提交他的任务表单approve.form  ,后台代码如下

String taskId = request.getParameter("taskId");
String vacationApproved = request.getParameter("vacationApproved");
String managerMotivation = request.getParameter("managerMotivation");

Map<String, String> formProperties = new HashMap<String, String>();
formProperties.put("vacationApproved_type", vacationApproved_type);
formProperties.put("vacationApproved", vacationApproved);
formProperties.put("managerMotivation", managerMotivation);
formService.submitTaskFormData(taskId, formProperties);

这时最后一句话 formService.submitTaskFormData(taskId, formProperties);报错误,错误如下:
严重: Error while closing command context
org.activiti.engine.ActivitiException: condition expression returns non-Boolean: true (java.lang.String)
at org.activiti.engine.impl.el.UelExpressionCondition.evaluate(UelExpressionCondition.java:43)
at org.activiti.engine.impl.bpmn.behavior.ExclusiveGatewayActivityBehavior.leave(ExclusiveGatewayActivityBehavior.java:63)
at org.activiti.engine.impl.bpmn.behavior.FlowNodeActivityBehavior.execute(FlowNodeActivityBehavior.java:36)
at org.activiti.engine.impl.pvm.runtime.AtomicOperationActivityExecute.execute(AtomicOperationActivityExecute.java:44)
at org.activiti.engine.impl.interceptor.CommandContext.performOperation(CommandContext.java:76)
at org.activiti.engine.impl.persistence.entity.ExecutionEntity.performOperationSync(ExecutionEntity.java:497)

意思是表达式返回的不是布尔值,确实不是布尔值,
在 approve.form 中vacationApproved确实要求是boolean类型的
  <select name="vacationApproved">
    <option value="true">Yes</option>
    <option value="false">No</option>
   </select>
   <input type="hidden" name="vacationApproved_type" value="Boolean" />
我传递到后台的
String vacationApproved = request.getParameter("vacationApproved");
vacationApproved 是字符串 “true”,
可是流程文件中审批请假的这个用户任务后的这个分支节点的输入条件要求的表达式是
${vacationApproved}
流程文件片段如下
    <sequenceFlow id="flow3" sourceRef="requestApprovedDecision" targetRef="sendApprovalMail">
      <conditionExpression xsi:type="tFormalExpression">${vacationApproved}</conditionExpression>
    </sequenceFlow>

看意思是要求vacationApproved是布尔类型的,可这个变量
是请假审批人提交表单的一个数据,这个数据只能是字符串型的,因为
formService 这个服务类提交用户任务表单的方法是
void submitTaskFormData(String taskId, Map<String, String>
properties);

只能传递字符串。


现在的问题就是我传递字符串过去后台报错说 返回值是字符串“true”,不是boolean 类型的,可是我也不能直接传递一个boolean 类型的过去呀,因为api 不允许。

怎么办?
请教了!

相关推荐

    activiti-5.22.0 官方资源

    它可能包含了快速入门指南、系统需求、升级注意事项等内容。 总的来说,这个压缩包为开发者提供了一整套完整的Activiti 5.22.0环境,从数据库设置到Web服务部署,再到详细的技术文档,都是开发和运维Activiti流程...

    activiti工作流中文说明文档

    注意事项 -------- * 试验性功能标记着[EXPERIMENTAL]的章节表示功能尚未稳定。 * 所有包名中包含.impl.的类都是内部实现类,不保证稳定性。 * 内部实现类在jar包中,所有包名中包含.impl.(例如:org.activiti....

    activiti6 完整包

    这是标准的项目说明文件,通常包含了项目的简介、安装指南、使用提示和可能的注意事项,是了解项目的第一步。 6. **activiti_readme.png**: 这可能是一个图形化的README,通过图像展示Activiti的架构或者关键...

    activiti-6.0 官网

    `readme.html` 和 `notcie.txt` 文件可能包含了关于如何配置和使用Activiti的详细信息,包括这些特殊环境下的注意事项。`activiti_readme.png` 可能是流程引擎配置的截图,提供了更直观的指导。 总结起来,Activiti...

    MyEclipse10安装activiti5插件完美解决方案

    6. **注意事项**:安装过程中可能会遇到版本兼容性问题,确保MyEclipse10和Activiti5插件的版本相匹配。如果遇到问题,可以参考文档`MyEclipse10安装activiti-designer-5.15插件完美解决方案.doc`,它应该提供了详细...

    Activiti-6.0 官网资源

    9. **注意事项**:"notice.txt"可能包含了一些使用 Activiti 时需要注意的法律或技术细节,比如版权信息、使用限制等。 10. **帮助文档**:"readme.html"和"activiti_readme.png"提供了关于如何使用和配置 Activiti...

    通用eclipse版activiti插件

    具体细节可参考压缩包内的readme.txt文件,通常会列出此版本的主要更新内容和使用注意事项。 使用该插件前,需要确保Eclipse或MyEclipse的版本与插件兼容,例如本插件已经在Eclipse Neon和MyEclipse下进行了测试,...

    疯狂Workflow讲义-基于Activiti的工作流应用开发

    六、最佳实践与注意事项 - 设计清晰的流程模型,避免过度复杂化。 - 合理利用流程变量和表达式,简化代码逻辑。 - 考虑流程的可维护性和扩展性,避免硬编码。 - 注意性能优化,如合理设置缓存策略,避免过多数据库...

    前后端分离项目中引入activiti工作流引擎

    本文将详细介绍如何在前后端分离的项目中引入Activiti工作流引擎,并结合具体的步骤和注意事项,帮助开发者顺利完成集成过程。 #### 二、ActivitiDesigner安装与使用 **1. 安装流程设计器** ##### 安装方式一:...

    Springboot 整合activiti及使用案例

    **四、注意事项** 1. **编码问题**:由于文件编码问题,可能会出现 BPMN 文件显示乱码的情况,确保文件使用 UTF-8 编码打开和编辑。 2. **版本兼容性**:使用时注意 SpringBoot 和 Activiti 版本的兼容性,避免出现...

    activiti6官方版本

    5. **最佳实践与注意事项** - **版本控制**:对流程模型进行版本管理,确保升级和回滚的可行性。 - **权限管理**:合理分配任务权限,确保流程的安全性和合规性。 - **性能优化**:关注流程执行效率,避免无谓的...

    Eclipse luna 下 Activiti5.18 插件安装

    **注意事项和常见问题解决** 1. **错误提示**:在安装过程中,可能会遇到依赖项缺失或版本不兼容的错误。检查您的Eclipse和JDK版本是否符合Activiti的要求。 2. **网络问题**:如果在Marketplace中搜索或下载插件时...

    Activiti入门篇之二 Spring 与Activiti的入门整合

    **标题解析:** ...8. **最佳实践**:分享在实际项目中整合Spring和Activiti时的注意事项和优化技巧。 通过以上内容,读者应该能够理解如何在Spring环境中配置和使用Activiti,为自己的项目添加流程管理功能。

    activiti-app.zip

    四、汉化注意事项 1. **保持一致性**:在翻译过程中,应遵循中文的语言规范和表达习惯,同时确保与原有英文含义保持一致,避免因为翻译不准确导致用户困惑。 2. **兼容性检查**:汉化后,要确保新版本在各种浏览器...

    Activiti 5.4用户指南(中文)

    Activiti 是一个开源的工作流和业务自动化引擎,广泛应用于企业级应用中,提供流程定义、执行、监控等全套解决方案。...同时,了解 Activiti 的最佳实践和注意事项,能够有效地规避潜在的问题,提升流程效率。

    activiti-designer-5.18.0.rar

    6. 注意事项: - 由于"activiti-designer-5.18.0"版本较旧,可能不支持最新的BPMN规范或Activiti特性。考虑升级到更高版本以获取更多功能和安全性更新。 - 在实际应用中,应确保流程设计符合业务需求,避免过于...

    activiti -eclipse 5.18插件

    2. `使用须知.txt`:这是安装和使用插件的重要指南,通常会包含步骤说明、注意事项以及可能遇到的问题解决方案。仔细阅读这个文件能帮助用户避免常见错误,并成功安装和配置插件。 3. `plugins`:这个目录包含了...

    activiti-5.15.11.zip

    - `readme.html`:通常包含关于软件的基本信息,安装指南,注意事项等。 - `notice.txt`:可能包含版权和许可信息,以及对第三方库使用的声明。 - `license.txt`:软件的授权协议,规定了如何使用、分发和修改...

    [应用开发及迁移][客户端编程开发框架]Activiti指南.pdf

    Activiti注意事项 在使用Activiti时还需要注意以下几点: - **版本兼容性**:确保Activiti版本与KingbaseES版本的兼容性。 - **数据库类型**:Activiti 支持多种数据库,但需正确设置 `databaseType` 参数。 - **...

    整合activiti-5.21.0流程设计器

    - **注意事项:** 如果只部署`.bpmn20.xml`文件,Activiti会自动生成一张流程图图片,但这可能会导致坐标和图片之间的不匹配问题。 **2. 使用Activiti Modeler工具设计的流程图** - **文件类型:** 通常只需要部署`....

Global site tag (gtag.js) - Google Analytics