基于SpringBoot的jbpm7环境搭建

基于SpringBoot的jbpm7环境搭建

1 创建SpringBoot 项目

pom.xml如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.xxxx</groupId>
	<artifactId>springboot-demo</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.1.4.RELEASE</version>
	</parent>
	<dependencies>

		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
		</dependency>

		<dependency>
			<groupId>org.kie</groupId>
			<artifactId>kie-server-spring-boot-starter-jbpm</artifactId>
			<version>7.31.0.Final</version>
		</dependency>
		<dependency>
			<groupId>tomcat</groupId>
			<artifactId>naming-factory-dbcp</artifactId>
			<version>5.5.15</version>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-jpa</artifactId>
		</dependency>

	</dependencies>
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>
</project>

application.properties配置文件如下:

server.port=8080
server.servlet.context-path=/spring

#datasource configuration
spring.datasource.username=root
spring.datasource.password=1234
spring.datasource.url=jdbc:mysql://localhost:3307/jbpm?useUnicode=true&characterEncoding=utf8&useSSL=true&serverTimezone=Asia/Chongqing


#hibernate configuration
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.properties.hibernate.show_sql=true
spring.jpa.properties.hibernate.hbm2ddl.auto=update
#Entity scan packages
spring.jpa.properties.entity-scan-packages=application.entity
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl


#transaction manager configuration
spring.jta.narayana.transaction-manager-id=1


logging.level.com.arjuna.ats.jdbc=ERROR

2 创建jbpm配置文件

package application.config;

import javax.persistence.EntityManagerFactory;

import org.jbpm.runtime.manager.impl.RuntimeEnvironmentBuilder;
import org.jbpm.services.task.identity.DBUserGroupCallbackImpl;
import org.kie.api.io.ResourceType;
import org.kie.api.runtime.KieSession;
import org.kie.api.runtime.manager.RuntimeEngine;
import org.kie.api.runtime.manager.RuntimeEnvironment;
import org.kie.api.runtime.manager.RuntimeManager;
import org.kie.api.runtime.manager.RuntimeManagerFactory;
import org.kie.api.task.TaskService;
import org.kie.internal.io.ResourceFactory;
import org.kie.internal.runtime.manager.context.EmptyContext;
import org.kie.internal.task.api.UserGroupCallback;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.DependsOn;

@Configuration
public class JbpmConfig {
   
   
	
	@Bean
	RuntimeEnvironment runtimeEnvironment(EntityManagerFactory entityManagerFactory) {
   
   
		RuntimeEnvironment runtimeEnvironment = RuntimeEnvironmentBuilder.Factory.get()
				.newDefaultBuilder().entityManagerFactory(entityManagerFactory)
           		//Test.bpmn放置于resource文件夹下
				.addAsset(ResourceFactory.newClassPathResource("Test.bpmn"), ResourceType.BPMN2)
				.get();
		return runtimeEnvironment;
	}
	
	@Bean
	RuntimeManager runtimeManager(RuntimeManagerFactory runtimeManagerFactory,RuntimeEnvironment runtimeEnvironment) {
   
   
		RuntimeManager runtimeManager = runtimeManagerFactory.newSingletonRuntimeManager(runtimeEnvironment);
		return runtimeManager;
	}
	@Bean
	RuntimeEngine runtimeEngine(RuntimeManager runtimeManager) {
   
   
		RuntimeEngine runtimeEngine = runtimeManager.getRuntimeEngine(EmptyContext.get());
		return runtimeEngine;
	}
	@Bean
	KieSession kieSession(RuntimeEngine runtimeEngine) {
   
   
		KieSession kieSession = runtimeEngine.getKieSession();
		return kieSession;
	}
	@Bean
	TaskService taskService(RuntimeEngine runtimeEngine) {
   
   
		TaskService taskService = runtimeEngine.getTaskService();
		return taskService;
	}
    //userGroupCallback用于判断用户是否存在,组是否存在,找到用户所属的组,默认已经配置了SpringSecurityUserGroupCallback作为userGroupCallback的bean,但是我们希望使用自己的数据库表来进行判断,所以配置DBUserGroupCallbackImpl作为 userGroupCallback的bean,需要使用jbpm.usergroup.callback.properties来配置
	@Bean
	@DependsOn("jndiDataSource")
	UserGroupCallback userGroupCallback() {
   
   
		return new DBUserGroupCallbackImpl(true);
	}
	
	
}

jbpm.usergroup.callback.properties配置如下:

#jndi name
db.ds.jndi.name=java:comp/env/jdbc/kpi
#判断用户是否存在
db.user.query=select username from kpi_user where username=?
#判断用户所属的组
db.user.roles.query=select r.rolename from kpi_role r join kpi_user_role ur on r.id=ur.rid join kpi_user u on u.id = ur.uid where u.username=?
#判断组是否存在
db.roles.query=select rolename from kpi_role where rolename=?

这些配置信息会被加载到DBUserGroupCallback中,当需要进行判断用户是否存在时,就用db.user.query获取的sql来查询数据库,根据result判断用户是否存在。

配置jndi datasource

package application.config;

import javax.naming.NamingException;
import javax.sql.DataSource;

import org.apache.catalina.Context;
import org.apache.catalina.startup.Tomcat;
import org.apache.tomcat.util.descriptor.web.ContextResource;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.embedded.tomcat.TomcatWebServer;
import org.springframework.context.annotation.Bean;
import org
2017jBPM 正式发布了全新的 7版本。jBPM 是一个完全开源的业务流程管理(BPM)和案例管理解决方案。它支持流程和案例的完整生命周期,从编写工具到执行一直到监控和管理。 在核心引擎之上,提供了许多功能和工具来支持整个生命周期中的业务流程: 基于Eclipse和基于Web的编辑器,用于支持业务流程的图形化创建(拖放)。 基于JPA / JTA的可插拔持久性和事务。 基于WS-HumanTask的可插拔人工任务服务,用于包含需要由人类执行者执行的任务。 管理控制台支持流程实例管理,任务列表和任务表单管理以及报告。 部署流程的可选流程仓库(和其他相关知识)。 历史记录(用于查询/监视/分析)。 与Seam,Spring,OSGi等集成 BPM通过以业务用户和开发人员喜欢的方式提供流程管理功能和工具,从而实现业务分析师,开发人员和最终用户之间的桥梁。域特定的节点可以插入调色板,使业务用户更容易理解这些过程。 jBPM支持自适应和动态过程,需要灵活性来模拟复杂的现实生活中的情况,这些情况不能用刚性过程轻松描述。我们通过允许他们控制进程的哪些部分来执行,动态地偏离进程等,使控制回到终端用户。 jBPM也不仅仅是一个独立的流程引擎。复杂的业务逻辑可以被建模为业务流程与业务规则和复杂事件处理的组合。jBPM可以与Drools项目相结合,以支持将这些范例集成到一起的统一环境,您可以将业务逻辑作为过程,规则和事件的组合进行建模。 工作是MAVEN+eclipse jBPM jars也可以在中央maven仓库中使用 (也可以在JBoss maven仓库中)。 如果您使用Maven,只需添加一个依赖关系pom.xml: org.jbpm jbpm-test 7.3.0.Final 这与Gradle,Ivy和Buildr类似。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值