??xml version="1.0" encoding="utf-8" standalone="yes"?>成人污污www网站免费丝瓜,免费精品99久久国产综合精品,日本欧美日韩http://www.aygfsteel.com/jbpm/zh-cnMon, 19 May 2025 04:39:52 GMTMon, 19 May 2025 04:39:52 GMT60jBPM开发企业流E应用之在Tomcat上部|流E引擎及(qing)控制?/title><link>http://www.aygfsteel.com/jbpm/archive/2007/12/12/167259.html</link><dc:creator>jbpm</dc:creator><author>jbpm</author><pubDate>Wed, 12 Dec 2007 08:16:00 GMT</pubDate><guid>http://www.aygfsteel.com/jbpm/archive/2007/12/12/167259.html</guid><wfw:comment>http://www.aygfsteel.com/jbpm/comments/167259.html</wfw:comment><comments>http://www.aygfsteel.com/jbpm/archive/2007/12/12/167259.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/jbpm/comments/commentRss/167259.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/jbpm/services/trackbacks/167259.html</trackback:ping><description><![CDATA[     摘要:   <a href='http://www.aygfsteel.com/jbpm/archive/2007/12/12/167259.html'>阅读全文</a><img src ="http://www.aygfsteel.com/jbpm/aggbug/167259.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/jbpm/" target="_blank">jbpm</a> 2007-12-12 16:16 <a href="http://www.aygfsteel.com/jbpm/archive/2007/12/12/167259.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jBPM开发企业流E应用之安装程设计?http://www.aygfsteel.com/jbpm/archive/2007/12/12/167256.htmljbpmjbpmWed, 12 Dec 2007 08:13:00 GMThttp://www.aygfsteel.com/jbpm/archive/2007/12/12/167256.htmlhttp://www.aygfsteel.com/jbpm/comments/167256.htmlhttp://www.aygfsteel.com/jbpm/archive/2007/12/12/167256.html#Feedback0http://www.aygfsteel.com/jbpm/comments/commentRss/167256.htmlhttp://www.aygfsteel.com/jbpm/services/trackbacks/167256.html阅读全文

jbpm 2007-12-12 16:13 发表评论
]]>
jbpm解析程定义有三U方?/title><link>http://www.aygfsteel.com/jbpm/archive/2007/11/22/162430.html</link><dc:creator>jbpm</dc:creator><author>jbpm</author><pubDate>Thu, 22 Nov 2007 10:02:00 GMT</pubDate><guid>http://www.aygfsteel.com/jbpm/archive/2007/11/22/162430.html</guid><wfw:comment>http://www.aygfsteel.com/jbpm/comments/162430.html</wfw:comment><comments>http://www.aygfsteel.com/jbpm/archive/2007/11/22/162430.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/jbpm/comments/commentRss/162430.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/jbpm/services/trackbacks/162430.html</trackback:ping><description><![CDATA[<p>作?杨洪?br /> jbpm解析程定义有三U方?<br /> 1)par?br /> static ProcessDefinition auctionProcess = <br />       ProcessArchive.parse("org/jbpm/tdd/auction.par");<br /> 注意,必须在classes的org/jbpm/tdd/目录下有一个auction.par文g</p> <p>2)xml文g方式<br /> static ProcessDefinition auctionProcess = <br />       JpdlXmlReader.parseFromResource("org/jbpm/tdd/auction.xml");<br /> 注意,必须在classes的org/jbpm/tdd/目录下有一个auction.xml文g</p> <p>3)文本方式<br /> static ProcessDefinition auctionProcess = JpdlXmlReader.parse(<br />     "<process-definition>" + <br />     "  <start-state name='start'>" + <br />     "    <transition to='auction'/>" + <br />     "  </start-state>" + <br />     "  <state name='auction'>" + <br />     "    <transition to='end'/>" + <br />     "  </state>" + <br />     "  <end-state name='end'/>" + <br />     "</process-definition>");<br /> q种方式的本质和xml文g解析方式是一L(fng).</p> <img src ="http://www.aygfsteel.com/jbpm/aggbug/162430.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/jbpm/" target="_blank">jbpm</a> 2007-11-22 18:02 <a href="http://www.aygfsteel.com/jbpm/archive/2007/11/22/162430.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>shark和jbpm配置文g处理方式比较http://www.aygfsteel.com/jbpm/archive/2007/11/22/162428.htmljbpmjbpmThu, 22 Nov 2007 09:59:00 GMThttp://www.aygfsteel.com/jbpm/archive/2007/11/22/162428.htmlhttp://www.aygfsteel.com/jbpm/comments/162428.htmlhttp://www.aygfsteel.com/jbpm/archive/2007/11/22/162428.html#Feedback0http://www.aygfsteel.com/jbpm/comments/commentRss/162428.htmlhttp://www.aygfsteel.com/jbpm/services/trackbacks/162428.html作?杨洪?/p>

作?杨洪?/p>

shark和jbpm配置文g处理方式比较

1.都用了单例模式
我想q个是最基本?一般的E序员写解析E序都会(x)q样使用;要说明的?AgileFlow
除了使用单例模式,q实C配置文g的动态装?如果用户修改了配|文?它能够在
q行中动态的获取q些变化.
使用jbpm?W一句话p使用该模?JbpmServiceFactory.getInstance()....

2.都实C~省配置和定刉|?br /> Shark?~省配置攑֜一个深层次的目录中,定制配置攑֜config目录,两个配置
文g的内容差不多;
jbpm?~省配置攑֜代码中实?如下:
propertyClassNames = new HashMap();
propertyClassNames.put( "default", "org.jbpm.impl.DefaultServiceFactory" );
abbreviatedClassNames.put( "jbpm.service.factory", propertyClassNames );
定制配置攑֜config目录?为jbpm.properties
比较而言,jbpm的实现方式要?理由如下:
1)~省配置Ҏ(gu)扑ֈ
2)定制配置很简?默认是没有配|的,比shark的要清爽很多

3.都实C用一个单例实现多个单?br /> 我在Shark学习(fn)pd的文章中讨论q这个功?jbpm是在JbpmConfiguration.java中实现的:
private void instantiateConfiguredObjects() {
    // instantiate configured objects
    this.fileMgr = (FileMgr) instantiate( "jbpm.file.mgr", FileMgr.class );
    this.idGenerator = (IdGenerator) instantiate( "jbpm.id.generator", IdGenerator.class );
    this.serviceFactory = (ServiceFactory) instantiate( "jbpm.service.factory", ServiceFactory.class );
}

1.都用了单例模式
我想q个是最基本?一般的E序员写解析E序都会(x)q样使用;要说明的?AgileFlow
除了使用单例模式,q实C配置文g的动态装?如果用户修改了配|文?它能够在
q行中动态的获取q些变化.
使用jbpm?W一句话p使用该模?JbpmServiceFactory.getInstance()....

2.都实C~省配置和定刉|?br /> Shark?~省配置攑֜一个深层次的目录中,定制配置攑֜config目录,两个配置
文g的内容差不多;
jbpm?~省配置攑֜代码中实?如下:
propertyClassNames = new HashMap();
propertyClassNames.put( "default", "org.jbpm.impl.DefaultServiceFactory" );
abbreviatedClassNames.put( "jbpm.service.factory", propertyClassNames );
定制配置攑֜config目录?为jbpm.properties
比较而言,jbpm的实现方式要?理由如下:
1)~省配置Ҏ(gu)扑ֈ
2)定制配置很简?默认是没有配|的,比shark的要清爽很多

3.都实C用一个单例实现多个单?br /> 我在Shark学习(fn)pd的文章中讨论q这个功?jbpm是在JbpmConfiguration.java中实现的:
private void instantiateConfiguredObjects() {
    // instantiate configured objects
    this.fileMgr = (FileMgr) instantiate( "jbpm.file.mgr", FileMgr.class );
    this.idGenerator = (IdGenerator) instantiate( "jbpm.id.generator", IdGenerator.class );
    this.serviceFactory = (ServiceFactory) instantiate( "jbpm.service.factory", ServiceFactory.class );
}



jbpm 2007-11-22 17:59 发表评论
]]>
JBPM外接d表单q? http://www.aygfsteel.com/jbpm/archive/2007/11/11/159753.htmljbpmjbpmSun, 11 Nov 2007 08:24:00 GMThttp://www.aygfsteel.com/jbpm/archive/2007/11/11/159753.htmlhttp://www.aygfsteel.com/jbpm/comments/159753.htmlhttp://www.aygfsteel.com/jbpm/archive/2007/11/11/159753.html#Feedback0http://www.aygfsteel.com/jbpm/comments/commentRss/159753.htmlhttp://www.aygfsteel.com/jbpm/services/trackbacks/159753.html
RUNA WFE

RUNA WFE是上面提到的三个中,唯一可以直接部v应用的,当然也有它的~点Q下面我?x)提到。这个框枉用的是Struts作ؓ(f)表示层,程理和组l架构管理都做的不错Q良好的国际化,文档很全。如果只打算研究可以看下它的permission部分Q它已经实现了对程查看、启动、结束等的权限控ӞJBPM自n在这部分基本q是TODO状态?

  阅读全文

jbpm 2007-11-11 16:24 发表评论
]]>
工作系l参考模?/title><link>http://www.aygfsteel.com/jbpm/archive/2007/11/11/159745.html</link><dc:creator>jbpm</dc:creator><author>jbpm</author><pubDate>Sun, 11 Nov 2007 08:00:00 GMT</pubDate><guid>http://www.aygfsteel.com/jbpm/archive/2007/11/11/159745.html</guid><wfw:comment>http://www.aygfsteel.com/jbpm/comments/159745.html</wfw:comment><comments>http://www.aygfsteel.com/jbpm/archive/2007/11/11/159745.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/jbpm/comments/commentRss/159745.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/jbpm/services/trackbacks/159745.html</trackback:ping><description><![CDATA[     摘要: 研究工作及(qing)其相x术的Z定知道这个组l——工作流理联盟Q简UWfMCQW(xu)orkflow Management CoalitionQ,其成立于1993q。作为工作流技术标准化的工业组l,W(xu)fMC提出的工作流pȝ参考模型(Reference ModelQ无疑ؓ(f)各家工作Y件厂商的pȝ设计规划提供了最权威的参考,乃至标准。下面就是这个参考模型:(x) <br> <br>  <a href='http://www.aygfsteel.com/jbpm/archive/2007/11/11/159745.html'>阅读全文</a><img src ="http://www.aygfsteel.com/jbpm/aggbug/159745.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/jbpm/" target="_blank">jbpm</a> 2007-11-11 16:00 <a href="http://www.aygfsteel.com/jbpm/archive/2007/11/11/159745.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>国内外主要bpm厂商http://www.aygfsteel.com/jbpm/archive/2007/10/28/156461.htmljbpmjbpmSun, 28 Oct 2007 04:21:00 GMThttp://www.aygfsteel.com/jbpm/archive/2007/10/28/156461.htmlhttp://www.aygfsteel.com/jbpm/comments/156461.htmlhttp://www.aygfsteel.com/jbpm/archive/2007/10/28/156461.html#Feedback4http://www.aygfsteel.com/jbpm/comments/commentRss/156461.htmlhttp://www.aygfsteel.com/jbpm/services/trackbacks/156461.html  
        目前主要列出?3家公司,q几家主要是做workflow的。当Ӟ目前国内做OAQ做PlatformQ包含workflowQ的公司很多Q但是,在workflow斚w非常专注的,比较?yu)?br />         q有很多公司没有列出来,主要是个人感觉他们在workflowq一个方面ƈ不是非常强劲Q可能他们的productQplatform很好Q,比如QBOSQ金ӞQEOSQ普元)QGK-WorkflowQ北京点ȝ技Q,iOffice.netQ广州红帆)QKA-2Q北京科诺)QOW4JQOracle中国Q,UAPQ用友)QHotOAQ上华炎)QZoTnQ中唐)。还有些型的工作流产品公司Q品ƈ不是非常有特Ԍ也没有列出来Q比如:(x)WiseFlowQ上L(fng)泎ͼQaoflowQ北京奥宝)

         目前我所知道的,在国内比较有名的国外workflow/BPM 厂商Q主要有三家QUltimusQ较早进入中国)QBusinessWareQ北京麒麟,国VITRIAQ?2003q进入中国; webMethodsQ?003q底在北京成立办事处)
         以下?#8220;?/span>”表示可workflow参考度和可研究度,多表示产品在workflowq一斚w更有特点。注QBusinessWare只给了三?#8220;?/span>”Q是表示其所定位在解x案和目实施Q整个品定位在Business Process Integration层次Q有些超目前国内市场需求?

~号

 

 

 

I00

★★?span lang="EN-US">

AWFQ北京炎黄盈动)

嵌入式的工作^収ͼ功能不是太完善,主要研发实力不

I01

★★

DLFloQ上东兎ͼ

2000开始做工作^収ͼ2002q推Zjava版本。但整体来看Q发展的不是很理?/span>

I02

★★★★?span lang="EN-US">

LiveFlowQ上东兎ͼ

?/span>DLFlo定位差不多,都面向二ơ开发^台。但是正个品还是停留在“workflow”功能层次。—?/span> 但是Q吸收了DLFlo的很多经验,所以其工作^台目前还是属于国内前?/span>

I03

★★?span lang="EN-US">

BusinessWareQ北京麒麟远创)

主要方向?/span>BPM?/span>BPIQ业务流E整合)。整个品是一?#8220;集成q_”?/span>

I04

★★

e-cologyQ上h微)

但从workflowq个层次来说Q泛微没有太多的特色?/span>

I05

★★

eWay PlatformQ北京东Ҏ(gu)l_(d)

Eway的黄金时代已l一M复返了,自动“马毅”那个团队d以后。工作流的一些理念当时还是值得的,有些cMofbiz。表单处里采用二ơ开?/span>jsp面来处理?/span>

I06

★★?/span>

JKCFlowQ四川金U成Q?/span>

JFCFlow从早期的工作品{Ud“业务基础软gq_”Q但是整个品^台目前还只能是Q一?/span>OA开发^台。在workflow?/span>model斚wq不是非常的?/span>

I07

★★★★

JoinWorkQ上天际星Q?/span>

Joinwork刚刚推出来,其开发者丁宏比较欣?/span>jBPMQ?/span>joinwork很多思想也是参考了jBPM。但功能上稍微弱了点。但是其ZSWT的设计思想很值得借鉴?/span>

I08

★★★★

Koof MetaLogicQ北京世U金政)

d推出?/span>workflow产品Q专做工作流q_Q虽然主要定位于oa和电(sh)子政务^収ͼ但工作流q一快,q是有很多克参考的功能?/span>

I09

★★?span lang="EN-US">

RiseOfficeQ北京有生博大)

当前版本riseoffice5.1Q整个工作流产品基本上ؓ(f)“OA审批程”量n定做。其表单处里和权限控制很有特Ԍ以及(qing)审批历程的处理。整?/span>design端时采用web的,用的 addflow控g?/span>

I10

★★★★?span lang="EN-US">

SunFlowQ杭州信雅达Q?/span>

sunFlowq一两年发展很迅速,大有赶超SynchroFlow 势?/span>

其品最大的特色是采用基于域的联邦系l架构,对分布式理、运行支持较好。而且也是目前国内为数不多的可以支?#8220;仿真”的工作流pȝ?/span>

I11

★★★★?/span>

SynchroFlowQ西安协同数码)

基本上非怸格遵循了wfmc的规范,interface1?span lang="EN-US">interface2?span lang="EN-US">interface3?span lang="EN-US">interface5?span lang="EN-US">

SunFlow?/span>SynchroFlow都有很多相像的地方,都遗留很多学院研I的特点Q这两个产品的最初原型都是在大学中诞生的Q?/span>

I12

★★★★?span lang="EN-US">

UtimusQ国内)
上v敏照Q增g理商Q,上v怿Q增g理商Q?/span>
Ultimus
上v分公?/span>

q入中国最早的国外工作品,整个产品采用逻辑的组l结构图Q工作流pȝ支持的功能也很强。其比较有特色的是其“事g条g?/span>



jbpm 2007-10-28 12:21 发表评论
]]>
工作活动实例状态{换的两种实现模式http://www.aygfsteel.com/jbpm/archive/2007/10/28/156458.htmljbpmjbpmSun, 28 Oct 2007 04:12:00 GMThttp://www.aygfsteel.com/jbpm/archive/2007/10/28/156458.htmlhttp://www.aygfsteel.com/jbpm/comments/156458.htmlhttp://www.aygfsteel.com/jbpm/archive/2007/10/28/156458.html#Feedback0http://www.aygfsteel.com/jbpm/comments/commentRss/156458.htmlhttp://www.aygfsteel.com/jbpm/services/trackbacks/156458.html 今天和同事chelsea 活动实例状态的实现思\上进行了讨论。我们两个站在了两个不同的角度来看待Q这两个不同的角度也正好g最为常见到的两U实现思\Q?br /> helsea是从状态角度来看待Q当然也完全是从state pattern的角度来思考:(x)状态在辑ֈ某个状态的时候,?x)引h必须引vzd实例执行什么操作?br />
而我是从zd实例的角度来考虑Q活动实例的状态只是活动实例的一个属性体Q是因ؓ(f)什么行为,造成了什么状态的l果?br />

 q两U观点,没有谁对谁错Q也没有谁优谁劣Q两者是站在不同的角度来分析同一个问题。其实这两种模式在应用中都是很普遍的Q也都是能够很好的解决问题的。不q在现有的workflow引擎实现中,Zzd实例的角度是占绝大多数的Q比如obeQshark{等。所以我受这个的影响也是比较q?br />

先说说基于活动活动实例的角度的思\吧:(x)



让我下先来看看状态类Q?br />
public final class WMActivityInstanceState extends WMObjectState {

public static final int OPEN_NOTRUNNING_INT = 0;

public static final int OPEN_SUSPENDED_INT = 1;

}

或者也可以q么表示Q?br />
public enum WMActivityInstanceState{

NOTRUNNIN(0),

SUSPENDED(1);

private int code;

private WMActivityInstanceState(int code){this.code = code;}
public int getCode(){return this.code}

}




对于zd实例来说Q状态只是其一个属性而已Q?br />
public class BasicActivityInstance extends BasicAttributedEntity{

private int _state;

public void setState(int state) {

_state = state; }

}

或者也可以?br />
Public void setState(WMActivityInstanceState state)




所以,从活动实例的角度来看Q状态之间的关系是^行的。你可以在执行完一些初始化的操作之后,活动实例的状态设|ؓ(f)InitializedQ当然这个操作你必须昄的去讄zd实例Q当Ӟ你可以用一些Eventd理)Q比如调用活动实例的setStateҎ(gu)。至于ؓ(f)什么调用这个方法,或者此时设|的状态是Ҏ(gu)错,zd实例q不兛_?br />


下面再来说说Z状态角度的思\吧,q个思\大体可以说就是state pattern的应用?br />


     说道q儿Q?zhn)可以看看q篇文档Q从工作状态机实践中ȝ状态模式用心?。当然如果?zhn)对state pattern不是很了解,那么你先看看q篇文档Q设计模式之state ?br />


    State模式的着眼点是状态,以状态的变迁影响实例的行为和动作。其实这是两个不同的抽象体Qstate和stateOwnerQ我们可以看刎ͼzd实例对象pCؓ(f)stateOwner?br />
   State模式的依据是状态之间是有有向连接关pȝQ这有向q接关系其实是状态的转换规则QA-B-C-D-A?br />
   Ȁ发状态的变迁Q是由外界的事gQEventQ媄(jing)响的Q这个事件会(x)告知Q当前的zd实例状态要从当前状态往下一个状态变q。而活动实例ƈ不知道下一个状态是什么,q完全是状态对象负责维护和告知的?br />


xQ我们可以看出来了,两种方式的不同:(x)

W一U方式(Zzd实例Q,其外界事件是影响到活动实例,或者说在事件中昄的告知活动实例状态从什么变Z么?br />
W二U方式(Z实例状态)Q其外界事g是媄(jing)响到zd实例状态对象,至于q个状态的下一个状态是什么,旉q不知道Q完全由zd状态之间的关系来维护?br />



jbpm 2007-10-28 12:12 发表评论
]]>
一个简单的?x)签实?/title><link>http://www.aygfsteel.com/jbpm/archive/2007/10/15/153036.html</link><dc:creator>jbpm</dc:creator><author>jbpm</author><pubDate>Mon, 15 Oct 2007 09:34:00 GMT</pubDate><guid>http://www.aygfsteel.com/jbpm/archive/2007/10/15/153036.html</guid><wfw:comment>http://www.aygfsteel.com/jbpm/comments/153036.html</wfw:comment><comments>http://www.aygfsteel.com/jbpm/archive/2007/10/15/153036.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/jbpm/comments/commentRss/153036.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/jbpm/services/trackbacks/153036.html</trackback:ping><description><![CDATA[<p align="left">作?tomkoo<br /> 以下例子?采用了jbpm console 的几个实例用?</p> <p>目提交?: ernie .</p> <p>ȝ审批 : bert</p> <p>?x)?: ernie , bert , grover</p> <p>老板审批 : grover</p> <p> </p> <p>正常程: 目金额 >= 500W RMB</p> <p>提交目 --> ȝ审批 --> ?x)?--> 老板审批 --> 审批通过(l束)</p> <p>正常程: 目金额 < 500W RMB</p> <p>提交目 --> ȝ审批 --> ?x)?--> 审批通过(l束)</p> <p>其中ȝ审批, ?x)? 老板审批 , 不通过, 全部退回给目提交Z? <br /> <br /> ?x)签? 所有h全通过, 则通过. M一Z通过, 停止其他?x)签d.退回给提交?</p> <p>程定义如下: </p> <p> <div id="wmqeeuq" class="code_div"> <div id="wmqeeuq" class="dp-highlighter"> <ol class="dp-xml"> <li id="wmqeeuq" class="alt"><span><span id="wmqeeuq" class="tag"><?</span><span id="wmqeeuq" class="tag-name">xml</span><span> </span><span id="wmqeeuq" class="attribute">version</span><span>=</span><span id="wmqeeuq" class="attribute-value">"1.0"</span><span> </span><span id="wmqeeuq" class="attribute">encoding</span><span>=</span><span id="wmqeeuq" class="attribute-value">"UTF-8"</span><span id="wmqeeuq" class="tag">?></span><span>  </span></span> <li id="wmqeeuq" class=""><span>  </span> <li id="wmqeeuq" class="alt"><span id="wmqeeuq" class="tag"><</span><span id="wmqeeuq" class="tag-name">process-definition</span><span> </span><span id="wmqeeuq" class="attribute">xmlns</span><span>=</span><span id="wmqeeuq" class="attribute-value">"urn:jbpm.org:jpdl-3.1"</span><span>  </span></span> <li id="wmqeeuq" class=""><span>    </span><span id="wmqeeuq" class="attribute">name</span><span>=</span><span id="wmqeeuq" class="attribute-value">"tc_prj_approval"</span><span id="wmqeeuq" class="tag">></span><span>  </span></span> <li id="wmqeeuq" class="alt"><span>  </span> <li id="wmqeeuq" class=""><span>    </span><span id="wmqeeuq" class="tag"><</span><span id="wmqeeuq" class="tag-name">swimlane</span><span> </span><span id="wmqeeuq" class="attribute">name</span><span>=</span><span id="wmqeeuq" class="attribute-value">"initiator"</span><span> </span><span id="wmqeeuq" class="tag">/></span><span>  </span></span> <li id="wmqeeuq" class="alt"><span>  </span> <li id="wmqeeuq" class=""><span>    </span><span id="wmqeeuq" class="comments"><!目提交?nbsp;></span><span>  </span></span> <li id="wmqeeuq" class="alt"><span>    </span><span id="wmqeeuq" class="tag"><</span><span id="wmqeeuq" class="tag-name">swimlane</span><span> </span><span id="wmqeeuq" class="attribute">name</span><span>=</span><span id="wmqeeuq" class="attribute-value">"requester"</span><span id="wmqeeuq" class="tag">></span><span>  </span></span> <li id="wmqeeuq" class=""><span>        </span><span id="wmqeeuq" class="tag"><</span><span id="wmqeeuq" class="tag-name">assignment</span><span> </span><span id="wmqeeuq" class="attribute">expression</span><span>=</span><span id="wmqeeuq" class="attribute-value">"user(ernie)"</span><span> </span><span id="wmqeeuq" class="tag">/></span><span>  </span></span> <li id="wmqeeuq" class="alt"><span>    </span><span id="wmqeeuq" class="tag"></</span><span id="wmqeeuq" class="tag-name">swimlane</span><span id="wmqeeuq" class="tag">></span><span>  </span></span> <li id="wmqeeuq" class=""><span>  </span> <li id="wmqeeuq" class="alt"><span>    </span><span id="wmqeeuq" class="comments"><! ȝ ></span><span>  </span></span> <li id="wmqeeuq" class=""><span>    </span><span id="wmqeeuq" class="tag"><</span><span id="wmqeeuq" class="tag-name">swimlane</span><span> </span><span id="wmqeeuq" class="attribute">name</span><span>=</span><span id="wmqeeuq" class="attribute-value">"chief"</span><span id="wmqeeuq" class="tag">></span><span>  </span></span> <li id="wmqeeuq" class="alt"><span>        </span><span id="wmqeeuq" class="tag"><</span><span id="wmqeeuq" class="tag-name">assignment</span><span> </span><span id="wmqeeuq" class="attribute">expression</span><span>=</span><span id="wmqeeuq" class="attribute-value">"user(bert)"</span><span> </span><span id="wmqeeuq" class="tag">/></span><span>  </span></span> <li id="wmqeeuq" class=""><span>    </span><span id="wmqeeuq" class="tag"></</span><span id="wmqeeuq" class="tag-name">swimlane</span><span id="wmqeeuq" class="tag">></span><span>  </span></span> <li id="wmqeeuq" class="alt"><span>  </span> <li id="wmqeeuq" class=""><span>    </span><span id="wmqeeuq" class="comments"><!老板 ></span><span>  </span></span> <li id="wmqeeuq" class="alt"><span>    </span><span id="wmqeeuq" class="tag"><</span><span id="wmqeeuq" class="tag-name">swimlane</span><span> </span><span id="wmqeeuq" class="attribute">name</span><span>=</span><span id="wmqeeuq" class="attribute-value">"boss"</span><span id="wmqeeuq" class="tag">></span><span>  </span></span> <li id="wmqeeuq" class=""><span>        </span><span id="wmqeeuq" class="tag"><</span><span id="wmqeeuq" class="tag-name">assignment</span><span> </span><span id="wmqeeuq" class="attribute">expression</span><span>=</span><span id="wmqeeuq" class="attribute-value">"user(grover)"</span><span> </span><span id="wmqeeuq" class="tag">/></span><span>  </span></span> <li id="wmqeeuq" class="alt"><span>    </span><span id="wmqeeuq" class="tag"></</span><span id="wmqeeuq" class="tag-name">swimlane</span><span id="wmqeeuq" class="tag">></span><span>  </span></span> <li id="wmqeeuq" class=""><span>  </span> <li id="wmqeeuq" class="alt"><span>    </span><span id="wmqeeuq" class="comments"><!?x)签?nbsp;></span><span>  </span></span> <li id="wmqeeuq" class=""><span>    </span><span id="wmqeeuq" class="tag"><</span><span id="wmqeeuq" class="tag-name">swimlane</span><span> </span><span id="wmqeeuq" class="attribute">name</span><span>=</span><span id="wmqeeuq" class="attribute-value">"cosinger"</span><span id="wmqeeuq" class="tag">></span><span>  </span></span> <li id="wmqeeuq" class="alt"><span>        </span><span id="wmqeeuq" class="tag"><</span><span id="wmqeeuq" class="tag-name">assignment</span><span> </span><span id="wmqeeuq" class="attribute">class</span><span>=</span><span id="wmqeeuq" class="attribute-value">"net.chenj.jbpm.sample.CosingerAssiHandler"</span><span id="wmqeeuq" class="tag">></span><span>  </span></span> <li id="wmqeeuq" class=""><span>        </span><span id="wmqeeuq" class="tag"></</span><span id="wmqeeuq" class="tag-name">assignment</span><span id="wmqeeuq" class="tag">></span><span>  </span></span> <li id="wmqeeuq" class="alt"><span>    </span><span id="wmqeeuq" class="tag"></</span><span id="wmqeeuq" class="tag-name">swimlane</span><span id="wmqeeuq" class="tag">></span><span>  </span></span> <li id="wmqeeuq" class=""><span>    </span><span id="wmqeeuq" class="tag"><</span><span id="wmqeeuq" class="tag-name">start-state</span><span> </span><span id="wmqeeuq" class="attribute">name</span><span>=</span><span id="wmqeeuq" class="attribute-value">"start"</span><span id="wmqeeuq" class="tag">></span><span>  </span></span> <li id="wmqeeuq" class="alt"><span>        </span><span id="wmqeeuq" class="tag"><</span><span id="wmqeeuq" class="tag-name">task</span><span> </span><span id="wmqeeuq" class="attribute">name</span><span>=</span><span id="wmqeeuq" class="attribute-value">"tc_prj_newprj"</span><span> </span><span id="wmqeeuq" class="attribute">swimlane</span><span>=</span><span id="wmqeeuq" class="attribute-value">"initiator"</span><span id="wmqeeuq" class="tag">></span><span id="wmqeeuq" class="tag"></</span><span id="wmqeeuq" class="tag-name">task</span><span id="wmqeeuq" class="tag">></span><span>  </span></span> <li id="wmqeeuq" class=""><span>        </span><span id="wmqeeuq" class="tag"><</span><span id="wmqeeuq" class="tag-name">transition</span><span> </span><span id="wmqeeuq" class="attribute">name</span><span>=</span><span id="wmqeeuq" class="attribute-value">"to_submit"</span><span> </span><span id="wmqeeuq" class="attribute">to</span><span>=</span><span id="wmqeeuq" class="attribute-value">"tc_prj_submit"</span><span id="wmqeeuq" class="tag">></span><span id="wmqeeuq" class="tag"></</span><span id="wmqeeuq" class="tag-name">transition</span><span id="wmqeeuq" class="tag">></span><span>  </span></span> <li id="wmqeeuq" class="alt"><span>    </span><span id="wmqeeuq" class="tag"></</span><span id="wmqeeuq" class="tag-name">start-state</span><span id="wmqeeuq" class="tag">></span><span>  </span></span> <li id="wmqeeuq" class=""><span>    </span><span id="wmqeeuq" class="tag"><</span><span id="wmqeeuq" class="tag-name">task-node</span><span> </span><span id="wmqeeuq" class="attribute">name</span><span>=</span><span id="wmqeeuq" class="attribute-value">"tc_prj_submit"</span><span id="wmqeeuq" class="tag">></span><span>  </span></span> <li id="wmqeeuq" class="alt"><span>        </span><span id="wmqeeuq" class="tag"><</span><span id="wmqeeuq" class="tag-name">task</span><span> </span><span id="wmqeeuq" class="attribute">name</span><span>=</span><span id="wmqeeuq" class="attribute-value">"tc_prj_submit"</span><span id="wmqeeuq" class="tag">></span><span id="wmqeeuq" class="tag"></</span><span id="wmqeeuq" class="tag-name">task</span><span id="wmqeeuq" class="tag">></span><span>  </span></span> <li id="wmqeeuq" class=""><span>        </span><span id="wmqeeuq" class="tag"><</span><span id="wmqeeuq" class="tag-name">transition</span><span> </span><span id="wmqeeuq" class="attribute">name</span><span>=</span><span id="wmqeeuq" class="attribute-value">"to_chiefapprove"</span><span> </span><span id="wmqeeuq" class="attribute">to</span><span>=</span><span id="wmqeeuq" class="attribute-value">"tc_prj_chiefapprove"</span><span id="wmqeeuq" class="tag">></span><span id="wmqeeuq" class="tag"></</span><span id="wmqeeuq" class="tag-name">transition</span><span id="wmqeeuq" class="tag">></span><span>  </span></span> <li id="wmqeeuq" class="alt"><span>    </span><span id="wmqeeuq" class="tag"></</span><span id="wmqeeuq" class="tag-name">task-node</span><span id="wmqeeuq" class="tag">></span><span>  </span></span> <li id="wmqeeuq" class=""><span>    </span><span id="wmqeeuq" class="tag"><</span><span id="wmqeeuq" class="tag-name">task-node</span><span> </span><span id="wmqeeuq" class="attribute">name</span><span>=</span><span id="wmqeeuq" class="attribute-value">"tc_prj_chiefapprove"</span><span id="wmqeeuq" class="tag">></span><span>  </span></span> <li id="wmqeeuq" class="alt"><span>        </span><span id="wmqeeuq" class="tag"><</span><span id="wmqeeuq" class="tag-name">task</span><span> </span><span id="wmqeeuq" class="attribute">name</span><span>=</span><span id="wmqeeuq" class="attribute-value">"tc_prj_chiefapprove"</span><span id="wmqeeuq" class="tag">></span><span id="wmqeeuq" class="tag"></</span><span id="wmqeeuq" class="tag-name">task</span><span id="wmqeeuq" class="tag">></span><span>  </span></span> <li id="wmqeeuq" class=""><span>        </span><span id="wmqeeuq" class="tag"><</span><span id="wmqeeuq" class="tag-name">transition</span><span> </span><span id="wmqeeuq" class="attribute">name</span><span>=</span><span id="wmqeeuq" class="attribute-value">"approve"</span><span> </span><span id="wmqeeuq" class="attribute">to</span><span>=</span><span id="wmqeeuq" class="attribute-value">"tc_prj_countersign"</span><span id="wmqeeuq" class="tag">></span><span id="wmqeeuq" class="tag"></</span><span id="wmqeeuq" class="tag-name">transition</span><span id="wmqeeuq" class="tag">></span><span>  </span></span> <li id="wmqeeuq" class="alt"><span>        </span><span id="wmqeeuq" class="tag"><</span><span id="wmqeeuq" class="tag-name">transition</span><span> </span><span id="wmqeeuq" class="attribute">name</span><span>=</span><span id="wmqeeuq" class="attribute-value">"disapprove"</span><span> </span><span id="wmqeeuq" class="attribute">to</span><span>=</span><span id="wmqeeuq" class="attribute-value">"tc_prj_submit"</span><span id="wmqeeuq" class="tag">></span><span id="wmqeeuq" class="tag"></</span><span id="wmqeeuq" class="tag-name">transition</span><span id="wmqeeuq" class="tag">></span><span>  </span></span> <li id="wmqeeuq" class=""><span>    </span><span id="wmqeeuq" class="tag"></</span><span id="wmqeeuq" class="tag-name">task-node</span><span id="wmqeeuq" class="tag">></span><span>  </span></span> <li id="wmqeeuq" class="alt"><span>    </span><span id="wmqeeuq" class="tag"><</span><span id="wmqeeuq" class="tag-name">task-node</span><span> </span><span id="wmqeeuq" class="attribute">name</span><span>=</span><span id="wmqeeuq" class="attribute-value">"tc_prj_countersign"</span><span> </span><span id="wmqeeuq" class="attribute">signal</span><span>=</span><span id="wmqeeuq" class="attribute-value">"last-wait"</span><span>  </span></span> <li id="wmqeeuq" class=""><span>        </span><span id="wmqeeuq" class="attribute">create-tasks</span><span>=</span><span id="wmqeeuq" class="attribute-value">"false"</span><span id="wmqeeuq" class="tag">></span><span>  </span></span> <li id="wmqeeuq" class="alt"><span>        </span><span id="wmqeeuq" class="tag"><</span><span id="wmqeeuq" class="tag-name">task</span><span> </span><span id="wmqeeuq" class="attribute">name</span><span>=</span><span id="wmqeeuq" class="attribute-value">"tc_prj_countersign"</span><span id="wmqeeuq" class="tag">></span><span>  </span></span> <li id="wmqeeuq" class=""><span>            </span><span id="wmqeeuq" class="tag"><</span><span id="wmqeeuq" class="tag-name">event</span><span> </span><span id="wmqeeuq" class="attribute">type</span><span>=</span><span id="wmqeeuq" class="attribute-value">"task-end"</span><span id="wmqeeuq" class="tag">></span><span>  </span></span> <li id="wmqeeuq" class="alt"><span>                </span><span id="wmqeeuq" class="tag"><</span><span id="wmqeeuq" class="tag-name">action</span><span>  </span></span> <li id="wmqeeuq" class=""><span>                    </span><span id="wmqeeuq" class="attribute">class</span><span>=</span><span id="wmqeeuq" class="attribute-value">"net.chenj.jbpm.sample.TaskEndCountersign"</span><span id="wmqeeuq" class="tag">></span><span>  </span></span> <li id="wmqeeuq" class="alt"><span>                </span><span id="wmqeeuq" class="tag"></</span><span id="wmqeeuq" class="tag-name">action</span><span id="wmqeeuq" class="tag">></span><span>  </span></span> <li id="wmqeeuq" class=""><span>            </span><span id="wmqeeuq" class="tag"></</span><span id="wmqeeuq" class="tag-name">event</span><span id="wmqeeuq" class="tag">></span><span>  </span></span> <li id="wmqeeuq" class="alt"><span>  </span> <li id="wmqeeuq" class=""><span>        </span><span id="wmqeeuq" class="tag"></</span><span id="wmqeeuq" class="tag-name">task</span><span id="wmqeeuq" class="tag">></span><span>  </span></span> <li id="wmqeeuq" class="alt"><span>  </span> <li id="wmqeeuq" class=""><span>        </span><span id="wmqeeuq" class="tag"><</span><span id="wmqeeuq" class="tag-name">event</span><span> </span><span id="wmqeeuq" class="attribute">type</span><span>=</span><span id="wmqeeuq" class="attribute-value">"node-enter"</span><span id="wmqeeuq" class="tag">></span><span>  </span></span> <li id="wmqeeuq" class="alt"><span>            </span><span id="wmqeeuq" class="tag"><</span><span id="wmqeeuq" class="tag-name">action</span><span> </span><span id="wmqeeuq" class="attribute">name</span><span>=</span><span id="wmqeeuq" class="attribute-value">"createInstance"</span><span>  </span></span> <li id="wmqeeuq" class=""><span>                </span><span id="wmqeeuq" class="attribute">class</span><span>=</span><span id="wmqeeuq" class="attribute-value">"net.chenj.jbpm.sample.CreateTaskInstanceCountersign"</span><span id="wmqeeuq" class="tag">></span><span>  </span></span> <li id="wmqeeuq" class="alt"><span>            </span><span id="wmqeeuq" class="tag"></</span><span id="wmqeeuq" class="tag-name">action</span><span id="wmqeeuq" class="tag">></span><span>  </span></span> <li id="wmqeeuq" class=""><span>        </span><span id="wmqeeuq" class="tag"></</span><span id="wmqeeuq" class="tag-name">event</span><span id="wmqeeuq" class="tag">></span><span>  </span></span> <li id="wmqeeuq" class="alt"><span>  </span> <li id="wmqeeuq" class=""><span>        </span><span id="wmqeeuq" class="tag"><</span><span id="wmqeeuq" class="tag-name">transition</span><span> </span><span id="wmqeeuq" class="attribute">name</span><span>=</span><span id="wmqeeuq" class="attribute-value">"approve"</span><span> </span><span id="wmqeeuq" class="attribute">to</span><span>=</span><span id="wmqeeuq" class="attribute-value">"amount_decision"</span><span id="wmqeeuq" class="tag">></span><span id="wmqeeuq" class="tag"></</span><span id="wmqeeuq" class="tag-name">transition</span><span id="wmqeeuq" class="tag">></span><span>  </span></span> <li id="wmqeeuq" class="alt"><span>        </span><span id="wmqeeuq" class="tag"><</span><span id="wmqeeuq" class="tag-name">transition</span><span> </span><span id="wmqeeuq" class="attribute">name</span><span>=</span><span id="wmqeeuq" class="attribute-value">"disapprove"</span><span> </span><span id="wmqeeuq" class="attribute">to</span><span>=</span><span id="wmqeeuq" class="attribute-value">"tc_prj_submit"</span><span id="wmqeeuq" class="tag">></span><span id="wmqeeuq" class="tag"></</span><span id="wmqeeuq" class="tag-name">transition</span><span id="wmqeeuq" class="tag">></span><span>  </span></span> <li id="wmqeeuq" class=""><span>    </span><span id="wmqeeuq" class="tag"></</span><span id="wmqeeuq" class="tag-name">task-node</span><span id="wmqeeuq" class="tag">></span><span>  </span></span> <li id="wmqeeuq" class="alt"><span>    </span><span id="wmqeeuq" class="tag"><</span><span id="wmqeeuq" class="tag-name">decision</span><span> </span><span id="wmqeeuq" class="attribute">name</span><span>=</span><span id="wmqeeuq" class="attribute-value">"amount_decision"</span><span id="wmqeeuq" class="tag">></span><span>  </span></span> <li id="wmqeeuq" class=""><span>        </span><span id="wmqeeuq" class="tag"><</span><span id="wmqeeuq" class="tag-name">transition</span><span> </span><span id="wmqeeuq" class="attribute">name</span><span>=</span><span id="wmqeeuq" class="attribute-value">"to_bossapprove"</span><span> </span><span id="wmqeeuq" class="attribute">to</span><span>=</span><span id="wmqeeuq" class="attribute-value">"tc_prj_bossapprove"</span><span id="wmqeeuq" class="tag">></span><span id="wmqeeuq" class="tag"></</span><span id="wmqeeuq" class="tag-name">transition</span><span id="wmqeeuq" class="tag">></span><span>  </span></span> <li id="wmqeeuq" class="alt"><span>        </span><span id="wmqeeuq" class="tag"><</span><span id="wmqeeuq" class="tag-name">transition</span><span> </span><span id="wmqeeuq" class="attribute">name</span><span>=</span><span id="wmqeeuq" class="attribute-value">"to_end"</span><span> </span><span id="wmqeeuq" class="attribute">to</span><span>=</span><span id="wmqeeuq" class="attribute-value">"end1"</span><span id="wmqeeuq" class="tag">></span><span id="wmqeeuq" class="tag"></</span><span id="wmqeeuq" class="tag-name">transition</span><span id="wmqeeuq" class="tag">></span><span>  </span></span> <li id="wmqeeuq" class=""><span>    </span><span id="wmqeeuq" class="tag"></</span><span id="wmqeeuq" class="tag-name">decision</span><span id="wmqeeuq" class="tag">></span><span>  </span></span> <li id="wmqeeuq" class="alt"><span>    </span><span id="wmqeeuq" class="tag"><</span><span id="wmqeeuq" class="tag-name">task-node</span><span> </span><span id="wmqeeuq" class="attribute">name</span><span>=</span><span id="wmqeeuq" class="attribute-value">"tc_prj_bossapprove"</span><span id="wmqeeuq" class="tag">></span><span>  </span></span> <li id="wmqeeuq" class=""><span>        </span><span id="wmqeeuq" class="tag"><</span><span id="wmqeeuq" class="tag-name">task</span><span> </span><span id="wmqeeuq" class="attribute">name</span><span>=</span><span id="wmqeeuq" class="attribute-value">"tc_prj_bossapprove"</span><span id="wmqeeuq" class="tag">></span><span id="wmqeeuq" class="tag"></</span><span id="wmqeeuq" class="tag-name">task</span><span id="wmqeeuq" class="tag">></span><span>  </span></span> <li id="wmqeeuq" class="alt"><span>        </span><span id="wmqeeuq" class="tag"><</span><span id="wmqeeuq" class="tag-name">transition</span><span> </span><span id="wmqeeuq" class="attribute">name</span><span>=</span><span id="wmqeeuq" class="attribute-value">"approve"</span><span> </span><span id="wmqeeuq" class="attribute">to</span><span>=</span><span id="wmqeeuq" class="attribute-value">"end1"</span><span id="wmqeeuq" class="tag">></span><span id="wmqeeuq" class="tag"></</span><span id="wmqeeuq" class="tag-name">transition</span><span id="wmqeeuq" class="tag">></span><span>  </span></span> <li id="wmqeeuq" class=""><span>        </span><span id="wmqeeuq" class="tag"><</span><span id="wmqeeuq" class="tag-name">transition</span><span> </span><span id="wmqeeuq" class="attribute">name</span><span>=</span><span id="wmqeeuq" class="attribute-value">"disapprove"</span><span> </span><span id="wmqeeuq" class="attribute">to</span><span>=</span><span id="wmqeeuq" class="attribute-value">"tc_prj_submit"</span><span id="wmqeeuq" class="tag">></span><span>  </span></span> <li id="wmqeeuq" class="alt"><span>            </span><span id="wmqeeuq" class="tag"><</span><span id="wmqeeuq" class="tag-name">condition</span><span id="wmqeeuq" class="tag">></span><span>#{amount </span><span id="wmqeeuq" class="tag">></span><span>= 500}</span><span id="wmqeeuq" class="tag"></</span><span id="wmqeeuq" class="tag-name">condition</span><span id="wmqeeuq" class="tag">></span><span>  </span></span> <li id="wmqeeuq" class=""><span>        </span><span id="wmqeeuq" class="tag"></</span><span id="wmqeeuq" class="tag-name">transition</span><span id="wmqeeuq" class="tag">></span><span>  </span></span> <li id="wmqeeuq" class="alt"><span>    </span><span id="wmqeeuq" class="tag"></</span><span id="wmqeeuq" class="tag-name">task-node</span><span id="wmqeeuq" class="tag">></span><span>  </span></span> <li id="wmqeeuq" class=""><span>    </span><span id="wmqeeuq" class="tag"><</span><span id="wmqeeuq" class="tag-name">end-state</span><span> </span><span id="wmqeeuq" class="attribute">name</span><span>=</span><span id="wmqeeuq" class="attribute-value">"end1"</span><span id="wmqeeuq" class="tag">></span><span id="wmqeeuq" class="tag"></</span><span id="wmqeeuq" class="tag-name">end-state</span><span id="wmqeeuq" class="tag">></span><span>  </span></span> <li id="wmqeeuq" class="alt"><span id="wmqeeuq" class="tag"></</span><span id="wmqeeuq" class="tag-name">process-definition</span><span id="wmqeeuq" class="tag">></span><span>  </span></span> <li id="wmqeeuq" class=""><span>  </span> </li> </ol> </div> </div> <script>render_code();</script> <p> </p> <p>?x)签swimlane class</p> <p> <div id="wmqeeuq" class="code_div"> <div id="wmqeeuq" class="dp-highlighter"> <ol class="dp-j"> <li id="wmqeeuq" class="alt"><span><span id="wmqeeuq" class="keyword">package</span><span> net.chenj.jbpm.sample;   </span></span> <li id="wmqeeuq" class=""><span>  </span> <li id="wmqeeuq" class="alt"><span id="wmqeeuq" class="keyword">import</span><span> org.jbpm.graph.exe.*;   </span></span> <li id="wmqeeuq" class=""><span id="wmqeeuq" class="keyword">import</span><span> org.jbpm.taskmgmt.def.*;   </span></span> <li id="wmqeeuq" class="alt"><span id="wmqeeuq" class="keyword">import</span><span> org.jbpm.taskmgmt.exe.Assignable;   </span></span> <li id="wmqeeuq" class=""><span>  </span> <li id="wmqeeuq" class="alt"><span id="wmqeeuq" class="keyword">public</span><span> </span><span id="wmqeeuq" class="keyword">class</span><span> CosingerAssiHandler </span><span id="wmqeeuq" class="keyword">implements</span><span> AssignmentHandler {   </span></span> <li id="wmqeeuq" class=""><span>  </span> <li id="wmqeeuq" class="alt"><span>    </span><span id="wmqeeuq" class="keyword">private</span><span> </span><span id="wmqeeuq" class="keyword">static</span><span> </span><span id="wmqeeuq" class="keyword">final</span><span> </span><span id="wmqeeuq" class="keyword">long</span><span> serialVersionUID = 1L;   </span></span> <li id="wmqeeuq" class=""><span>  </span> <li id="wmqeeuq" class="alt"><span>    </span><span id="wmqeeuq" class="keyword">public</span><span> </span><span id="wmqeeuq" class="keyword">void</span><span> assign(Assignable assignable, ExecutionContext executionContext) {   </span></span> <li id="wmqeeuq" class=""><span>        </span><span id="wmqeeuq" class="comment">// 从数据库或者ldap d?x)签|?</span><span>  </span></span> <li id="wmqeeuq" class="alt"><span>        String[] a = { </span><span id="wmqeeuq" class="string">"ernie"</span><span>, </span><span id="wmqeeuq" class="string">"bert"</span><span>, </span><span id="wmqeeuq" class="string">"grover"</span><span> };   </span></span> <li id="wmqeeuq" class=""><span>        assignable.setPooledActors(a);   </span> <li id="wmqeeuq" class="alt"><span>    }   </span> <li id="wmqeeuq" class=""><span>  </span> <li id="wmqeeuq" class="alt"><span>}   </span> <li id="wmqeeuq" class=""><span>  </span> </li> </ol> </div> </div> <script>render_code();</script><br /> 创徏?x)签d实现c? <p> </p> <p>  <div id="wmqeeuq" class="code_div"> <div id="wmqeeuq" class="dp-highlighter"> <ol class="dp-j"> <li id="wmqeeuq" class="alt"><span><span id="wmqeeuq" class="keyword">package</span><span> net.chenj.jbpm.sample;   </span></span> <li id="wmqeeuq" class=""><span>  </span> <li id="wmqeeuq" class="alt"><span id="wmqeeuq" class="keyword">import</span><span> org.jbpm.graph.def.ActionHandler;   </span></span> <li id="wmqeeuq" class=""><span id="wmqeeuq" class="keyword">import</span><span> org.jbpm.graph.exe.ExecutionContext;   </span></span> <li id="wmqeeuq" class="alt"><span id="wmqeeuq" class="keyword">import</span><span> org.jbpm.graph.exe.Token;   </span></span> <li id="wmqeeuq" class=""><span id="wmqeeuq" class="keyword">import</span><span> org.jbpm.graph.node.TaskNode;   </span></span> <li id="wmqeeuq" class="alt"><span id="wmqeeuq" class="keyword">import</span><span> org.jbpm.taskmgmt.def.Task;   </span></span> <li id="wmqeeuq" class=""><span id="wmqeeuq" class="keyword">import</span><span> org.jbpm.taskmgmt.exe.TaskMgmtInstance;   </span></span> <li id="wmqeeuq" class="alt"><span>  </span> <li id="wmqeeuq" class=""><span id="wmqeeuq" class="keyword">public</span><span> </span><span id="wmqeeuq" class="keyword">class</span><span> CreateTaskInstanceCountersign </span><span id="wmqeeuq" class="keyword">implements</span><span> ActionHandler {   </span></span> <li id="wmqeeuq" class="alt"><span>  </span> <li id="wmqeeuq" class=""><span>    </span><span id="wmqeeuq" class="keyword">private</span><span> </span><span id="wmqeeuq" class="keyword">static</span><span> </span><span id="wmqeeuq" class="keyword">final</span><span> </span><span id="wmqeeuq" class="keyword">long</span><span> serialVersionUID = 1L;   </span></span> <li id="wmqeeuq" class="alt"><span>  </span> <li id="wmqeeuq" class=""><span>    </span><span id="wmqeeuq" class="keyword">public</span><span> </span><span id="wmqeeuq" class="keyword">void</span><span> execute(ExecutionContext executionContext) </span><span id="wmqeeuq" class="keyword">throws</span><span> Exception {   </span></span> <li id="wmqeeuq" class="alt"><span>  </span> <li id="wmqeeuq" class=""><span>        Token token = executionContext.getToken();   </span> <li id="wmqeeuq" class="alt"><span>        TaskMgmtInstance tmi = executionContext.getTaskMgmtInstance();   </span> <li id="wmqeeuq" class=""><span>        TaskNode taskNode = (TaskNode) executionContext.getNode();   </span> <li id="wmqeeuq" class="alt"><span>        Task task = taskNode.getTask(</span><span id="wmqeeuq" class="string">"tc_prj_countersign"</span><span>);   </span></span> <li id="wmqeeuq" class=""><span>        </span><span id="wmqeeuq" class="comment">// 从数据库或者ldap d?x)签|创ZQ务实?</span><span>  </span></span> <li id="wmqeeuq" class="alt"><span>        tmi.createTaskInstance(task, token).setActorId(</span><span id="wmqeeuq" class="string">"ernie"</span><span>);   </span></span> <li id="wmqeeuq" class=""><span>        tmi.createTaskInstance(task, token).setActorId(</span><span id="wmqeeuq" class="string">"bert"</span><span>);   </span></span> <li id="wmqeeuq" class="alt"><span>        tmi.createTaskInstance(task, token).setActorId(</span><span id="wmqeeuq" class="string">"grover"</span><span>);   </span></span> <li id="wmqeeuq" class=""><span>  </span> <li id="wmqeeuq" class="alt"><span>    }   </span> <li id="wmqeeuq" class=""><span>  </span> <li id="wmqeeuq" class="alt"><span>}   </span> </li> </ol> </div> </div> <script>render_code();</script> <p> </p> <p>l束不通过时结束其他会(x){Q务实?<br /> <div id="wmqeeuq" class="code_div"> <div id="wmqeeuq" class="dp-highlighter"> <ol class="dp-j"> <li id="wmqeeuq" class="alt"><span><span id="wmqeeuq" class="keyword">package</span><span> net.chenj.jbpm.sample;   </span></span> <li id="wmqeeuq" class=""><span>  </span> <li id="wmqeeuq" class="alt"><span id="wmqeeuq" class="keyword">import</span><span> java.util.Collection;   </span></span> <li id="wmqeeuq" class=""><span id="wmqeeuq" class="keyword">import</span><span> java.util.Iterator;   </span></span> <li id="wmqeeuq" class="alt"><span id="wmqeeuq" class="keyword">import</span><span> org.jbpm.graph.def.ActionHandler;   </span></span> <li id="wmqeeuq" class=""><span id="wmqeeuq" class="keyword">import</span><span> org.jbpm.graph.exe.ExecutionContext;   </span></span> <li id="wmqeeuq" class="alt"><span id="wmqeeuq" class="keyword">import</span><span> org.jbpm.taskmgmt.exe.TaskInstance;   </span></span> <li id="wmqeeuq" class=""><span id="wmqeeuq" class="keyword">import</span><span> org.jbpm.taskmgmt.exe.TaskMgmtInstance;   </span></span> <li id="wmqeeuq" class="alt"><span>  </span> <li id="wmqeeuq" class=""><span id="wmqeeuq" class="keyword">public</span><span> </span><span id="wmqeeuq" class="keyword">class</span><span> TaskEndCountersign </span><span id="wmqeeuq" class="keyword">implements</span><span> ActionHandler {   </span></span> <li id="wmqeeuq" class="alt"><span>  </span> <li id="wmqeeuq" class=""><span>    </span><span id="wmqeeuq" class="keyword">private</span><span> </span><span id="wmqeeuq" class="keyword">static</span><span> </span><span id="wmqeeuq" class="keyword">final</span><span> </span><span id="wmqeeuq" class="keyword">long</span><span> serialVersionUID = 1L;   </span></span> <li id="wmqeeuq" class="alt"><span>  </span> <li id="wmqeeuq" class=""><span>    </span><span id="wmqeeuq" class="keyword">public</span><span> </span><span id="wmqeeuq" class="keyword">void</span><span> execute(ExecutionContext executionContext) </span><span id="wmqeeuq" class="keyword">throws</span><span> Exception {   </span></span> <li id="wmqeeuq" class="alt"><span>  </span> <li id="wmqeeuq" class=""><span>       </span> <li id="wmqeeuq" class="alt"><span>        </span><span id="wmqeeuq" class="keyword">boolean</span><span> isDisapprove = Boolean.valueOf((String) executionContext   </span></span> <li id="wmqeeuq" class=""><span>                .getVariable(</span><span id="wmqeeuq" class="string">"isDisapprove"</span><span>));   </span></span> <li id="wmqeeuq" class="alt"><span>        </span><span id="wmqeeuq" class="comment">// 如果有一个Q务实例拒l通过则结束除当前d实例外其他Q务实?</span><span>  </span></span> <li id="wmqeeuq" class=""><span>        </span><span id="wmqeeuq" class="keyword">if</span><span> (isDisapprove) {   </span></span> <li id="wmqeeuq" class="alt"><span>            TaskMgmtInstance tmi = executionContext.getTaskMgmtInstance();   </span> <li id="wmqeeuq" class=""><span>            TaskInstance ti = executionContext.getTaskInstance();   </span> <li id="wmqeeuq" class="alt"><span>            </span><span id="wmqeeuq" class="keyword">final</span><span> String actorId = ti.getActorId();   </span></span> <li id="wmqeeuq" class=""><span>            Collection c = tmi.getSignallingTasks(executionContext);   </span> <li id="wmqeeuq" class="alt"><span>            </span><span id="wmqeeuq" class="keyword">for</span><span> (Iterator it = c.iterator(); it.hasNext();) {   </span></span> <li id="wmqeeuq" class=""><span>                TaskInstance task = (TaskInstance) it.next();   </span> <li id="wmqeeuq" class="alt"><span>                </span><span id="wmqeeuq" class="keyword">if</span><span> (!(actorId.equals(task.getActorId())) && (!task.hasEnded())) {   </span></span> <li id="wmqeeuq" class=""><span>                    task.end(</span><span id="wmqeeuq" class="string">"disapprove"</span><span>);   </span></span> <li id="wmqeeuq" class="alt"><span>                }   </span> <li id="wmqeeuq" class=""><span>            }   </span> <li id="wmqeeuq" class="alt"><span>        }   </span> <li id="wmqeeuq" class=""><span>  </span> <li id="wmqeeuq" class="alt"><span>    }   </span> <li id="wmqeeuq" class=""><span>  </span> <li id="wmqeeuq" class="alt"><span>}   </span> </li> </ol> </div> </div> <script>render_code();</script> <p> </p> <p> </p> <img src ="http://www.aygfsteel.com/jbpm/aggbug/153036.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/jbpm/" target="_blank">jbpm</a> 2007-10-15 17:34 <a href="http://www.aygfsteel.com/jbpm/archive/2007/10/15/153036.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Jbpm和Shark比较的feature list http://www.aygfsteel.com/jbpm/archive/2007/10/15/152997.htmljbpmjbpmMon, 15 Oct 2007 07:09:00 GMThttp://www.aygfsteel.com/jbpm/archive/2007/10/15/152997.htmlhttp://www.aygfsteel.com/jbpm/comments/152997.htmlhttp://www.aygfsteel.com/jbpm/archive/2007/10/15/152997.html#Feedback0http://www.aygfsteel.com/jbpm/comments/commentRss/152997.htmlhttp://www.aygfsteel.com/jbpm/services/trackbacks/152997.html

作者:(x)Ni Yue
前一D|间做的一个jbpm和shark的featureҎ(gu)Q今天整理笔记突然又看到q张记录U怺Qso post here and drop the paper.作比较的时候Shark?.0版本Q而Jbpm?.0版本Q现在已l出?.0了)

 

Shark

Jbpm

持久?/td> Shark自己的一个ORM的方案DODSQ感觉不是很?/td> 大名鼎鼎?HibernateQJbpm2中用的是Hibernate 2.1QJbpm3U用的是Hibernate3Q?/td>
灉|?/td> Sharklh的感觉就是庞大,需要独立的q行一个工作量引擎服务 相对更加灉|Q和OSWorkflow有的一比,也可以作为嵌入式的工作流引擎
后台理 其实q点和上面一Ҏ(gu)点相对应了,灉|性差其实是由于提供的功能太多的缘故,Shark自带了一个管理程序,界面虽然差了一点,但是功能满全面的 Jbpm2中没有提供后台的理QJbpm3q没怎么用过Q好像是有的Q不知道具体功能如何
程定义的图形设计器 Shark使用的WfMC定义的XPDL语言定义程Q有一个JaWE来图形化定义程Q不qXPDL是在是看h很难?/td> Jbpm2中没有流E图形定义器Q不qJbpm3中已l有了,是基于Eclipse的一个插Ӟ可以使用它定义Jbpm使用的JPDLQ而且不仅是插件Ş式,后面q会(x)出stand alone的版?/td>
表单定制 q个Shark可以借助XPDL来进行表单定Ӟ没看太懂是?/td> Jbpm2不支持,原来看了Jbpm的MailList里面说在考虑Jbpm3中会(x)加入q方面的内容Q现在似乎没有看到还
用户模型 好像必须采用Shark中的用户模型 灉|性的体现QQ意的用户模型。Jbpm3.1的roadmap里面考虑自带一个简单的用户模型供?/td>
异构pȝ交互 Shark可以开CORBA的服务,q个斚w的功能很强大 只能通过Java和异构系l的交互gQJava能做的Jbpmp
学习(fn)成本 Shark使用的XPDL很难看懂… 相对?/td>
文档 感觉是一片空白,l的那几个pdf都不什么用Q用两三个小时就全部看完了,l织的不是很好而且。相对其他的斚wQ这个是最大的~点?/td> 挺全面的文档Q一个chapter一个chapter的,看v来也方便


jbpm 2007-10-15 15:09 发表评论
]]>
վ֩ģ壺 ̫| ¬| | Ϫ| | | ³| | Դ| ָɽ| ľ| ǭ| ɽ| | | | | | ƽ| | Ͻ| ʡ| ͬ| | | | ǰ| | ͬ| ɽ| | ԭ| | | | | ˾| | ϳ| | ˮ|