1. 程式人生 > >activiti第三步:demo核心程式碼

activiti第三步:demo核心程式碼

實體類

Person.java

package com.fengye.example.model;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToOne;

/**
 * Created by jery on 2016/11/23.
 */
@Entity
public classPerson{
	
	@Id
	@GeneratedValue
	private Long personId;
	
	private
String personName; @ManyToOne(targetEntity = Comp.class) private Comp comp; publicPerson(){ } publicPerson(String personName){ this.personName = personName; } public Long getPersonId(){ return personId; } publicvoidsetPersonId(Long personId){ this.personId = personId; } public
String getPersonName()
{ return personName; } publicvoidsetPersonName(String personName){ this.personName = personName; } public Comp getComp(){ return comp; } publicvoidsetComp(Comp comp){ this.comp = comp; } }

Comp.java

package com.fengye.example.model;

import javax.persistence.Entity;
import
javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.OneToMany; import java.util.List; /** * Created by jery on 2016/11/23. */ @Entity public classComp{ @Id @GeneratedValue private Long compId; private String compName; @OneToMany(mappedBy = "comp", targetEntity = Person.class) private List<Person> people; publicComp(String compName){this.compName = compName;} publicComp(){ } public Long getCompId(){ return compId; } publicvoidsetCompId(Long compId){ this.compId = compId; } public String getCompName(){ return compName; } publicvoidsetCompName(String compName){ this.compName = compName; } public List<Person> getPeople(){ return people; } publicvoidsetPeople(List<Person> people){ this.people = people; } }

DAO

package com.fengye.example.dao;

import com.fengye.example.model.Person;
import org.springframework.data.jpa.repository.JpaRepository;

/**
 * Created by jery on 2016/11/23.
 */
public interfacePersonRepositoryextendsJpaRepository<Person, Long> {
	
	public Person findByPersonName(String personName);
	
}

package com.fengye.example.dao;

import com.fengye.example.model.Comp;
import org.springframework.data.jpa.repository.JpaRepository;

public interface CompRepository extends JpaRepository<Comp, Long> {
	
}

Activiti服務

package com.fengye.example.service;

import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.task.Task;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.transaction.Transactional;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * Created by jery on 2016/11/23.
 */

@Service
@Transactional
public class ActivitiService {
	//注入為我們自動配置好的服務
	@Autowired
	private RuntimeService runtimeService;
	@Autowired
	private TaskService taskService;
	
	//開始流程,傳入申請者的id以及公司的id
	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.service;

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 org.activiti.engine.delegate.DelegateExecution;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Arrays;
import java.util.List;

/**
 * Created by jery on 2016/11/23.
 */
@Service
public classJoinService{
	@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");
	}
}

控制器

package com.fengye.example.controller;

/**
 * Created by jery on 2016/11/23.
 */

import com.fengye.example.service.ActivitiService;
import org.activiti.engine.task.Task;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.ArrayList;
import java.util.List;

@RestController
public classMyRestController{
	@Autowired
	private ActivitiService myService;
	
	//開啟流程例項
	@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()));
		}
		return dtos;
	}
	
	//完成任務
	@RequestMapping(value = "/complete/{joinApproved}/{taskId}", method = RequestMethod.GET)
	public String complete(@PathVariable Boolean joinApproved, @PathVariable String taskId) {
		myService.completeTasks(joinApproved, taskId);
		return "ok";
	}
	
	//Task的dto
	static classTaskRepresentation
	
	{
		private String id;
		private String name;
		
		public TaskRepresentation(String id, String name) {
			this.id = id;
			this.name = name;
		}
		
		public String getId() {
			return id;
		}
		
		public void setId(String id) {
			this.id = id;
		}
		
		public String getName() {
			return name;
		}
		
		public void setName(String name) {
			this.name = 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;

/**
 * Created by jery on 2016/11/23.
 */

@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;
   
   
   public static void main(String[] args) {
      SpringApplication.run(ActivitiApplication.class, args);
   }
   
   //初始化模擬資料
   @Bean
   public CommandLineRunner init(final ActivitiService myService) {
      return new CommandLineRunner() {
         public void run(String... strings) throws Exception {
            if (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);
            }
         }
      };
   }
}

相關推薦

activitidemo核心程式碼

實體類 Person.java package com.fengye.example.model; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import ja

部署AlwaysOn集群資源組的健康檢測和故障轉移

exe htm 有一個 監控器 name 檢查 oar ges 包含 資源組是由一個或多個資源組成的組,WSFC的故障轉移是以資源組為單位的,資源組中的資源是相互依賴的。一個資源所依賴的其他資源必須和該資源處於同一個資源組,跨資源組的依賴關系是不存在的。在任何時刻,每個資源

學習 WebService 一個簡單的實例(SoapUI測試REST項目)

方法 資源 ima .com required tle margin 導出 ont 原文地址:SOAPUI測試REST項目(六)——REST服務和WADL ↑↑↑ 原文用的SoapUI,2018-3-19時,這個軟件已經更名為ReadyAPI(集成了SoapUI),因此下文

AbpZero之企業微信---登錄(拓展第三方auth授權登錄)---需要註意事項

login eat exce sync private open 生成 isp lose 1、AbpZero的auth登錄會在數據庫中的AbpUserLogins表會根據你登錄的ProviderKey和Provider來生成生成一條記錄,ProviderKey在表中是唯一的

移動sprite小精靈

開啟第二步的專案,給遊戲新增敵人enemies 自定義addTarget()函式來完成這項工作 使敵人從螢幕左邊出生,以一個隨機random的速度向左移動 在HelloWorldScene.h標頭檔案加入void addTarget()宣告 在HelloWorldScen

六章 個人優化vim 主題colorscheme

主題就是別人設計好的配色風格,主題本身是跨平臺的,並非linux下 vim專用。 visual studio,xcode等開發工具均可選用,類似於遊戲中的面板。 開啟一個Vim視窗,輸入命令:col

Android應用程式訪問linux驅動實現並向系統註冊Service

前面兩篇部落格記錄了實現Linux驅動和使用HAL層訪問Linux驅動的程式碼,我們分別對這兩部分做了測試,他們都正常工作。有了前面的基礎,我們就可以實現service層了,我們想系統註冊我們自己的service,在service中訪問HAL層,在HAL層中訪問

拖拽的效果 第一 設置 可拖拽的屬性 draggable="true" 綁定drag 事件 第二 設置 放置位置 觸發的事件 dragover 設置 放置之後 觸發的事件 dragover 下面請看代碼

存儲 targe 觸發 get tex 一個 func ons *** (function(){ /*-------節點--------*/ var myimg = document.getElementById(‘myimg‘); var dropBox

《惡意程式碼分析實戰》--動態基礎分析

一、虛擬網路環境配置 配置環境:伺服器端kali2.0 客戶端win7 1、配置inetsim kali自帶inetsim,因此只需配置就可以了(但是好像不配置也是可以的……) 配置連結:http://www.cnblogs.com/hyq20135317/p/5515675.h

卜若的程式碼筆記系列-Web系列-SpringBoot-Maven(主要是idea裡面的,但是maven的普適eclipse等ide)-3202

1.配置jdk 要點:預設安裝(除非你是大佬),配置java_home    配置path: 2.配置maven 3.配置IDEA IDEA去官網上下載一下 http://www.jetbrains.com/idea/download/#secti

頂級架構師學習——階段深入JVM核心——原理、診斷與優化

1、JVM簡介 JVM是Java Virtual Machine的簡稱,意為Java虛擬機器,使用軟體模擬Java 位元組碼的指令集。 2、JVM執行機制 JVM啟動流程 JVM基本結構   1.PC暫存器 每個執行緒擁有一個PC暫存器,線上程建立時建立,指

卜若的程式碼筆記系列-unity系列-android互動之android studio(as)打jar包-5003

1.本章的基礎是有一定的android基礎,當然,沒有android studio開發經驗的同學也可以參考一下,難度並不是太大。 我們這一章的主要目的是建立一個jar包,然後能夠在unity裡面引用。 當然,這一部分僅僅只是在android studio裡面打jar包的部

卜若的程式碼筆記系列-mysql系列-通過cmd登入mysql,可實現遠端登入,以及退出,切換賬號

1.通過cmd進入到各個硬碟 舉個例子:比如我現在要進入到c盤 直接: C:\Users\Skady_cat>cd/ 或者: C:\Users\Skady_cat>d: 然後cd到mysql的根目錄,如果預設安裝的話應該是這個目錄 C:\Progra

卜若的程式碼筆記-photon系列-訊息傳遞

1.建立訊息傳遞介面(photon的字典對映),客戶端 /// <summary> /// 像伺服器傳遞引數 /// </summary> /// <param name="MainCode">主運算元&l

第一行程式碼——軟體也要拼臉蛋——UI開發的點點滴滴

目錄: 3.1 如何編寫程式介面 3.2 常用控制元件的使用方法 3.2.1TextView 3.2.2 Button 3.2.3 EditText 3.2.4 ImageView 3.2.5 ProgressBar 3.2.6 Al

機器學習為慈善機構尋找捐助者

alt earch .get 變量 照相 標簽 log 比較 random 這個任務同樣是在Jupyter Notebook中完成, 項目目的是通過前面的所有特征列,當然去掉序號列,然後預測最後一列,收入‘income‘,究竟是大於50K,還是小於等於50K. 第一

【Linux探索之旅】第一部分測試並安裝Ubuntu

u盤 nco 過程 sans ubunt windows u盤啟動盤 系統 .com 內容簡單介紹 1、第一部分第三課:測試並安裝Ubuntu 2、第一部分第四課預告:磁盤分區 測試並安裝Ubuntu 大家好,經過前兩個比較偏理論(是否

讀構建之法 軟件工程師的成長

知識點 可維護 vid -s 評估 不同 fun 可靠 科研 本章理論和知識點:評價軟件工程師水平的主要方法 軟件工程把相關的技術和過程統一到一個體系中,叫“軟件開發流程”,軟件開發流程的目的是為了提高軟件開發、運營、維護的效率,以及提升用戶滿意度、軟件的可靠性和可維護性。

linux設備驅動寫一個簡單的字符設備驅動

提示 copy flags 驅動程序 相關 clas open ugo param 在linux設備驅動第一篇:設備驅動程序簡介中簡單介紹了字符驅動,本篇簡單介紹如何寫一個簡單的字符設備驅動。本篇借鑒LDD中的源碼,實現一個與硬件設備無關的字符設備驅動,僅僅操

Python基礎函數

turn 說明 代碼 名稱 維護 span 大小寫 div 邏輯 一、Python函數介紹 1.函數的作用 規範代碼使代碼變得邏輯性更強 提高可讀性,方便管理,降低維護成本,以及降低代碼冗余 函數是組織好的,可重復使用的,用來實現單一,或相關聯功能的代碼段。 2.函