activiti6.0學(xué)習(xí)筆記(三):核心api之RuntimeService

一嘀粱、前言

??????? 本章繼續(xù)學(xué)習(xí)activiti6.0的核心api之TaskService

二律适、TaskService

????? /**

*

*? ? 測(cè)試taskService? Task為任務(wù)盛霎,通常就是我們所說的代辦任務(wù)

*? ? taskService作用:

*? ? ? 1锦爵、對(duì)用戶任務(wù)(UserTask)進(jìn)行管理和流程的控制

*? ? ? ? a)Task對(duì)象的創(chuàng)建和刪除

*? ? ? ? b)查詢Task,并驅(qū)動(dòng)Task節(jié)點(diǎn)完成執(zhí)行

*? ? ? ? c)Task相關(guān)參數(shù)變量(variable)設(shè)置

*? ? ? 2肴甸、設(shè)置用戶任務(wù)(UserTask)的權(quán)限信息(擁有者坡疼,候選人控轿,辦理人)

*? ? ? 3缠诅、針對(duì)用戶任務(wù)添加任務(wù)附件哑蔫、任務(wù)評(píng)論和事件記錄

*? ? ? ? a)任務(wù)附件(Attachment)創(chuàng)建與查詢

*? ? ? ? b)任務(wù)評(píng)論(Comment)創(chuàng)建與查詢

*? ? ? ? c)事件記錄(Event)創(chuàng)建與查詢

*

*

* @author chaoge

* @since 2018/10/8 15:00

*/

public class TaskServiceTest {

private static final LoggerLOGGER = LoggerFactory.getLogger(RuntimeServiceTest.class);

? ? @Rule

? ? public ActivitiRulerule =new ActivitiRule();

? ? /**

? ? * 測(cè)試taskService設(shè)置和獲取變量钉寝,完成任務(wù)

? ? */

? ? @Test

? ? @Deployment(resources ="processes/testProcess-task.bpmn20.xml")

public void testTaskService(){

Map variables = Maps.newHashMap();

? ? ? ? //可以在此處傳遞參數(shù),在流程文件中通過${message}的方式接收參數(shù)闸迷,流程引擎會(huì)自動(dòng)將其替換成設(shè)置的參數(shù)

? ? ? ? variables.put("message","測(cè)試信息");

? ? ? ? ProcessInstance myProcess =rule.getRuntimeService().startProcessInstanceByKey("myProcess",variables);

? ? ? ? TaskService taskService =rule.getTaskService();

? ? ? ? Task task = taskService.createTaskQuery().singleResult();

? ? ? ? LOGGER.info("task = {}",ToStringBuilder.reflectionToString(task,ToStringStyle.JSON_STYLE));

? ? ? ? LOGGER.info("task name = {}",task.getName());

? ? ? ? LOGGER.info("task des = {}",task.getDescription());

? ? ? ? System.out.println("task =? " + ToStringBuilder.reflectionToString(task,ToStringStyle.JSON_STYLE));

? ? ? ? //設(shè)置和獲取變量? taskService.getVariables(task.getId())能獲取到流程變量和本地變量嵌纲,即第一種包含了第二種和第三種的變量

? ? ? ? Map taskServiceVariables = taskService.getVariables(task.getId());

? ? ? ? Map taskServiceVariablesLocal = taskService.getVariablesLocal(task.getId());

? ? ? ? Map processVariables =rule.getRuntimeService().getVariables(task.getExecutionId());

? ? ? ? LOGGER.info("taskServiceVariables = {}",ToStringBuilder.reflectionToString(taskServiceVariables,ToStringStyle.JSON_STYLE));

? ? ? ? LOGGER.info("taskServiceVariablesLocal = {}",ToStringBuilder.reflectionToString(taskServiceVariablesLocal,ToStringStyle.JSON_STYLE));

? ? ? ? LOGGER.info("processVariables = {}",ToStringBuilder.reflectionToString(processVariables,ToStringStyle.JSON_STYLE));

? ? ? ? //當(dāng)前流程節(jié)點(diǎn)設(shè)置完成并走向下一個(gè)節(jié)點(diǎn),同時(shí)設(shè)置參數(shù)

? ? ? ? Map variables2 = Maps.newHashMap();

? ? ? ? variables2.put("user1","chaoge");

? ? ? ? taskService.complete(task.getId(),variables2);

? ? ? ? Task task1 = taskService.createTaskQuery().taskId(task.getId()).singleResult();

? ? ? ? LOGGER.info("task1 = {}",task1);

? ? }

/**

? ? * 其中有兩個(gè)字段:OWNER_,ASSIGNEE_

? ? * 這兩個(gè)字段的意義是:

? ? * 1腥沽,ASSIGNEE_(受理人):task任務(wù)的受理人逮走,就是執(zhí)行TASK的人,這個(gè)又分兩種情況(有值今阳,NULL)

? ? * ? ? 1)师溅,有值的情況:XML流程里面定義的受理人,TASK會(huì)直接填入這個(gè)人盾舌;

? ? * ? ? 2)墓臭,NULL:XML沒有指定受理人或者只指定了候選組;

? ? *? ? ? ? 沒有值的時(shí)候妖谴,可以使用簽收功能去指定受理人起便,就是候選組里面誰簽收誰就成了受理人

? ? * 2,OWNER_(委托人):受理人委托其他人操作該TASK的時(shí)候窖维,受理人就成了委托人OWNER_,其他人就成了受理人ASSIGNEE_

*/

? ? @Test

? ? @Deployment(resources ="processes/testProcess-task.bpmn20.xml")

public void testTaskServiceUser(){

Map variables = Maps.newHashMap();

? ? ? ? //可以在此處傳遞參數(shù)妙痹,在流程文件中通過${message}的方式接收參數(shù)铸史,流程引擎會(huì)自動(dòng)將其替換成設(shè)置的參數(shù)

? ? ? ? variables.put("message","測(cè)試信息");

? ? ? ? ProcessInstance myProcess =rule.getRuntimeService().startProcessInstanceByKey("myProcess",variables);

? ? ? ? TaskService taskService =rule.getTaskService();

? ? ? ? Task task = taskService.createTaskQuery().singleResult();

? ? ? ? LOGGER.info("task = {}",ToStringBuilder.reflectionToString(task,ToStringStyle.JSON_STYLE));

? ? ? ? LOGGER.info("task des = {}",task.getDescription());

? ? ? ? taskService.setOwner(task.getId(),"user1");//owner通常是流程的發(fā)起人

? ? ? ? //taskService.setAssignee(task.getId(),"張三");//設(shè)置代辦人,此種方式會(huì)覆蓋掉原來的代辦人怯伊,不推薦使用

? ? ? ? List taskList = taskService.createTaskQuery()

.taskCandidateUser("張三")//設(shè)置了辦理用戶是張三

? ? ? ? ? ? ? ? .taskUnassigned()//沒有設(shè)置代辦人

? ? ? ? ? ? ? ? .listPage(1, 100);

? ? ? ? try {

//當(dāng)用戶已經(jīng)指定一個(gè)代辦人的時(shí)候claim獲取是會(huì)報(bào)錯(cuò)的

? ? ? ? ? ? taskList.forEach(task1->taskService.claim(task1.getId(),"張三"));//設(shè)置代辦人

? ? ? ? }catch (Exception e) {

LOGGER.error(e.getMessage(),e);

? ? ? ? }

//獲取任務(wù)相關(guān)的辦理人琳轿,包括owner、candidateUsers

? ? ? ? List identityLinks = taskService.getIdentityLinksForTask(task.getId());

? ? ? ? identityLinks.forEach(identityLink->LOGGER.info("identityLink = {}",identityLink));

? ? ? ? //獲取代辦人是張三的任務(wù)

? ? ? ? List tasks = taskService.createTaskQuery().taskAssignee("張三").listPage(0, 100);

? ? ? ? tasks.forEach(task1 ->taskService.complete(task1.getId()));

? ? ? ? List tasks2 = taskService.createTaskQuery().taskAssignee("張三").listPage(0, 100);

? ? ? ? tasks2.forEach(task1 ->LOGGER.info("張三的代辦任務(wù)task = {}",task1) );

? ? }

/**

? ? * 創(chuàng)建Attachment

*/

? ? @Test

? ? @Deployment(resources ="processes/testProcess-task.bpmn20.xml")

public void testTaskAttachment(){

Map variables = Maps.newHashMap();

? ? ? ? //可以在此處傳遞參數(shù)耿芹,在流程文件中通過${message}的方式接收參數(shù)崭篡,流程引擎會(huì)自動(dòng)將其替換成設(shè)置的參數(shù)

? ? ? ? variables.put("message","測(cè)試信息");

? ? ? ? ProcessInstance myProcess =rule.getRuntimeService().startProcessInstanceByKey("myProcess",variables);

? ? ? ? TaskService taskService =rule.getTaskService();

? ? ? ? Task task = taskService.createTaskQuery().singleResult();

? ? ? ? LOGGER.info("task = {}",ToStringBuilder.reflectionToString(task,ToStringStyle.JSON_STYLE));

? ? ? ? LOGGER.info("task des = {}",task.getDescription());

? ? ? ? taskService.createAttachment("url",task.getId(),task.getProcessInstanceId(),"name","desc","/url/test.png");

? ? ? ? List taskAttachments = taskService.getTaskAttachments(task.getId());

? ? ? ? taskAttachments.forEach(taskAttach->LOGGER.info("taskAttach = {}",ToStringBuilder.reflectionToString(taskAttach,ToStringStyle.JSON_STYLE)));

? ? }

/**

? ? * 創(chuàng)建Comment 查詢事件信息

? ? */

? ? @Test

? ? @Deployment(resources ="processes/testProcess-task.bpmn20.xml")

public void testTaskComment(){

Map variables = Maps.newHashMap();

? ? ? ? //可以在此處傳遞參數(shù),在流程文件中通過${message}的方式接收參數(shù)吧秕,流程引擎會(huì)自動(dòng)將其替換成設(shè)置的參數(shù)

? ? ? ? variables.put("message","測(cè)試信息");

? ? ? ? ProcessInstance myProcess =rule.getRuntimeService().startProcessInstanceByKey("myProcess",variables);

? ? ? ? TaskService taskService =rule.getTaskService();

? ? ? ? Task task = taskService.createTaskQuery().singleResult();

? ? ? ? LOGGER.info("task = {}",ToStringBuilder.reflectionToString(task,ToStringStyle.JSON_STYLE));

? ? ? ? LOGGER.info("task des = {}",task.getDescription());

? ? ? ? //添加評(píng)論

? ? ? ? taskService.addComment(task.getId(),task.getProcessInstanceId(),"這是我的評(píng)論");

? ? ? ? taskService.addComment(task.getId(),task.getProcessInstanceId(),"這還是我的評(píng)論");

? ? ? ? //查詢?cè)u(píng)論

? ? ? ? List taskComments = taskService.getTaskComments(task.getId());

? ? ? ? taskComments.forEach(taskComment->LOGGER.info("taskComment = {}",ToStringBuilder.reflectionToString(taskComment,ToStringStyle.JSON_STYLE)));

? ? ? ? //查詢事件

? ? ? ? List taskEvents = taskService.getTaskEvents(task.getId());

? ? ? ? taskEvents.forEach(taskEvent->LOGGER.info("taskEvent = {}",ToStringBuilder.reflectionToString(taskEvent,ToStringStyle.JSON_STYLE)));

? ? }

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末琉闪,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子砸彬,更是在濱河造成了極大的恐慌颠毙,老刑警劉巖斯入,帶你破解...
    沈念sama閱讀 211,884評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異蛀蜜,居然都是意外死亡刻两,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,347評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門滴某,熙熙樓的掌柜王于貴愁眉苦臉地迎上來磅摹,“玉大人,你說我怎么就攤上這事霎奢』模” “怎么了?”我有些...
    開封第一講書人閱讀 157,435評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵椰憋,是天一觀的道長(zhǎng)厅克。 經(jīng)常有香客問我,道長(zhǎng)橙依,這世上最難降的妖魔是什么证舟? 我笑而不...
    開封第一講書人閱讀 56,509評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮窗骑,結(jié)果婚禮上女责,老公的妹妹穿的比我還像新娘。我一直安慰自己创译,他們只是感情好抵知,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,611評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著软族,像睡著了一般刷喜。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上立砸,一...
    開封第一講書人閱讀 49,837評(píng)論 1 290
  • 那天掖疮,我揣著相機(jī)與錄音,去河邊找鬼颗祝。 笑死浊闪,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的螺戳。 我是一名探鬼主播搁宾,決...
    沈念sama閱讀 38,987評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼倔幼!你這毒婦竟也來了盖腿?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,730評(píng)論 0 267
  • 序言:老撾萬榮一對(duì)情侶失蹤凤藏,失蹤者是張志新(化名)和其女友劉穎奸忽,沒想到半個(gè)月后堕伪,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,194評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡栗菜,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,525評(píng)論 2 327
  • 正文 我和宋清朗相戀三年欠雌,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片疙筹。...
    茶點(diǎn)故事閱讀 38,664評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡富俄,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出而咆,到底是詐尸還是另有隱情霍比,我是刑警寧澤,帶...
    沈念sama閱讀 34,334評(píng)論 4 330
  • 正文 年R本政府宣布暴备,位于F島的核電站悠瞬,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏涯捻。R本人自食惡果不足惜浅妆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,944評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望障癌。 院中可真熱鬧凌外,春花似錦、人聲如沸涛浙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,764評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽轿亮。三九已至疮薇,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間我注,已是汗流浹背惦辛。 一陣腳步聲響...
    開封第一講書人閱讀 31,997評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留仓手,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,389評(píng)論 2 360
  • 正文 我出身青樓玻淑,卻偏偏與公主長(zhǎng)得像嗽冒,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子补履,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,554評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容

  • 一添坊、前言 本章繼續(xù)學(xué)習(xí)activiti6.0的核心api之TaskService 博客已經(jīng)轉(zhuǎn)至簡(jiǎn)書 (csdn寫博...
    chaogge閱讀 7,183評(píng)論 0 0
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)箫锤,斷路器贬蛙,智...
    卡卡羅2017閱讀 134,633評(píng)論 18 139
  • 一雨女、前言 最近因?yàn)楣ぷ餍枰枰罱üぷ髁髌脚_(tái)阳准。經(jīng)過研究后覺得使用activiti6.0作為平臺(tái)搭建技術(shù)》斩椋現(xiàn)將學(xué)...
    chaogge閱讀 1,844評(píng)論 0 2
  • 洪二、釋其勝進(jìn)(分二科)荒一野蝇、徵【云何名為勝進(jìn)算數(shù)讼稚?】「勝進(jìn)算數(shù)」是怎麼回事情?這是「徵」绕沈。下面第二科是「辨」锐想、說...
    德虔閱讀 136評(píng)論 0 0
  • 雷素敏堅(jiān)持分享第94天 父母要學(xué)習(xí)現(xiàn)代家庭教育理念,不讓上一代傳遞給自己的一些教條的毒素思想在孩子的童年重演乍狐。還要...
    風(fēng)雨之前閱讀 77評(píng)論 0 0