关于作者

笔名:银狐999
地区:
作者相册

日历 

快速登录

+ 用户名:
+ 密 码:

在线留言

友情Blog

访问统计:7698


银狐999个人BLOG

 

吾非文人,乃市井一俗人也,读百卷书,跨江河千里,故京城一游;
一两滴辛酸,三四年学业,五六点粗墨,七八笔买卖,九十道人情。

??银狐999(http://www.javafox.org)

日志

Blog变更地址

     以后Blog将 移动到 http://blog.csdn.net/james999 
     这个http://javafox.blogdriver.com 将之作为备份的blog存在。 请更新blog连接

- 作者: 银狐999 2004年10月12日, 星期二 19:48  回复(2) |  引用(0)

Blog变更地址

     以后Blog将 移动到 http://blog.csdn.net/james999 
     这个http://javafox.blogdriver.com 将之作为备份的blog存在。 请更新blog连接

- 作者: 银狐999 2004年10月12日, 星期二 19:47  回复(0) |  引用(0)

YAWL的gui控制端
没有想到,YAWL提供了一个简易的gui控制段,这样给调试跟踪运行,带来了莫大的方便:

其有一个gui端的测试控制端,是

au.edu.qut.yawl.engine.gui.YEngineGUI类。

 

List newSpecIDs = _engine.addSpecifications(selectedFile, _ignoreErrors, errorMessages);

 

但是其在load specification的时候会应为验证不通过而抛错误需要修改一点程序。au.edu.qut.yawl.unmarshal.YMarshal 类中的 unmarshalSpecification 方法 中有关验证部分的代码屏蔽掉,即可:

 

//        String errors = YSchemaChecker.getInstance().checkSchema(specificationSetFileID);

//        if (errors == null || errors.length() > 0) {

//            throw new YSyntaxException(

//                    " The file failed to verify against YAWL's Schema:\n"

//                    + errors);

//        }

 

其engine类 Yengine 提供了 加载 specification的方法:addSpecifications

在这个方法中,会调用 Ymarshal类的来完成 xml到对象的转换:

newSpecifications = YMarshal.unmarshalSpecifications(specificationFile.getAbsolutePath());

- 作者: 银狐999 2004年10月10日, 星期日 16:55  回复(1) |  引用(0)

Bossa支持PNML
http://www.bigbross.com/bossa/

没有想到Bossa竟然是支持PNML(Petri Net Markup Language )的workflow engine。
       但是,从cvs上抓下的代码,调试其自带的pnml(CaseType)的时候,总是 出现错误:Error in the expression evaluation sub-system,这个错误是由于内部用Apache BSF解析的时候出现错误。具体如何造成,还有待跟踪

- 作者: 银狐999 2004年10月9日, 星期六 08:19  回复(0) |  引用(0)

工作流模式与工作流运转模型(Transition Model)

       2004930早上5点,在睡梦中突然醒来,想到了这几天和老宋讨论的有关Petri NetWorkflowWorkflow Pattern之类的事情;又想到我曾经写的《工作流模型分析》。标准的workflow pattern是没有“return”,“rollback”,“Unrestricted Routing”等等的。

       那么将这些“return”之类的放于何处呢?放在workflow feature,就有些太不抽象;这也是我曾经写《工作流模型分析》一个原因。?? 当时,实在无法用“工作流模式”这个词,所以才用的“工作流模型”来指明他们的区别:文章中,我把“Unrestricted Routing”之类的归属于“特殊运转模型”就是这个意思。但是,当时,这个区别以及层次,实际上不是很清晰的(那时候理解也并不是很透彻)。


        当然,期间,我有些想把这几种“特殊运转模型”纳入workflow pattern范畴。甚至中间想把《工作流模型分析》更改名称为《工作流模式分析》。为此,也为自己找了一些托词,什么“国内的特殊情况”等等之类的,但是,也不得不承认,“return”,“rollback”这些与pattern沾不上多少边,可能更偏重于一种“Feature”或“Function”。


       为此,我规划出一个单独的层次:工作流运转模型(Workflow Transition Model.),如下图:



       其实,这种图并不能很好的表达Workflow Transtion ModelWorkflow Pattern之间的真正的关系:就像你无法用于图形,表达一个java应用与一个模式之间的关系一样。

       或者说,Workflow Pattern可以用图形非常直观形象的表达流程的“规则运转方式”,而Workflow Transition Model则表达了 一种流程运行表现的应用模型。


       比如,一个处于Sequence(从模式上划分,属于Sequence)的活动点,其可能表现为“rollback”,甚至“Unrestricted”;当然,也可能其本身表现的就是一个Sequence


       这样划分,也就是想将很多问题,从Patterns中跳跃出来,但也不至于一下子就跳跃到workflow featurefunction这些抽象度很低的层次上。

- 作者: 银狐999 2004年09月30日, 星期四 08:36  回复(1) |  引用(0)

Shark的在Eclipse环境下的联合调试跟踪

Shark的在Eclipse环境下的联合调试跟踪

 

胡长城(银狐999

http://www.wfchina.org

http://javafox.blogdriver.com

http://blog.csdn.net/james999

 

       Sharkmodules分的很清晰,但是代码量和包结构,是很复杂的,而且屏蔽了大量的实现类,这更增加了阅读程序的难度??????
      
一般意思上说,阅读代码最好的方式,是“调试与跟踪”。所以,学习shark,最好的方式,也是跟踪其代码的运行逻辑。

       但是,一般要启动Shark,就必须启动sharktnscorba serverSharkCORBAServer),adminSharkAdmin)。这种情况,很容易让人感觉,调试或者跟踪程序是件很麻烦的事情,其实不然。

 

       建议大家从shark cvs中获取::pserver:anonymous@cvs.forge.objectweb.org:/cvsroot/shark

 

       然后利用Eclipse加载shark的工程,是非常简单的事情(哈哈,这个不用说了),稍微补充以下,就是从cvs上拽的工程,不包含hibernate.jar。但是shark编译的需要。

配置SharkAdmin 调试环境:

       这个实际上没什么说的,SharkAdmin仅仅是个Application

配置SharkCORBAServer的调试环境

       这个当然要参考一下run.batrun.sh文件。查阅一下其调用应用程序所需要的Environmentclasspath。可以看见其需要“PATH=lib\contrib\ext;%PATH%”。
      
lib/ext目录下,存在NTEventLogAppender.dll 等几个dll文件,需要加入Path环境中。
      
知道这个需求,就很简单了。只需在EclipseDebug中将Environment 的“Path”引入(默认是没有的),并且编辑以下,将NTEventLogAppender.dll等文件的位置引入即可。

还剩一个TNS
      
这个最简单的了,也不许要调试跟踪,只是提供一个命名服务。从shark网站下载shark2.7.0 的安装文件(当然,也可以通过cvs的代码打包,方式请参考http://shark.objectweb.org/doc/sfs/sharkfromscratch1.html)。不过通过cvs直接打包后出现一些错误,于是我利用shark提供的安装文件直接使用。
      
安装后,直接运行bin/tns.bat即可。然后再eclipse环境中启动 shark server调试,然后再启动shark admin 调试。

      
那么现在,设置你所希望的断点吧?????? 跟踪调试:F6,F5,F7???

获取更加详细的信息
      
这样配置的调制环境是不支持log信息输出的。Shark采用common-logging,这个就非常容易解决。将commons-logging.properties log4j.properties 引入即可。

推荐设置断点的类
      
有两个非常值得研究的类:

    org.enhydra.shark.WfActivityImpl

org.enhydra.shark.WfProcessImpl
   
这两个类,是“Activity”和“Process”服务期端(注意,是server端)的核心类。必然针对流程、活动的操作,都会影响到这两个类。所以,跟踪这两个类,就会明白很多。

- 作者: 银狐999 2004年09月29日, 星期三 19:12  回复(4) |  引用(0)

讨论Petri Net和Workflow的关系
        昨天又和同事讨论了半天有关 Petri Net和Workflow的关系???,却最终还是没有一个所以然,也难怪,俺们几个,曾经都没有怎么研究过Petri Net,这是个很麻烦的问题。对Petri Net的认识仅限于一些零散的知识(算是皮毛吧)。
         当我们想从更深次去探讨workflow的时候,发现或多或少的会牵涉到Petri Net,但是,到底之间的牵涉关系(根)是什么样子呢?

         我的观点,一直认为Petri Net对workflow影响也仅仅是“Reference”。
         可以说Petri Net的功能是强大的,甚至能够模拟“算法”,模拟“红绿灯”这些“有一定逻辑和法则”的事物,我想是“workflow”所没有办法描述的,也是不能够描述的。
         这么长时间来,发现在workflow和Process领域,唯一能够与Petri Net能够粘上边的,就是workflow patterns(这位荷兰大牛,对Petri Net可谓是炉火纯青)。
        但是,看看Michael的《Workflow Based Process Controlling》,也仅仅提到了在上个世纪八十年代至九十年代初期,诞生出一些基于Petri net表述过程的办公自动化系统,以及后来的PNML(Petri Net Markup Language,现在估计很少有人知道了)。 ?? 可以说,Michael也将Petri Net定位为一种表示的workflow/Process的一种方式而已(存在很多种了)。

         早期在研究workflow的时候,根本不涉及到Petri Net。中间总是有很多人问(大多是一些学生)Petri Net的workflow问题:这个让我对Petri Net与workflow的关系存在了很多疑问?? 现在研究workflow,你的modeling language,你的engine,你的pattern??? 可以说,就是对Petri Net一点儿也不清楚,依然可以很容易的一套workflow platform。那么再看看open source workflow engine,能够从他们的设计和代码中,看出Petri Net的痕迹吗?
         是Petri Net的消失?还是Petri Net仅仅只是一种早期的process表达?还是Petri Net只遗留给了workflow的一些参考思想(或者说底层算法)?

         应该说,我认为,在早期,Process的标准不健全的时候,人们利用Petri Net来表示Process的一种方式和算法?? 但是,随着workflow的发展,workflow relevant standards的逐步发展,workflow已经逐渐形成了自己的一套理论、平台。?? 而Petri Net也在逐渐的从这个平台中消失,唯一还残存的是,Pattern Reference。

讨论可以去:http://www.wfchina.org/mvnforum/viewthread?thread=137&lastpage=yes 

- 作者: 银狐999 2004年09月28日, 星期二 09:29  回复(7) |  引用(0)

9月25日讨论,构建一套开发平台

今天讨论主要有几个知识点:RCP,Rich Internate Application,黄东对新浪email系统研发控制框架的探讨,POJO,MDA。
其中hd对其所开发平台的构思听值得扩充:

画了个图,如下

 

 

- 作者: 银狐999 2004年09月27日, 星期一 11:49  回复(1) |  引用(0)

如何看待Ad hoc Routing
Ad Hoc Routing并不属于标准的workflow pattern。

有关Ad Hoc Routing的理解,国内产品很少谈及(也许产品有可能支持),但是没有做为一个单独的功能点提出来。

Ad Hoc Routing的理解,不同的产品,似乎也不同。

比如Ultimus,其定义为:在流程运行的时候,后续的任务办理人,由前一办理人指定;而DralaSoft则理解为:当前受权过的操作者,可以更改当前的任务的执行特性。

- 作者: 银狐999 2004年09月24日, 星期五 16:45  回复(0) |  引用(0)