本文转自http://yy629.iteye.com/blog/671192
jbmp4.3 整合spring, 配置文件只注入processEngine 就没问题。
但是如果注入repositoryService , taskService等就会出现 Is there an unresolvable circular reference?
- <bean id="springHelper" class="org.jbpm.pvm.internal.processengine.SpringHelper" />
- <bean id="processEngine" factory-bean="springHelper" factory-method="createProcessEngine" />
但注入repositoryService:
- <bean id="repositoryService" factory-bean="processEngine"
- factory-method="getRepositoryService" />
就报如下错误
Error creating bean with name 'repositoryService' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [public final org.jbpm.api.RepositoryService org.jbpm.pvm.internal.processengine.SpringProcessEngine$$EnhancerByCGLIB$$66ea6eb4.getRepositoryService()] threw exception; nested exception is org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'repositoryService': Requested bean is currently in creation: Is there an unresolvable circular reference?
分析原因是SpringProcessEngine.getRepositoryService会调用getBean的, 出现循环引用的错误
- // SpringProcessEngine中的方法, getRepositoryService,getTaskService,等都是最终调用这个方法的
- public <T> T get(Class<T> type) {
- String[] names = applicationContext.getBeanNamesForType(type);
- if (names.length >= 1) {
- if (names.length > 1 && log.isWarnEnabled()) {
- log.warn("Multiple beans for type " + type + " found. Returning the first result.");
- }
- return (T) applicationContext.getBean(names[0]); // 会出现循环引用错误
- }
- return super.get(type);
- }
解决方案就是
方法1就是
- <bean id="springHelper" class="org.jbpm.pvm.internal.processengine.SpringHelper" />
- <bean id="processEngine" factory-bean="springHelper" factory-method="createProcessEngine" />
- <bean id="processEngineWireContext" factory-bean="processEngine" factory-method="getProcessEngineWireContext" />
- <bean id="repositoryService" factory-bean="processEngineWireContext" factory-method="get">
- <constructor-arg>
- <value type="java.lang.Class">org.jbpm.api.RepositoryService</value>
- </constructor-arg>
- </bean>
方法2就是在写个工厂类, 通过processEngineWireContext构造出一个工厂类, 工厂类中有getRepositoryService,getTaskService等方法
相关推荐
1.jbpm对象 1.1 ProcessEngine对象 1.2 RepositoryService对象 1.3 ExcutionService对象 ......
代码生成前端界面、底层代码(spring mvc、mybatis、Spring boot、Spring Cloud、微服务的生成)、安全框架、视图框架、服务端验证、任务调度、持久层框架、数据库连接池、缓存框架、日志管理、IM等核心技术。...
代码生成前端界面、底层代码(spring mvc、mybatis、Spring boot、Spring Cloud、微服务的生成)、安全框架、视图框架、服务端验证、任务调度、持久层框架、数据库连接池、缓存框架、日志管理、IM等核心技术。...
RepositoryService reporsityService = processEngine.getRepositoryService(); ExecutionService executionService=processEngine.getExecutionService(); TaskService taskService=processEngine....
集成设计器到springboot项目 在网上找了很多帖子都配置到项目中一直提示我的repositoryService啥的 也是郁闷了一会 后来才发现之前在普通三层项目里面都是在配置文件里面配置的 现在是直接一个类里面配置
activiti中想要注入自己的service 或者activiti的service
代码生成前端界面、底层代码(spring mvc、mybatis、Spring boot、Spring Cloud、微服务的生成)、安全框架、视图框架、服务端验证、任务调度、持久层框架、数据库连接池、缓存框架、日志管理、IM等核心技术。...
activiti 工作流简单案例,流程引擎对象processEngine对象(所有操作都离不开引擎对象) 由流程引擎创建各个service,这些service是调用工作流23张表到服务 repositoryService--管理流程定义 runtimeService--执行...
RepositoryService提供了对 repository的存取服务。 3. RuntimeService:在Activiti中,每当一个流程定义被启动一次之后,都会生成一个相应的流程对象实例。RuntimeService提供了启动流程、查询流程实例、设置获取...
RepositoryService: Activiti 中每一个不同版本的业务流程的定义都需要使用一些定义文件,部署文件和支持数据 ( 例如 BPMN2.0 XML 文件,表单定义文件,流程定义图像文件等 ),这些文件都存储在 Activiti 内建的 ...
Activiti 工作流面试相关知识 RepositoryService、RuntimeService、TaskService、HistoryService分别表示什么操作
activiti部署中文乱码解决,亲测有效, 1.activiti-webapp-explorer2\src\main\webapp\editor-app\i18n下en.json 2.activiti-webapp-explorer2\src\main\resources下 activiti-custom-context.xml ...
ACT_RE_*: 'RE'表示repository(存储),RepositoryService接口所操作的表。带此前缀的表包含的是静态信息,如,流程定义,流程的资源(图片,规则等)。 ACT_RU_*: 'RU'表示runtime,运行时表-RuntimeService。这是...
创建,读取,更新和删除存储库对象。 读取,写入和删除种子数据。 现在支持网络环境! 所有方法都遵循Node.js约定,该约定接受带有签名function(error, response)的回调。 还提供基于承诺的API(请参见下文)。 ...
org.springframework.dao.DataIntegrityViolationException: could not delete: [org.jbpm.pvm.internal.model.ExecutionImpl#50001]; SQL [delete from JBPM4_EXECUTION where DBID_=? and DBVERSION_=?]; ...
query-example:Camunda示例查询
5.2RepositoryService 15 5.3ExecutionService 16 5.4TaskService 16 5.5ProcessDefinition 16 5.6ProcessInstance 16 5.7Execution 17 6 管理流程定义 18 6.1设计流程定义文档 18 6.1.1图片 18 6.1.2jpdl.xml文件 ...
它检查没有调用 RepositoryService.getDefaultRepository()包装 mvn clean package这将在目标文件夹中生成一个 jar 文件。用法只需将 jar 文件复制到 SonarQube 安装的 /extensions/plugin 文件夹中。 注意:此示例...
5.2:RepositoryService 13 5.3:RuntimeService 14 5.4:TaskService 14 5.5:HistoryService 14 5.6:ProcessDefinition 14 5.7:ProcessInstance 14 5.8:Execution 14 6:HelloWorld程序(模拟流程的执行) 16 ...