惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
Vulnerabilities – Threatpost
U
Unit 42
F
Fortinet All Blogs
aimingoo的专栏
aimingoo的专栏
P
Proofpoint News Feed
F
Full Disclosure
月光博客
月光博客
Engineering at Meta
Engineering at Meta
博客园_首页
The Register - Security
The Register - Security
G
Google Developers Blog
The Cloudflare Blog
博客园 - Franky
K
Kaspersky official blog
A
Arctic Wolf
Scott Helme
Scott Helme
C
Cisco Blogs
Hugging Face - Blog
Hugging Face - Blog
C
Check Point Blog
NISL@THU
NISL@THU
AI
AI
D
DataBreaches.Net
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Stack Overflow Blog
Stack Overflow Blog
Project Zero
Project Zero
The GitHub Blog
The GitHub Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
量子位
Vercel News
Vercel News
T
Tor Project blog
P
Privacy International News Feed
D
Docker
I
Intezer
L
LangChain Blog
P
Proofpoint News Feed
Security Latest
Security Latest
C
CXSECURITY Database RSS Feed - CXSecurity.com
T
Threatpost
博客园 - 聂微东
AWS News Blog
AWS News Blog
Martin Fowler
Martin Fowler
P
Privacy & Cybersecurity Law Blog
V
V2EX
Last Week in AI
Last Week in AI
C
Cybersecurity and Infrastructure Security Agency CISA
The Hacker News
The Hacker News
T
Tenable Blog
Blog — PlanetScale
Blog — PlanetScale
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
Tailwind CSS Blog

博客园 - 阿木申

spring JPA 动态查询 iOS收到Push后播放声音和震动 [vb]sendkeys [vb]键盘精灵 - 阿木申 - 博客园 javascript 画带箭头的线段 关于input type='file'的内容的一种解决方法,模拟键盘 - 阿木申 - 博客园 防止IE缓存,就相当于IE选择每次打开就检查 - 阿木申 - 博客园 [dojo] 解决传中文的乱码问题 - 阿木申 - 博客园 [dojo] dojo.xhrGet和.net整合使用 [dojo]好用的页面对话框dijit.Dialog [dojo]日期选择:dijit.form.DateTextbox [dojo]功能强大的文本框:dijit.form.ValidationTextbox - 阿木申 - 博客园 dojo0.9 dojo.data研究笔记 [dojo] dojo 0.9 的使用心得 [原创]jBPM 子流程的使用 [dojo转]动态生成widget [原创]jBpm中泳道使用心得 [原创]jBPM中的Expression和script [原创]JBPM中的基本操作代码
[原创]jBPM动态生成任务实例,会签或者分派任务时特别有用
阿木申 · 2007-07-03 · via 博客园 - 阿木申

动态产生任务实例(taskInstance)。
1、将taskNode的create-tasks="false" , 而且在taskNode中设置一个<task> 。
2、在taskNode的node-enter事件上添加一个Handler ,在ActionHandler中动态添加任务实例。代码如下:

 1public void execute(ExecutionContext executionContext) throws Exception {
 2  Token token = executionContext.getToken();
 3     TaskMgmtInstance tmi = executionContext.getTaskMgmtInstance();
 4     Token token1= token;
 5     Token token2= new Token(token.getParent(),"forlimeng");     
 6     TaskNode taskNode = (TaskNode) executionContext.getNode();    
 7     //taskNode.addTask(new Task("task1"));
 8     Task changeNappy = taskNode.getTask("task_s");
 9     token1.setNode(taskNode);
10     token2.setNode(taskNode);
11
12     // now, 2 task instances are created for the same task.
13     TaskInstance ti1=tmi.createTaskInstance(changeNappy, token1);
14     ti1.setActorId("shennan");   
15     TaskInstance ti2=tmi.createTaskInstance(changeNappy, token2);
16     ti2.setActorId("limeng");
17     executionContext.getJbpmContext().getSession().saveOrUpdate(ti1);
18     executionContext.getJbpmContext().getSession().saveOrUpdate(ti2);
19  System.out.println("create task a and z ok!");
20
21 }

22
23


一定要理解透彻Token和父Token,还有Fork和Join的机制。
流程定义的代码如下:

 1<?xml version="1.0" encoding="UTF-8"?>
 2
 3<process-definition
 4  xmlns="http://jbpm.org/3/jpdl"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 5  xsi:schemaLocation="http://jbpm.org/3/jpdl http://docs.jboss.org/jbpm/xsd/jpdl-3.0.xsd"
 6  name="paidan">
 7
 8
 9
10 <start-state name="start-state1">
11  <transition to="派单"></transition>
12 </start-state>
13
14
15 <task-node name="派单">
16  <task name="task1"></task>
17  <transition to="fork1"></transition>
18 </task-node>
19
20 <fork name="fork1">
21  <transition to="处理派单"></transition>
22 </fork>
23
24 <task-node name="处理派单" create-tasks="false">
25  <task name="task_s"></task>
26  <event type="node-enter">
27   <action name="createTasks" class="sn.paidan.CreateTasksAction"></action>
28  </event>
29  <transition to="join1"></transition>
30 </task-node>
31
32 <join name="join1">
33  <transition to="end-state1"></transition>
34 </join>
35
36
37 <end-state name="end-state1"></end-state>
38
39
40</process-definition> 
41