SpringBoot启动activiti自定义流程的流程,测试的时候如何发送这个url的post请求?

&>&最简单的含单元测试的spring boot+activiti集成demo
最简单的含单元测试的spring boot+activiti集成demo
上传大小:60KB
最简单的含单元测试的spring boot+activiti集成demo
综合评分:4
30积分/C币
{%username%}回复{%com_username%}{%time%}\
/*点击出现回复框*/
$(".respond_btn").on("click", function (e) {
$(this).parents(".rightLi").children(".respond_box").show();
e.stopPropagation();
$(".cancel_res").on("click", function (e) {
$(this).parents(".res_b").siblings(".res_area").val("");
$(this).parents(".respond_box").hide();
e.stopPropagation();
/*删除评论*/
$(".del_comment_c").on("click", function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_invalid/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parents(".conLi").remove();
alert(data.msg);
$(".res_btn").click(function (e) {
var parentWrap = $(this).parents(".respond_box"),
q = parentWrap.find(".form1").serializeArray(),
resStr = $.trim(parentWrap.find(".res_area_r").val());
console.log(q);
//var res_area_r = $.trim($(".res_area_r").val());
if (resStr == '') {
$(".res_text").css({color: "red"});
$.post("/index.php/comment/do_comment_reply/", q,
function (data) {
if (data.succ == 1) {
var $target,
evt = e || window.
$target = $(evt.target || evt.srcElement);
var $dd = $target.parents('dd');
var $wrapReply = $dd.find('.respond_box');
console.log($wrapReply);
//var mess = $(".res_area_r").val();
var mess = resS
var str = str.replace(/{%header%}/g, data.header)
.replace(/{%href%}/g, 'http://' + window.location.host + '/user/' + data.username)
.replace(/{%username%}/g, data.username)
.replace(/{%com_username%}/g, data.com_username)
.replace(/{%time%}/g, data.time)
.replace(/{%id%}/g, data.id)
.replace(/{%mess%}/g, mess);
$dd.after(str);
$(".respond_box").hide();
$(".res_area_r").val("");
$(".res_area").val("");
$wrapReply.hide();
alert(data.msg);
}, "json");
/*删除回复*/
$(".rightLi").on("click", '.del_comment_r', function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_comment_del/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parent().parent().parent().parent().parent().remove();
$(e.target).parents('.res_list').remove()
alert(data.msg);
//填充回复
function KeyP(v) {
var parentWrap = $(v).parents(".respond_box");
parentWrap.find(".res_area_r").val($.trim(parentWrap.find(".res_area").val()));
评论共有20条
数据库配置文件都没有,根本启动不了
个人认为不太实用
什么都没有 不实用
VIP会员动态
热门资源标签
CSDN下载频道资源及相关规则调整公告V11.10
下载频道用户反馈专区
下载频道积分规则调整V1710.18
spring mvc+mybatis+mysql+maven+bootstrap 整合实现增删查改简单实例.zip
资源所需积分/C币
当前拥有积分
当前拥有C币
输入下载码
为了良好体验,不建议使用迅雷下载
最简单的含单元测试的spring boot+activiti集成demo
会员到期时间:
剩余下载个数:
剩余积分:0
为了良好体验,不建议使用迅雷下载
积分不足!
资源所需积分/C币
当前拥有积分
您可以选择
程序员的必选
绿色安全资源
资源所需积分/C币
当前拥有积分
当前拥有C币
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
您的积分不足,将扣除 10 C币
为了良好体验,不建议使用迅雷下载
无法举报自己的资源
你当前的下载分为234。
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可返还被扣除的积分
被举报人:
请选择类型
资源无法下载 ( 404页面、下载失败、资源本身问题)
资源无法使用 (文件损坏、内容缺失、题文不符)
侵犯版权资源 (侵犯公司或个人版权)
虚假资源 (恶意欺诈、刷分资源)
含色情、危害国家安全内容
含广告、木马病毒资源
*投诉人姓名:
*投诉人联系方式:
*版权证明:
*详细原因:
最简单的含单元测试的spring boot+activiti集成demoSpringBoot的自动配置真的让人又爱又恨,但还是爱更多一点。
SpringBoot想要帮我们自动配置好一切,但是有时候配置的却并不是我们需要的,甚至有时候会默默的坑我们。
我的项目是一个多数据源的项目(多数据源戳),其中有一个主数据源configDataSource,用来存放配置的库,我又新建了一个activitiDataSource,想要存放activiti的工作表。但是springboot却把configDataSource配置为了Activiti的库。
不想把activiti的自动配置关掉,毕竟用起来还是很方便的。那么只能更改springboot对activiti的默认配置了,经过实践可以使用如下方式:注释解释的很清楚了,就不啰嗦了。
* kingboy--
* Activiti的数据和事物配置.
@Configuration
public class ActivitiConfig extends AbstractProcessEngineAutoConfiguration {
DataSource activitiDataS
PlatformTransactionManager activitiTransactionM
public SpringProcessEngineConfiguration springProcessEngineConfiguration(
SpringAsyncExecutor springAsyncExecutor) throws IOException {
return this.baseSpringProcessEngineConfiguration(activitiDataSource, activitiTransactionManager, springAsyncExecutor);
到这里就搞定了,springboot就会使用我们声名的数据源来配置Activiti了。
下面附上我的数据源和事物管理器的配置。
#-----------------------------------数据源配置-----------------------------
#activiti数据源
spring.datasource.activiti.url=jdbc:mysql://localhost:3306/activiti?characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false
spring.datasource.activiti.username=root
spring.datasource.activiti.password=123456
spring.datasource.activiti.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.activiti.maxActive=20
spring.datasource.activiti.initialSize=5
spring.datasource.activiti.minIdle=5
spring.datasource.activiti.maxWait=60000
spring.datasource.activiti.maxPoolPreparedStatementPerConnectionSize=20
spring.datasource.activiti.timeBetweenEvictionRunsMillis=60000
spring.datasource.activiti.minEvictableIdleTimeMillis=300000
spring.datasource.activiti.poolPreparedStatements=true
1.属性读取
ActivitiDataSourceProperties.java
package com.kingboy.activiti.
import lombok.D
import org.springframework.boot.context.properties.ConfigurationP
import org.springframework.stereotype.C
* configuration的数据池属性
@ConfigurationProperties(prefix = "spring.datasource.activiti")
@Component
public class ActivitiDataSourceProperties {
private String driverClassN
private Integer maxA
private Integer initialS
private Integer minI
private Integer maxW
private Integer maxPoolPreparedStatementPerConnectionS
private Integer timeBetweenEvictionRunsM
private Integer minEvictableIdleTimeM
private Boolean poolPreparedS
数据源和事物配置ActivitiJPAConfig.java
* 数据源配置
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(
entityManagerFactoryRef = "activitiEntityManagerFactory",
transactionManagerRef = "activitiTransactionManager",
basePackages = {"com.kingboy.activiti.domain"})
public class ActivitiJPAConfig {
public DataSource activitiDataSource() {
DruidDataSource dataSource = new DruidDataSource();
setDruidProperties(dataSource);
return dataS
@Autowired
ActivitiDataSourceP
private void setDruidProperties(DruidDataSource dataSource) {
dataSource.setUrl(config.getUrl());
dataSource.setUsername(config.getUsername());
dataSource.setPassword(config.getPassword());
dataSource.setDriverClassName(config.getDriverClassName());
dataSource.setMaxActive(config.getMaxActive());
dataSource.setInitialSize(config.getInitialSize());
dataSource.setMinIdle(config.getMinIdle());
dataSource.setMaxWait(config.getMaxWait());
dataSource.setMaxPoolPreparedStatementPerConnectionSize(config.getMaxPoolPreparedStatementPerConnectionSize());
dataSource.setTimeBetweenEvictionRunsMillis(config.getTimeBetweenEvictionRunsMillis());
dataSource.setMinEvictableIdleTimeMillis(config.getMinEvictableIdleTimeMillis());
dataSource.setPoolPreparedStatements(config.getPoolPreparedStatements());
public LocalContainerEntityManagerFactoryBean activitiEntityManagerFactory(EntityManagerFactoryBuilder builder) {
return builder
.dataSource(activitiDataSource())
.packages("com.kingboy.activiti.domain")
.persistenceUnit("activiti")
.properties(getProperties(activitiDataSource()))
@Autowired
private JpaProperties jpaP
private Map&String, String& getProperties(DataSource dataSource) {
return jpaProperties.getHibernateProperties(dataSource);
public PlatformTransactionManager activitiTransactionManager(EntityManagerFactoryBuilder builder) {
return new JpaTransactionManager(activitiEntityManagerFactory(builder).getObject());
springboot activiti 配置项详解
asyncExecutorEnabled属性设置设置true后将代替那些老的Job executor
spring.activiti.async-executor-enabled=false
Activiti学习之spring boot 与activiti整合
spring boot 与activiti整合教程
Activiti系列(一)SpringBoot下项目搭建
1.新建一个springboot项目,选中Web,MySQL
添加activiti的maven依赖
&!--Activiti基础JAR包--&
springboot activiti工作流简单示例
最近一直研究springboot,根据工作需求,工作流需要作为一个单独的微服务工程来提供给其他服务调用,现在简单的写下工作流(使用的activiti)微服务的搭建与简单使用
SpringBoot集成MyBatis+Activiti环境搭建及注意事项
最近在研究工作流引擎Activiti,所以从搭建环境写demo开始说起。环境是JDK1.8+SpingBoot+MyBatis+Activiti
由于IDEA自己集成了Springb...
Springboot与Activiti结合所遇到的问题
1、报错[processes/]不存在解决方案
springboot整合activiti时,启动抛异常
nested exception is java.io.FileNot...
spring boot 整合 activiti 踩过的坑 (持续更新)
1.首先是maven添加依赖各种报错。
org.activiti
activiti-spring-boot-starter-basic
Spring boot整合activiti modeler 5.22
Spring boot 整合activiti modeler
一目录结构
二整合流程
1 复制文件
2 修改文件
三activiti modeler 导入现有流程文件Spring boot 整合...
没有更多推荐了,&?xml version="1.0" encoding="UTF-8"?&
com.fengye.example
spring-boot-activiti
1.0-SNAPSHOT
spring-boot-activiti
Demo project for Spring Boot
org.springframework.boot
spring-boot-starter-parent
1.3.0.RELEASE
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-data-rest
org.springframework.boot
spring-boot-starter-data-jpa
mysql-connector-java
org.activiti
activiti-spring-boot-starter-basic
${activiti.version}
org.springframework.boot
spring-boot-starter-test
org.springframework.boot
spring-boot-maven-plugin
application.properties配置
spring.jpa.hibernate.ddl-auto=update
spring.jpa.database=MYSQL
spring.datasource.url=jdbc:mysql:
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
Person.java
package com.fengye.example.
import javax.persistence.E
import javax.persistence.GeneratedV
import javax.persistence.Id;
import javax.persistence.ManyToO
public class Person {
@GeneratedValue
private Long personId;
private String personN
@ManyToOne(targetEntity = Comp.class)
public Person() {
public Person(String personName) {
this.personName = personN
public Long getPersonId() {
return personId;
public void setPersonId(Long personId) {
this.personId = personId;
public String getPersonName() {
return personN
public void setPersonName(String personName) {
this.personName = personN
public Comp getComp() {
public void setComp(Comp comp) {
this.comp =
package com.fengye.example.
import javax.persistence.E
import javax.persistence.GeneratedV
import javax.persistence.Id;
import javax.persistence.OneToM
import java.util.L
public class Comp {
@GeneratedValue
private Long compId;
private String compN
@OneToMany(mappedBy = "comp", targetEntity = Person.class)
private List&Person&
public Comp(String compName)
{this.compName = compN}
public Comp() {
public Long getCompId() {
return compId;
public void setCompId(Long compId) {
this.compId = compId;
public String getCompName() {
return compN
public void setCompName(String compName) {
this.compName = compN
public List&Person& getPeople() {
public void setPeople(List&Person& people) {
this.people =
package com.fengye.example.
import com.fengye.example.model.P
import org.springframework.data.jpa.repository.JpaR
public interface PersonRepository extends JpaRepository&Person, Long& {
public Person findByPersonName(String personName);
.fengye.example.dao;
.fengye.example.model.Comp;
.springframework.data.jpa.repository.JpaRepository;
Activiti服务
package com.fengye.example.
import org.activiti.engine.RuntimeS
import org.activiti.engine.TaskS
import org.activiti.engine.task.T
import org.springframework.beans.factory.annotation.A
import org.springframework.stereotype.S
import javax.transaction.T
import java.util.HashM
import java.util.L
import java.util.M
@Transactional
public class ActivitiService {
@Autowired
private RuntimeService runtimeS
@Autowired
private TaskService taskS
public void startProcess(Long personId, Long compId) {
Map&String, Object& variables = new HashMap&String, Object&();
variables.put("personId", personId);
variables.put("compId", compId);
runtimeService.startProcessInstanceByKey("joinProcess", variables);
public List&Task& getTasks(String assignee) {
return taskService.createTaskQuery().taskCandidateUser(assignee).list();
public void completeTasks(Boolean joinApproved, String taskId) {
Map&String, Object& taskVariables = new HashMap&String, Object&();
taskVariables.put("joinApproved", joinApproved);
taskService.complete(taskId, taskVariables);
Service Task服务
package com.fengye.example.
import com.fengye.example.dao.CompR
import com.fengye.example.dao.PersonR
import com.fengye.example.model.C
import com.fengye.example.model.P
import org.activiti.engine.delegate.DelegateE
import org.springframework.beans.factory.annotation.A
import org.springframework.stereotype.S
import java.util.A
import java.util.L
public class JoinService {
@Autowired
PersonRepository personR
@Autowired
private CompRepository compR
public void joinGroup(DelegateExecution execution) {
Boolean bool = (Boolean) execution.getVariable("joinApproved");
if (bool) {
Long personId = (Long) execution.getVariable("personId");
Long compId = (Long) execution.getVariable("compId");
Comp comp = compRepository.findOne(compId);
Person person = personRepository.findOne(personId);
person.setComp(comp);
personRepository.save(person);
System.out.println("加入组织成功");
System.out.println("加入组织失败");
public List&String& findUsers(DelegateExecution execution) {
return Arrays.asList("admin", "wtr");
package com.fengye.example.
import com.fengye.example.service.ActivitiS
import org.activiti.engine.task.T
import org.springframework.beans.factory.annotation.A
import org.springframework.web.bind.annotation.*;
import java.util.ArrayL
import java.util.L
@RestController
public class MyRestController {
@Autowired
private ActivitiService myS
@RequestMapping(value = "/process/{personId}/{compId}", method = RequestMethod.GET)
public void startProcessInstance(@PathVariable Long personId, @PathVariable Long compId) {
myService.startProcess(personId, compId);
@RequestMapping(value = "/tasks", method = RequestMethod.GET)
public List&TaskRepresentation& getTasks(@RequestParam String assignee) {
List&Task& tasks = myService.getTasks(assignee);
List&TaskRepresentation& dtos = new ArrayList&TaskRepresentation&();
for (Task task : tasks) {
dtos.add(new TaskRepresentation(task.getId(), task.getName()));
@RequestMapping(value = "/complete/{joinApproved}/{taskId}", method = RequestMethod.GET)
public String complete(@PathVariable Boolean joinApproved, @PathVariable String taskId) {
myService.completeTasks(joinApproved, taskId);
return "ok";
static class TaskRepresentation
public TaskRepresentation(String id, String name) {
this.name =
public String getId() {
public void setId(String id) {
public String getName() {
public void setName(String name) {
this.name =
import com.fengye.example.dao.CompRepository;
import com.fengye.example.dao.PersonRepository;
import com.fengye.example.model.Comp;
import com.fengye.example.model.Person;
import com.fengye.example.service.ActivitiService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.orm.jpa.EntityScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
@SpringBootApplication
@ComponentScan("com.fengye.example")
@EnableJpaRepositories("com.fengye.example.dao")
@EntityScan("com.fengye.example.model")
public class ActivitiApplication {
@Autowired
private CompRepository compRepository;
@Autowired
private PersonRepository personRepository;
(String[] args) {
SpringApplication.run(ActivitiApplication.class, args);
public CommandLineRunner init(final ActivitiService myService) {
(String... strings)
(personRepository.findAll().size() == 0) {
personRepository.save(new Person("wtr"));
personRepository.save(new Person("wyf"));
personRepository.save(new Person("admin"));
if (compRepository.findAll().size() == 0) {
Comp group = new Comp("great company");
compRepository.save(group);
Person admin = personRepository.findByPersonName("admin");
Person wtr = personRepository.findByPersonName("wtr");
admin.setComp(group); wtr.setComp(group);
personRepository.save(admin); personRepository.save(wtr);
启动程序会自动初始化Activiti所用的数据库和我们的业务数据库,并自动发布我们的流程。
此时我们要加入的公司id为1,申请加入的人的id为2,使用PostMan访问http://localhost:8080/process/2/1 此时数据库发生如下变化
此时用户admin和wtr具备审批申请的权利,此时我们访问http://localhost:8080/tasks?assignee=admin 查看admin用户的任务,返回结果为:
[{"id":"10","name":"Approval Task"}]
我们现在通过访问http://localhost:8080/complete/true/10 完成任务,true为同意(可以选择false),10为task的id,任务完成后会自动调用Service Task,此时wyf这条记录的comp_compId为更新为当前公司的id。
Spring Boot 整合 Activiti 6.0.0 工作流引擎开发
1. Tomcat 7.0.78
Activiti 6.0.0
spring-boot-starter-parent
1.4.2.RELEASE
SpringBoot 整合Activiti(二)——流程审批完整示例
前两天做了一个SpringBoot整合Activiti的完整示例,功能包括:退回/通过(节点条件)、指定办理人、生成流程图、高亮显示已办节点、查询任务列表(办理人)等,下面先简单记录(含完整代码),十...
springboot activiti工作流简单示例
最近一直研究springboot,根据工作需求,工作流需要作为一个单独的微服务工程来提供给其他服务调用,现在简单的写下工作流(使用的activiti)微服务的搭建与简单使用
一、SpringBoot集成Activiti Modeler(坑已踩)
一、集成准备
下载activiti源码及activiti-5.22.zip源码下载GitHub地址,下载之后使用命令git checkout 5.22.0-release切换到5.22.0-rel...
SpringBoot+Activiti6.0入门
由于最近在公司做的是公司自研工作流框架UFLO2的相关工作,所以对于工作流有一些兴趣,而Activiti和JBPM是市场上的主流开源工作流引擎,因此,我决定尝试一下Activiti的使用配置Sprin...
spring boot 集成activiti工作流引擎
使用的集成开发工具是 Intellij idea1.maven配置&?xml version=&1.0& encoding=&UTF-8&?&am...
Activiti学习之spring boot 与activiti整合
spring boot 与activiti整合教程
SpringBoot 整合Activiti(一)
最近在学习Activiti工作流,学习过程整理下,方便以后回顾。
我这里用的Activiti版本是5.22,考虑后面应该会做在线绘制流程图,而6.0版本网上信息过少。。。(如下配置6.0也可试用)
...
简单的springboot+activiti工作流搭建与实现
一、什么是工作流
1.工作流是将一组任务组织起来以完成某个经营过程:定义了任务的触发顺序和触发条件,每个任务可以由一个或多个软件系统完成,也可以由一个或一组人完成,还可以由一个或多个人与软...
Spring boot 整合activiti以及大量实例
1,Spring boot 整合activiti modeler:
感谢其他作者,参考:http://blog.csdn.net/chenhai201/article/details/...
没有更多推荐了,该项目未开启捐赠功能,可发送私信通知作者开启
与超过 300 万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
已有帐号?
springboot+activiti+angular 这是spring boot框架集成activiti工作流实现,采用目前流行的restful api接口调用,前端使用angular js框架实现(maven版本:springboot-activiti-maven)
由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
#springboot-activiti
###项目本地部署###

下载附件gradle-2.12.rar,解压到任意目录,添加到PATH环境变量xx\gradle-2.12\bin

进入项目根目录,双击gradlew.bat 安装spring boot包依赖
安装js依赖: npm install

执行bower install 安装angular js依赖
执行gulp serve 编译前台页面
打开
(登录:用户名:admin 密码:admin 企业号:admin) 进行访问


项目介绍

后台框架基于Spring Boot,Spring Security
工作流使用Activiti
前台框架基于Angular js


注意事项

项目分为测试环境和生成环境,在application.yml中配置active: dev或active: prod

工作流Activiti没有创建自带的用户权限表,而是由我们自己创建用户权限视图,创建脚本在import.sql中
项目首次启动时,activiti.cfg.xml中&property name="databaseSchemaUpdate" value="true" /&
value值应设为true,以后启动更改为none,否则会因activiti表已存在导致启动失败
本项目是在jhipster项目基础上构建,具体可参考github:


###下面是项目部分截图




正在加载...

我要回帖

更多关于 结束主流程activiti 的文章

 

随机推荐