日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring Boot与Activiti集成实战

發布時間:2023/12/20 javascript 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring Boot与Activiti集成实战 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

為什么80%的碼農都做不了架構師?>>> ??

Spring Boot基于Spring和“習慣由于配置”原則,實現快速搭建項目的準生產框架。建議現在的Java從業者快速遷移到以Spring Boot為基礎開發,這將大大降低開發的難度和極大的提高開發效率。

項目搭建

pom.xml

<?xml version="1.0" encoding="UTF-8"?>


<projectxmlns="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.wisely</groupId>


<artifactId>activiti</artifactId>


<version>0.0.1-SNAPSHOT</version>


<packaging>jar</packaging>


<name>activiti</name>


<description>Demo project for Spring Boot</description>


<parent>


<groupId>org.springframework.boot</groupId>


<artifactId>spring-boot-starter-parent</artifactId>


<version>1.3.0.RELEASE</version>


<relativePath/><!-- lookup parent from repository -->

</parent>


<properties>


<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>


<java.version>1.8</java.version>


<activiti.version>5.21.0</activiti.version>

</properties>


<dependencies>


<dependency>


<groupId>org.springframework.boot</groupId>


<artifactId>spring-boot-starter-web</artifactId>

</dependency>


<dependency>


<groupId>org.springframework.boot</groupId>


<artifactId>spring-boot-starter-data-jpa</artifactId>

</dependency>


<dependency>


<groupId>mysql</groupId>


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

</dependency>


<dependency>


<groupId>org.activiti</groupId>


<artifactId>activiti-spring-boot-starter-basic</artifactId>


<version>${activiti.version}</version>

</dependency>


<dependency>


<groupId>org.springframework.boot</groupId>


<artifactId>spring-boot-starter-test</artifactId>


<scope>test</scope>

</dependency>

</dependencies>


<build>


<plugins>


<plugin>


<groupId>org.springframework.boot</groupId>


<artifactId>spring-boot-maven-plugin</artifactId>

</plugin>

</plugins>

</build>

</project>
?

application.properties配置

spring.jpa.hibernate.ddl-auto=update

spring.jpa.database=MYSQL

spring.datasource.url=jdbc:mysql://192.168.1.68:3306/activiti-spring-boot?characterEncoding=UTF-8

spring.datasource.username=root

spring.datasource.password=密碼

spring.datasource.driver-class-name=com.mysql.jdbc.Driver

實體類

@Entity

publicclass Person {

@Id

@GeneratedValue

private Long personId;

private String personName;

@ManyToOne(targetEntity = Comp.class)

private Comp comp;

publicPerson(){

}

publicPerson(String personName){

super();

this.personName = personName;

}

//省略getter、setter方法

}

@Entity

publicclass Comp {

@Id

@GeneratedValue

private Long compId;

private

String compName;

@OneToMany(mappedBy = "comp",targetEntity = Person.class)

private List<Person> people;

public Comp(String compName)

{this.compName = compName;}

publicComp(){

}

//省略getter、setter方法

}

DAO

public interface PersonRepository extends JpaRepository<Person, Long> {

public Person findByPersonName(String personName);

}

public interface CompRepository extends JpaRepository<Comp, Long>{

}

Activiti服務

  • @Service
  • @Transactional
  • public class ActivitiService {
  • //注入為我們自動配置好的服務
  • @Autowired
  • private RuntimeService runtimeService;
  • @Autowired
  • private TaskService taskService;
  • //開始流程,傳入申請者的id以及公司的id
  • public voidstartProcess( 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();
  • }
  • //完成任務
  • publicvoidcompleteTasks(Boolean joinApproved, String taskId){
  • Map<String, Object> taskVariables = new HashMap<String, Object>();
  • taskVariables.put("joinApproved", joinApproved);
  • taskService.complete(taskId, taskVariables);
  • }
  • }
  • ?

    Service Task服務

  • @Service
  • public class JoinService {
  • @Autowired
  • PersonRepository personRepository;
  • @Autowired
  • private CompRepository compRepository;
  • //加入公司操作,可從DelegateExecution獲取流程中的變量
  • 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("加入組織成功");
  • }else{
  • System.out.println("加入組織失敗");
  • }
  • }
  • //獲取符合條件的審批人,演示這里寫死,使用應用使用實際代碼
  • public List<String> findUsers(DelegateExecution execution){
  • return Arrays.asList("admin","wtr");
  • }
  • }
  • 控制器

  • @RestController
  • publicclass MyRestController {
  • @Autowired
  • private ActivitiService myService;
  • //開啟流程實例
  • @RequestMapping(value="/process/{personId}/{compId}", method= RequestMethod.GET)
  • publicvoidstartProcessInstance(@PathVariable Long personId,@PathVariable Long compId){
  • myService.startProcess(personId,compId);
  • }
  • //獲取當前人的任務
  • @RequestMapping(value="/tasks", method= RequestMethod.GET)
  • public List<TaskRepresentation> getTasks(@RequestParamString assignee){
  • List<Task> tasks = myService.getTasks(assignee);
  • List<TaskRepresentation> dtos = new ArrayList<TaskRepresentation>();
  • for(Task task : tasks){
  • dtos.add(newTaskRepresentation(task.getId(), task.getName()));
  • }
  • return dtos;
  • }
  • //完成任務
  • @RequestMapping(value="/complete/{joinApproved}/{taskId}", method= RequestMethod.GET)
  • publicStringcomplete(@PathVariable Boolean joinApproved,@PathVariableString taskId){
  • myService.completeTasks(joinApproved,taskId);
  • return"ok";
  • }
  • //Task的dto
  • staticclass TaskRepresentation {
  • privateString id;
  • privateString name;
  • publicTaskRepresentation(String id, String name){
  • this.id = id;
  • this.name = name;
  • }
  • publicStringgetId(){
  • return id;
  • }
  • publicvoidsetId(String id){
  • this.id = id;
  • }
  • publicStringgetName(){
  • return name;
  • }
  • publicvoidsetName(String name){
  • this.name = name;
  • }
  • }
  • }
  • ?

    入口類

  • @SpringBootApplication
  • publicclass ActivitiApplication {
  • @Autowired
  • private PersonRepository personRepository;
  • @Autowired
  • private CompRepository compRepository;
  • publicstaticvoidmain(String[] args){
  • SpringApplication.run(ActivitiApplication.class, args);
  • }
  • //初始化模擬數據
  • @Bean
  • public CommandLineRunner init(final ActivitiService myService){
  • returnnewCommandLineRunner(){
  • publicvoidrun(String... strings)throws Exception {
  • if(personRepository.findAll().size() == 0){
  • personRepository.save(newPerson("wtr"));
  • personRepository.save(newPerson("wyf"));
  • personRepository.save(newPerson("admin"));
  • }
  • if(compRepository.findAll().size() == 0){
  • Comp group = newComp("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);
  • }
  • }
  • };
  • }
  • }
  • 例子用的是jpa作為數據DAO層,實際開發中用hibernate或者jdbc或者mybatis于此集成大同小異,自己可以根據實際情況進行調整?

    轉載于:https://my.oschina.net/VILLE/blog/792756

    總結

    以上是生活随笔為你收集整理的Spring Boot与Activiti集成实战的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。