activiti流程--委派,轉辦,會籤,掛起,啟用
其中委派與轉辦的流程圖與正常的沒有啥區別,這裡直接上程式碼。
1:任務委派
任務委派只是任務人將當前的任務交給接收人進行審批,完成任務後又重新回到任務人身上。委派人查詢任務與完成任務與正常的有區別。
/**
* 指定代辦人
*/
@Test
public void delegateTask() {
String taskId = "2511";
String loginName = "0003";
activitiService.delegateTask(taskId, loginName);
}
/**
* 正在執行的任務表中被委派人辦理任務後任務會回到委派人 ,歷史任務表中也一樣,只是多了一個人進行審批
*/
@Test
public void resolveTask() {
String taskId = "2511";
Map<String,Object> map = new HashMap<>();
activitiService.resolveTask(taskId ,map);
}
@Test
public void getTaskByOwner() {
String processDefinitionKey = "delegateTask";
String owner = "0003" ;
activitiService.getTaskByOwner(processDefinitionKey, owner);
}
/**
* 根據任務擁有者查詢任務
*
* @param processDefinitionKey
* @param owner
* @return
*/
boolean getTaskByOwner(String processDefinitionKey, String owner);
/**
* 委派人完成任務
*
* @param taskId
* @param map
* @return
*/
boolean resolveTask(String taskId, Map<String, Object> map);
@Override
public boolean delegateTask(String taskId, String loginName) {
taskService.delegateTask(taskId, loginName);
return true;
}
@Override
public boolean getTaskByOwner(String processDefinitionKey, String owner) {
TaskQuery taskQuery = taskService.createTaskQuery();
// 任務列表
List<Task> list = taskQuery.processDefinitionKey(processDefinitionKey).taskOwner(owner).list();// 指定辦理人
for (Task task : list) {
LOGGER.info("任務處理人【{}】", task.getAssignee());
LOGGER.info("流程名稱【{}】", task.getName());
LOGGER.info("任務id【{}】", task.getId());
LOGGER.info("流程定義id【{}】", task.getProcessDefinitionId());
LOGGER.info("執行物件id【{}】", task.getExecutionId());
LOGGER.info("任務擁有者【{}】", task.getOwner());
}
return true;
}
@Override
public boolean resolveTask(String taskId, Map<String, Object> map) {
taskService.resolveTask(taskId, map);
return true;
}
2:任務轉辦
任務轉辦是把任務交給別人進行處理
/**
* 任務轉辦,將任務交給其他人處理
*/
@Test
public void turnTask() {
String taskId = "7511";
String assignee = "0003";
activitiService.trunTask(taskId,assignee);
}
@Override
public boolean trunTask(String taskId, String assignee) {
taskService.setAssignee(taskId, assignee);
return true;
}
3:會籤
會籤:當任務有多人審批,但只要部分人審批就可以通過,類似於投票,十個人中五個人投票通過即可通過,那麼久需要使用會籤
@Test
public void startActiviti() {
String processDefinitionKey = "counterSign";
String orgCode = "070067801";
String[] assigneeList = {"0001","0002","0003"};
// 設定變數
HashMap<String, Object> map = new HashMap<>();
map.put("createLoginName", "0003");
map.put("orgCode", orgCode);
//必須是List
map.put("assigneeList", Arrays.asList(assigneeList));
//map.put("signCount", 0);
activitiService.startActivitiAndFinsh(processDefinitionKey, map);
}
@Test
public void getValaier() {
String taskId = "35044";
Map<String, Object> variable = activitiService.getVariableByTaskId(taskId , false);
System.out.println("nrOfInstances 例項總數:"+variable.get("nrOfInstances"));
System.out.println("nrOfActiveInstances 當前還沒有完成的例項個數:"+variable.get("nrOfActiveInstances"));
System.out.println("nrOfCompletedInstances 當前完成的例項個數數::"+variable.get("nrOfCompletedInstances"));
}
4:流程掛起與啟用
/**
* 掛起流程例項
*
* @param processInstanceId
* @return
*/
boolean suspendProcessInstanceById(String processInstanceId);
/**
* 刪除流程例項
*
* @param processInstanceId
* @param reason
* @return
*/
boolean deleteProcessInstance(String processInstanceId, String reason);
/**
* 啟用流程例項(啟用掛起的流程例項)
*
* @param processInstanceId
* @return
*/
boolean activateProcessInstanceById(String processInstanceId);
/**
* 掛起流程定義
*
* @param processDefineKey
* @param cascade
* @return
*/
boolean suspendProcessDefineKey(String processDefineKey, boolean cascade);
/**
* 啟用流程定義
*
* @param processDefineKey
* @param cascade
* @return
*/
boolean activateProcessDefinitionByKey(String processDefineKey, boolean cascade);
@Override
public boolean suspendProcessInstanceById(String processInstanceId) {
runtimeService.suspendProcessInstanceById(processInstanceId);
return true;
}
@Override
public boolean activateProcessInstanceById(String processInstanceId) {
runtimeService.activateProcessInstanceById(processInstanceId);
return true;
}
@Override
public boolean suspendProcessDefineKey(String processDefineKey, boolean cascade) {
repositoryService.suspendProcessDefinitionByKey(processDefineKey,cascade,new Date());
return true;
}
@Override
public boolean activateProcessDefinitionByKey(String processDefineKey,boolean cascade){
repositoryService.activateProcessDefinitionByKey(processDefineKey,cascade,new Date());
return true;
}
相關推薦
activiti流程--委派,轉辦,會籤,掛起,啟用
其中委派與轉辦的流程圖與正常的沒有啥區別,這裡直接上程式碼。 1:任務委派 任務委派只是任務人將當前的任務交給接收人進行審批,完成任務後又重新回到任務人身上。委派人查詢任務與完成任務與正常的有區別。 /** * 指定代辦人
轉:不會“罵人”的領導,不是好領導
個人理解:正如《一分鐘經理人》所提到的,一分鐘目標、一分鐘稱讚、一分鐘更正。 一方面,工作不是哄著過日子,需要成果和產出;另一方面,工作是一份責任。因此,工作做不好就要批評、更正。 工作犯了錯,也許需要含蓄的指出,但有時也需要雷霆萬鈞、給予毫不留情的批評。一味的避重就輕不能解決問題,更可怕的
Mysql模糊查詢like效率,以及更高效的寫法 在使用msyql進行模糊查詢的時候,很自然的會用到like語句,通常情況下,在資料量小的時候,不容易看出查詢的效率,但在資料量達到百萬級,千萬級的時
在使用msyql進行模糊查詢的時候,很自然的會用到like語句,通常情況下,在資料量小的時候,不容易看出查詢的效率,但在資料量達到百萬級,千萬級的時候,查詢的效率就很容易顯現出來。這個時候查詢的效率就顯得很重要! 一般情況下like模糊查詢的寫法為(field已建立索引): SELECT `column
ubuntu作業系統,虛擬機器掛起,繼續執行虛擬機器後,無網路連線,該怎麼辦?
每次把虛擬機器關機後,網路就可以通了,但是很多時候,我們需要它能在我們下次再來的時候能夠保持原樣。 我的虛擬機器是ubuntu作業系統,所以開啟終端 輸入命令:vim /etc/network/interfaces 然後發現自己沒有許可權 這時候我們給這個檔案新增可執行,讀寫,
QThread一個最簡單的掛起,恢復的例子
class MyWorker: public QThread { private: QMutex sync; QWaitCondition pauseCond; bool is
訊號被掛起,sigwait()函式的作用
在Linux的多執行緒中使用訊號機制,與在程序中使用訊號機制有著根本的區別,可以說是完全不同。在程序環境中,對訊號的處理是,先註冊訊號處理函式,當訊號非同步發生時,呼叫處理函式來處理訊號。它完全是非同步的(我們完全不知到訊號會在程序的那個執行點到來!)。然而訊號處理函式的實現,有著許多的限制;比如有一些函式
Activiti 流程的掛起與啟用
當需要暫停使用一個 Activiti 流程時,可以通過呼叫 Activiti 的 API 來實現流程的掛起與啟用。 本文通過 ID 來掛起與啟用流程,流程定義還可以根據 Key 來完成掛起與啟用,根據實際需求來選擇呼叫哪種方法。 流程例項的掛起與啟用 通過 Runtim
linux 下C語言程式設計(2)——程序的建立,掛起,解掛,程序間通訊
在 linux 下利用C語言實現程序的建立,掛起和解掛操作 #include <stdio.h> #include <sys/stat.h> #include <sy
Spring技術內幕——事務的建立,掛起,迴歸,提交(事務攔截器和抽象事務管理器)
在涉及單個數據庫區域性事務的事務處理中,事務的最終實現和資料庫的支援是緊密相關的。對區域性資料庫事務來說,一個事務處理的操作單元往往對應著一系列的資料庫操作。 Spring事務處理主要分以下三個主要的過程: (1)讀取和處理在Spring IoC容器中配置的事務處理屬性,並
雙進程守護?內核對象?單實例....?抱歉會進程掛起...抱歉我還有HOOK....
oid get 進行 訪問 雙刃劍 con tps 不為 詳細 那時候總會問自己,這次寫的驅動,用Windbg調試過嗎? 寫SsdtHook,手動找過嗎?寫ObjectHook知道對象結構嗎?用FS寄存器獲取信息?為什麽能獲取那麽多的信息?,_kpcr與他有什麽關系?要從那
呼叫libvlc_media_player_stop經常會導致程式掛起
最近使用libvlc時碰到這個問題。google了一下。在官方論壇上也很多人碰到這個問題。但是都沒有提供比較好的解決辦法。 VLC社群的人本來時間就不多,有限的精力都花在VLC本身上了,沒有空理會libvlc上出現的問題。 除非哪天整個VLC都在libvlc上搭建,社群的人
【轉】BBC解剖了一個200斤女子,看完你會用生命去減肥!
一個 是否 ID 中國 RM 過度 中國人口 理學 enter 此文有部分血腥的解剖畫面,如果無法忍受可以現在關掉頁面! 最近BBC有一部紀錄片震驚全球, 他們用最直觀的方式告訴你肥胖有對可怕, 紀錄片的名字叫——解剖肥胖!▼ 紀錄片中,兩位解剖病理學專家
Python selenium —— 一定要會用selenium的等待,三種等待方式解讀(轉)
我們 嚴重 -s ber 約定 fire locate ror nbsp 發現太多人不會用等待了,博主今天實在是忍不住要給大家講講等待的必要性。 很多人在群裏問,這個下拉框定位不到、那個彈出框定位不到…各種定位不到,其實大多數情況下就是兩種問題:1 有frame,2 沒有加
合利寶支付,這裏我會大致講解一下支付的流程,代碼不會全部給出,如果需要代碼,可以私聊我
一點 sign 講解 業務邏輯 保存 pan col 參數 image 合利寶支付 我對接的合利寶支付從最開始的代付到如今的協議支付,坑基本都踩完了。支付對接一般是先按照文檔把文檔上的接口全部調通,然後再融入業務邏輯。 一般的互聯網公司基本上都會涉及到支付,可能支付A
CS3K.com | 工科轉CS | Amazon,華為,阿里菜鳥 會把offer給怎樣的求職者?
學員背景 CS3K.com 北美 Top50 非 CS 相關工科專業在職半年,裸辭刷題三個月 拿到 offer:Amazon,華為,阿里菜鳥,美東一個做手機 APP的小公司。 簽約 offer:Amazon 零基礎如何開始學習 CS? 作為一個學物流的,在一個小公司幹了半年之後,頓覺
【轉】掌握5個職場溝通技巧,讓你成為會說話的人!
【轉】掌握5個職場溝通技巧,讓你成為會說話的人! 說明 背景故事 高效溝通是一門技巧 1 牢記溝通目的,不妥協 2 換位思考,為對方考慮 3 說服式的溝通,結論要放在最後 4 激將法
【原創】SSM框架下,新增activiti流程引擎配置--轉載請註明出處
1.Activiti簡介 Activiti是一款基於bpmn2.0標準所開發的流程引擎,該引擎可以對bpmn20.xml和bpmn檔案進行解析,按照設計的所預先設計出的流程圖來進行流程流轉的工作流引擎。目前在市場上的大部分OA系統工作流都是基於該框架進行開發的。 2.Activiti的ja
玩轉不同業務場景,這些RabbitMQ特性會是得力助
我是在解決分散式事務的一致性問題時瞭解到的RabbitMQ,當時主要是要基於RabbitMQ來實現我們分散式系統之間對有事務可靠性要求的系統間通訊。 提到RabbitMQ,不難想到的幾個關鍵字:訊息中介軟體、訊息佇列。當時在大學學習作業系統這門課,訊息佇列不難想到生產者消費者模
3、Python基礎——輸入輸出,簡單運算子,流程控制,轉譯
參考原文:https://www.cnblogs.com/zihe/p/6951804.html 一、1、輸入輸出 python3中統一都是input python2中有raw_input等同於python3的input,另外python2中也有input #python輸入程式碼 &g
面試時95%會被問道的問題,不看會後悔【轉】
一、基本情況1、請用最簡潔的語言描述您從前的工作經歷和工作成果。 考察要點:測試應聘者是否能夠用幾句話概要地介紹其主要的工作資訊和重點業績,而不是以流水帳的形式重複履歷表有已經註明的內容。在介紹工作成 果時,注意應聘者能否正確表述其在原單位所發揮的作用。儘管有關基本能力的提問大多可以通過簡歷或應聘表格反