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

推荐订阅源

美团技术团队
D
DataBreaches.Net
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
D
Docker
N
Netflix TechBlog - Medium
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
C
Check Point Blog
腾讯CDC
Stack Overflow Blog
Stack Overflow Blog
V
Visual Studio Blog
IT之家
IT之家
月光博客
月光博客
U
Unit 42
K
Kaspersky official blog
T
Threatpost
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
GbyAI
GbyAI
P
Proofpoint News Feed
Last Week in AI
Last Week in AI
云风的 BLOG
云风的 BLOG
酷 壳 – CoolShell
酷 壳 – CoolShell
I
InfoQ
Engineering at Meta
Engineering at Meta
Recorded Future
Recorded Future
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
S
Security @ Cisco Blogs
MyScale Blog
MyScale Blog
大猫的无限游戏
大猫的无限游戏
Security Archives - TechRepublic
Security Archives - TechRepublic
Webroot Blog
Webroot Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Hacker News - Newest:
Hacker News - Newest: "LLM"
S
Schneier on Security
S
Secure Thoughts
The Register - Security
The Register - Security
B
Blog RSS Feed
The Last Watchdog
The Last Watchdog
P
Palo Alto Networks Blog
爱范儿
爱范儿
B
Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
N
News and Events Feed by Topic
阮一峰的网络日志
阮一峰的网络日志
L
LINUX DO - 热门话题
C
Cisco Blogs
Spread Privacy
Spread Privacy
F
Full Disclosure
博客园 - 聂微东
T
The Blog of Author Tim Ferriss

博客园 - 阿木申

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 博客园 - 阿木申

当一个流程的业务逻辑非常复杂的时候,可以考虑使用子流程。
子流程和主流程是相对独立的,关于process state节点的wait状态,也是根据子流程决定的。
使用子流程要注意:
1、要先部署子流程,然后再部署主流程,否则,主流成执行的时候会报找不到子流程的异常
2、主流程的process state节点要映射变量,作为主流程和子流程的调用参数
3、直接查看jbpm_Token或者jbpm_log无法找到流程间的关系,需要查看jbpm_processinstance表,才能找到父流程,因为Token在离开process state的时候就会删除subprocessid,直接看jbpm_log也无法看出两个token之间的关系。

参考代码如下:

 1<?xml version="1.0" encoding="UTF-8"?>
 2
 3<process-definition
 4  xmlns="urn:jbpm.org:jpdl-3.2"  name="main">
 5
 6
 7
 8    <start-state name="start-state1">
 9        <task name="begin_task"></task>
10        <transition to="process-state1"></transition>
11        <event type="node-leave">
12            <script name="begin_s">
13                executionContext.setVariable(&quot;a&quot;,new Integer(10));
14System.out.println(&quot;begin_s&quot;);
15            </script>
16        </event>
17    </start-state>
18
19
20    <process-state name="process-state1">
21        <sub-process name="sub"></sub-process>
22        <variable access="read,write" name="a" mapped-name="a"></variable>
23        <transition to="node1"></transition>
24    </process-state>
25
26    <node name="node1">
27        <event type="node-enter">
28            <script name="no_s">
29                
30                System.out.println(executionContext.getVariable(&quot;a&quot;));
31            
32            </script>
33        </event>
34        <transition to="end-state1"></transition>
35    </node>
36
37
38    <end-state name="end-state1"></end-state>
39
40
41</process-definition>

子流程的定义如下:

 1<?xml version="1.0" encoding="UTF-8"?>
 2
 3<process-definition
 4  xmlns="urn:jbpm.org:jpdl-3.2"  name="sub">
 5
 6
 7
 8    <start-state name="start-state1">
 9        <transition to="sub_task-node1"></transition>
10    </start-state>
11
12
13    <task-node name="sub_task-node1">
14        <event type="node-enter">
15            <script name="s1">
16                Integer a=(Integer)executionContext.getVariable(&quot;a&quot;);
17System.out.println(a);
18a=new Integer(200);
19executionContext.setVariable(&quot;a&quot;,a);
20
21            </script>
22        </event>
23        <transition to="end-state1"></transition>
24    </task-node>
25
26
27    <end-state name="end-state1"></end-state>
28
29
30</process-definition>