??xml version="1.0" encoding="utf-8" standalone="yes"?>heyzo欧美激情,久久男人资源视频,久久精彩视频http://www.aygfsteel.com/jbpm/zh-cnMon, 19 May 2025 05:00:40 GMTMon, 19 May 2025 05:00:40 GMT60jBPM开发企业流E应用之在Tomcat上部|流E引擎及控制?/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.</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序都会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)~省配置Ҏ扑ֈ
2)定制配置很简?默认是没有配|的,比shark的要清爽很多

3.都实C用一个单例实现多个单?br /> 我在Shark学习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序都会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)~省配置Ҏ扑ֈ
2)定制配置很简?默认是没有配|的,比shark的要清爽很多

3.都实C用一个单例实现多个单?br /> 我在Shark学习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下面我会提到。这个框枉用的是Struts作ؓ表示层,程理和组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[     摘要: 研究工作及其相x术的Z定知道这个组l——工作流理联盟Q简UWfMCQWorkflow Management CoalitionQ,其成立于1993q。作为工作流技术标准化的工业组l,WfMC提出的工作流pȝ参考模型(Reference ModelQ无疑ؓ各家工作Y件厂商的pȝ设计规划提供了最权威的参考,乃至标准。下面就是这个参考模型: <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非常专注的,比较?br />         q有很多公司没有列出来,主要是个人感觉他们在workflowq一个方面ƈ不是非常强劲Q可能他们的productQplatform很好Q,比如QBOSQ金ӞQEOSQ普元)QGK-WorkflowQ北京点ȝ技Q,iOffice.netQ广州红帆)QKA-2Q北京科诺)QOW4JQOracle中国Q,UAPQ用友)QHotOAQ上华炎)QZoTnQ中唐)。还有些型的工作流产品公司Q品ƈ不是非常有特Ԍ也没有列出来Q比如:WiseFlowQ上L泎ͼ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北京东Ҏl_

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和电子政务^収ͼ但工作流q一快,q是有很多克参考的功能?/span>

I09

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

RiseOfficeQ北京有生博大)

当前版本riseoffice5.1Q整个工作流产品基本上ؓ“OA审批程”量n定做。其表单处里和权限控制很有特Ԍ以及审批历程的处理。整?/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的角度来思考:状态在辑ֈ某个状态的时候,会引h必须引vzd实例执行什么操作?br />
而我是从zd实例的角度来考虑Q活动实例的状态只是活动实例的一个属性体Q是因ؓ什么行为,造成了什么状态的l果?br />

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

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



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


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


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


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


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

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



jbpm 2007-10-28 12:12 发表评论
]]>
一个简单的会签实例http://www.aygfsteel.com/jbpm/archive/2007/10/15/153036.htmljbpmjbpmMon, 15 Oct 2007 09:34:00 GMThttp://www.aygfsteel.com/jbpm/archive/2007/10/15/153036.htmlhttp://www.aygfsteel.com/jbpm/comments/153036.htmlhttp://www.aygfsteel.com/jbpm/archive/2007/10/15/153036.html#Feedback0http://www.aygfsteel.com/jbpm/comments/commentRss/153036.htmlhttp://www.aygfsteel.com/jbpm/services/trackbacks/153036.html作?tomkoo
以下例子?采用了jbpm console 的几个实例用?

目提交?: ernie .

ȝ审批 : bert

会签 : ernie , bert , grover

老板审批 : grover

 

正常程: 目金额 >= 500W RMB

提交目 --> ȝ审批 --> 会签 --> 老板审批 --> 审批通过(l束)

正常程: 目金额 < 500W RMB

提交目 --> ȝ审批 --> 会签 --> 审批通过(l束)

其中ȝ审批, 会签, 老板审批 , 不通过, 全部退回给目提交Z?

会签? 所有h全通过, 则通过. M一Z通过, 停止其他会签d.退回给提交?

程定义如下:

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2.   
  3. <process-definition xmlns="urn:jbpm.org:jpdl-3.1"  
  4.     name="tc_prj_approval">  
  5.   
  6.     <swimlane name="initiator" />  
  7.   
  8.     <!目提交?nbsp;>  
  9.     <swimlane name="requester">  
  10.         <assignment expression="user(ernie)" />  
  11.     </swimlane>  
  12.   
  13.     <! ȝ >  
  14.     <swimlane name="chief">  
  15.         <assignment expression="user(bert)" />  
  16.     </swimlane>  
  17.   
  18.     <!老板 >  
  19.     <swimlane name="boss">  
  20.         <assignment expression="user(grover)" />  
  21.     </swimlane>  
  22.   
  23.     <!会签?nbsp;>  
  24.     <swimlane name="cosinger">  
  25.         <assignment class="net.chenj.jbpm.sample.CosingerAssiHandler">  
  26.         </assignment>  
  27.     </swimlane>  
  28.     <start-state name="start">  
  29.         <task name="tc_prj_newprj" swimlane="initiator"></task>  
  30.         <transition name="to_submit" to="tc_prj_submit"></transition>  
  31.     </start-state>  
  32.     <task-node name="tc_prj_submit">  
  33.         <task name="tc_prj_submit"></task>  
  34.         <transition name="to_chiefapprove" to="tc_prj_chiefapprove"></transition>  
  35.     </task-node>  
  36.     <task-node name="tc_prj_chiefapprove">  
  37.         <task name="tc_prj_chiefapprove"></task>  
  38.         <transition name="approve" to="tc_prj_countersign"></transition>  
  39.         <transition name="disapprove" to="tc_prj_submit"></transition>  
  40.     </task-node>  
  41.     <task-node name="tc_prj_countersign" signal="last-wait"  
  42.         create-tasks="false">  
  43.         <task name="tc_prj_countersign">  
  44.             <event type="task-end">  
  45.                 <action  
  46.                     class="net.chenj.jbpm.sample.TaskEndCountersign">  
  47.                 </action>  
  48.             </event>  
  49.   
  50.         </task>  
  51.   
  52.         <event type="node-enter">  
  53.             <action name="createInstance"  
  54.                 class="net.chenj.jbpm.sample.CreateTaskInstanceCountersign">  
  55.             </action>  
  56.         </event>  
  57.   
  58.         <transition name="approve" to="amount_decision"></transition>  
  59.         <transition name="disapprove" to="tc_prj_submit"></transition>  
  60.     </task-node>  
  61.     <decision name="amount_decision">  
  62.         <transition name="to_bossapprove" to="tc_prj_bossapprove"></transition>  
  63.         <transition name="to_end" to="end1"></transition>  
  64.     </decision>  
  65.     <task-node name="tc_prj_bossapprove">  
  66.         <task name="tc_prj_bossapprove"></task>  
  67.         <transition name="approve" to="end1"></transition>  
  68.         <transition name="disapprove" to="tc_prj_submit">  
  69.             <condition>#{amount >= 500}</condition>  
  70.         </transition>  
  71.     </task-node>  
  72.     <end-state name="end1"></end-state>  
  73. </process-definition>  
  74.   

 

会签swimlane class

  1. package net.chenj.jbpm.sample;   
  2.   
  3. import org.jbpm.graph.exe.*;   
  4. import org.jbpm.taskmgmt.def.*;   
  5. import org.jbpm.taskmgmt.exe.Assignable;   
  6.   
  7. public class CosingerAssiHandler implements AssignmentHandler {   
  8.   
  9.     private static final long serialVersionUID = 1L;   
  10.   
  11.     public void assign(Assignable assignable, ExecutionContext executionContext) {   
  12.         // 从数据库或者ldap d会签|?  
  13.         String[] a = { "ernie""bert""grover" };   
  14.         assignable.setPooledActors(a);   
  15.     }   
  16.   
  17. }   
  18.   

创徏会签d实现c?

 

 

  1. package net.chenj.jbpm.sample;   
  2.   
  3. import org.jbpm.graph.def.ActionHandler;   
  4. import org.jbpm.graph.exe.ExecutionContext;   
  5. import org.jbpm.graph.exe.Token;   
  6. import org.jbpm.graph.node.TaskNode;   
  7. import org.jbpm.taskmgmt.def.Task;   
  8. import org.jbpm.taskmgmt.exe.TaskMgmtInstance;   
  9.   
  10. public class CreateTaskInstanceCountersign implements ActionHandler {   
  11.   
  12.     private static final long serialVersionUID = 1L;   
  13.   
  14.     public void execute(ExecutionContext executionContext) throws Exception {   
  15.   
  16.         Token token = executionContext.getToken();   
  17.         TaskMgmtInstance tmi = executionContext.getTaskMgmtInstance();   
  18.         TaskNode taskNode = (TaskNode) executionContext.getNode();   
  19.         Task task = taskNode.getTask("tc_prj_countersign");   
  20.         // 从数据库或者ldap d会签|创ZQ务实?  
  21.         tmi.createTaskInstance(task, token).setActorId("ernie");   
  22.         tmi.createTaskInstance(task, token).setActorId("bert");   
  23.         tmi.createTaskInstance(task, token).setActorId("grover");   
  24.   
  25.     }   
  26.   
  27. }   

 

l束不通过时结束其他会{Q务实?

  1. package net.chenj.jbpm.sample;   
  2.   
  3. import java.util.Collection;   
  4. import java.util.Iterator;   
  5. import org.jbpm.graph.def.ActionHandler;   
  6. import org.jbpm.graph.exe.ExecutionContext;   
  7. import org.jbpm.taskmgmt.exe.TaskInstance;   
  8. import org.jbpm.taskmgmt.exe.TaskMgmtInstance;   
  9.   
  10. public class TaskEndCountersign implements ActionHandler {   
  11.   
  12.     private static final long serialVersionUID = 1L;   
  13.   
  14.     public void execute(ExecutionContext executionContext) throws Exception {   
  15.   
  16.        
  17.         boolean isDisapprove = Boolean.valueOf((String) executionContext   
  18.                 .getVariable("isDisapprove"));   
  19.         // 如果有一个Q务实例拒l通过则结束除当前d实例外其他Q务实?  
  20.         if (isDisapprove) {   
  21.             TaskMgmtInstance tmi = executionContext.getTaskMgmtInstance();   
  22.             TaskInstance ti = executionContext.getTaskInstance();   
  23.             final String actorId = ti.getActorId();   
  24.             Collection c = tmi.getSignallingTasks(executionContext);   
  25.             for (Iterator it = c.iterator(); it.hasNext();) {   
  26.                 TaskInstance task = (TaskInstance) it.next();   
  27.                 if (!(actorId.equals(task.getActorId())) && (!task.hasEnded())) {   
  28.                     task.end("disapprove");   
  29.                 }   
  30.             }   
  31.         }   
  32.   
  33.     }   
  34.   
  35. }   

 

 



jbpm 2007-10-15 17:34 发表评论
]]>
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

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


jbpm 2007-10-15 15:09 发表评论
]]>
վ֩ģ壺 ӡ| ־| Դ| ű| | ۩| | Ϫ| Ϫ| ׷| | ٤ʦ| IJ| ɽ| ˮ| ɽ| | | | ƽң| â| | | | | | ɽ| | ˮ| | ޵| | | | Ϫ| ®| ʯ¥| Դ| Խ| ˮ| ַ|