1. 程式人生 > >Activiti 跳轉節點

Activiti 跳轉節點

package com.Deer.activiti;

import java.util.Iterator;  
import java.util.Map;  
import org.activiti.engine.impl.interceptor.Command;  
import org.activiti.engine.impl.interceptor.CommandContext;  
import org.activiti.engine.impl.persistence.entity.ExecutionEntity;  
import org.activiti.engine.impl.persistence.entity.ExecutionEntityManager;  
import org.activiti.engine.impl.persistence.entity.TaskEntity;  
import org.activiti.engine.impl.pvm.process.ActivityImpl;  
   
/** 
 * 
 * 節點的跳轉 
 */  
public class NodeJumpTaskCmd implements Command<Void> {
	
	protected String executionId;//執行ID
	protected ActivityImpl desActivity; //目標引擎物件 
	protected Map<String, Object> paramvar;//變數
	protected ActivityImpl currentActivity;//當前引擎物件
	protected String deleteReason = "completed";
	/** 
	 * 構造引數 可以根據自己的業務需要新增更多的欄位 
	 * @param executionId 
	 * @param desActivity 
	 * @param paramvar 
	 * @param currentActivity 
	 */  
	public NodeJumpTaskCmd(String executionId, ActivityImpl desActivity,  
		Map<String, Object> paramvar, ActivityImpl currentActivity) {  
			this.executionId = executionId;  
			this.desActivity = desActivity;  
			this.paramvar = paramvar;  
			this.currentActivity = currentActivity;  
	}
	public NodeJumpTaskCmd(String executionId, ActivityImpl desActivity,  
			Map<String, Object> paramvar, ActivityImpl currentActivity,String deleteReason) {  
				this.executionId = executionId;  
				this.desActivity = desActivity;  
				this.paramvar = paramvar;  
				this.currentActivity = currentActivity;  
				this.deleteReason = deleteReason;  
		}
	
	/**
	 * 獲取執行實體管理
	 * 獲取當前的任務執行物件 設定對應的值
	 * 獲取當前的任務
	 * 刪除
	 * 執行目標工作流
	 */
	public Void execute(CommandContext commandContext) {
		//獲取執行實體管理
		ExecutionEntityManager executionEntityManager = commandContext.getExecutionEntityManager();  
		//根據ExecutionID 查詢執行實體   獲取當前流程的executionId,因為在併發的情況下executionId是唯一的。  
		ExecutionEntity executionEntity = executionEntityManager.findExecutionById(executionId);  
		executionEntity.setVariables(paramvar);  
		executionEntity.setEventSource(this.currentActivity);  
		executionEntity.setActivity(this.currentActivity);  
		//獲取當前ExecutionID的任務       根據executionId 獲取Task  
		Iterator<TaskEntity> localIterator = commandContext.getTaskEntityManager()  
							.findTasksByExecutionId(this.executionId).iterator();  
		while (localIterator.hasNext()) {  
			TaskEntity taskEntity = (TaskEntity) localIterator.next();  
			// 觸發任務監聽  
			taskEntity.fireEvent("complete");  
			// 刪除任務的原因  
			commandContext.getTaskEntityManager()  
			.deleteTask(taskEntity, this.deleteReason, false);  
		}  
		executionEntity.executeActivity(this.desActivity);  
		System.out.println();
		return null;  
	}  
}  
2、小封裝。

相關推薦

Activiti 節點

package com.Deer.activiti; import java.util.Iterator; import java.util.Map; import org.activiti.engine.impl.interceptor.Command; import org.activiti

Activiti到工作流的任意節點(本例用到上一節點講解即流程回退)

所有用到的service以及實現類都是工作流(Activiti)本身的。 public String taskRollback(String taskId){ //根據要跳轉的任務ID獲取

activiti節點

分享牛原創(尊重原創 轉載對的時候第一行請註明,轉載出處來自分享牛http://blog.csdn.net/qq_30739519)activiti使用的時候,通常需要跟業務緊密的結合在一起,有些業務非常的複雜,比如一個簡單的採購流程:流程如下: 供應商上新商品的時候,提交商

Activiti+Springboot到任意節點

1.TaskFlowControlService 方法類 package com.epf.activiti.service; import java.util.ArrayList; import java.util.List; import ja

擴充套件Activiti-5.12輕鬆實現流程節點間自由和任意駁回/撤回

由於專案需要,最近對開源工作流引擎Activiti-5.12的功能做了一下擴充套件,實現了以下功能: 1.自由流(流程節點間自由跳轉和任意駁回/撤回) 2.流程會籤任務串並行模式切換 一、自由流在已有流程模型的的基礎上,每個流程例項當前任務可以任意駁回/撤回或者向後續節點任

activiti靈活駁回回退操作動態修改流程

import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ObjectInputStream;

優雅的實現Activiti動態調整流程(自由、前進、後退、分裂、前加簽、後加籤等),含範例程式碼!

最近對Activiti做了一些深入的研究,對Activiti的流程機制有了些理解,對動態調整流程也有了一些實踐方法。現在好好總結一下,一來是對這段時間自己辛苦探索的一個記錄,二來也是為後來者指指路~~~如下內容準備採用QA的方式寫,很多問題都是當初自己極疑惑的問題,希望能為大

activiti 流程圖點選進行流程(簡易流程可行)

上午寫了篇關於流程執行中高亮顯示當前節點的文件,下午想到了朋友之前提供的demo,於是研究了下流程圖直接點選進行流程跳轉的操作。 當然,只是大概研究了下,搞懂原理後就沒有深入實現了,所以大概說下步驟。 1、獲取所有節點資訊 ProcessDefinitionEntity d

【iOS開發-79】利用Modal方式實現控制器之間的

article 運用 mis cli 控制 present 沒有 dismiss 導航控制器 利用Modal方法。事實上就是以下兩個方法的運用。Modal方式的切換效果是從底部呈現。 -(void)clickModal{ WPViewController *wp

JavaScript基礎 a標記 使用onclick事件阻止默認 onclick事件 與 ,onclick事件優先執行。

傳智 技術部 推薦 turn utf 傳智播客 ctype div type 鎮場詩:    清心感悟智慧語,不著世間名與利。學水處下納百川,舍盡貢高我慢意。    學有小成返哺根,願鑄一良心博客。誠心於此寫經驗,願見文者得啟發。—————————————————————

META http-equiv="refresh" 實現網頁自動

知識 meta head 網頁 src title dot shu 知識庫 使用說明: < HEAD> < TITLE>刷新內容< /TITLE> < META HTTP-EQUIV="REFRESH" CONTENT="x; UR

AngularJS路由實現單頁面

href vid 左邊欄 ref 按順序 -1 生活用品 func 為我 <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <titl

點擊鏈接如何直接到相對應的聊天窗口

pan 臨時 在線 顯示 net 電腦 str 全部 徹底 解決這個問題的步驟如下: 一、登陸騰訊官方網站:http://wp.qq.com/ 二、登陸之後,點“設置”,按下圖所示,全部打勾。這個必須設置,不設置,不能臨時會話,就會顯示“未啟用”。這一步是關

解決出現 No input file specified.

yml follow options rule input ces 跳轉 file engine 項目根目錄中.htaccess文件修改為: <IfModule mod_rewrite.c> Options +FollowSymlinks RewriteEn

php中實現頁面的幾種方式

腳本 timeout location clas replace asc idt lee 實現 親測,not復制粘貼 PHP中實現頁面跳轉有一下幾種方式,看了幾個人寫的不是很條理,自己整理一下 在PHP腳本代碼中實現 <?php header("locati

.Net語言 APP開發平臺——Smobiler學習日誌:在手機應用開發中如何實現地圖

demo hand 操作 窗體 clas com ps1 ati void 一、目標樣式 我們要實現上圖中的效果,需要如下的操作: 二、跳轉地圖代碼 VB: Private Sub Button1_Click(sender As Object, e As Ev

自動檢測,pc端與移動端打開網頁時到對應的地址

gen rec useragent androi tex index func hone oca 方法1 <script> if(navigator.platform.indexOf(‘Win32‘)!=-1){ //pc window.location.hre

站點映射到外網踩到的坑,丟失端口

部分 encoding attribute 虛擬 一段 head 將不 clas span 今天準備的線上演示版本,把端口映射到外網後,發現跳轉不正確,丟失了端口。 環境:centos7+docker 方案嘗試: 1、修改docker的端口映射,直接把nginx的端口改為外

thinkphp前臺使用JQuery後臺處理後回調

res 列表 首頁 || logs else foreach 進行 信息 thinkphp前臺使用JQuery跳轉後臺處理後回調記錄。 前臺html <input id="query" type="tel" value="" placeholder="搜索編號查詢"

ios/oc banner廣告位---- 打開瀏覽器鏈接

廣告 open toa ges -- length str ner rec //廣告位 打開瀏覽器跳轉鏈接 -(void)jumpToAdUrl:(UITapGestureRecognizer *)tap{ // self.ad_link_Str = @"http