| 笔名:银狐999 | |
| 地区: | |
| 作者相册 |
| 日 | 一 | 二 | 三 | 四 | 五 | 六 |
吾非文人,乃市井一俗人也,读百卷书,跨江河千里,故京城一游;
一两滴辛酸,三四年学业,五六点粗墨,七八笔买卖,九十道人情。
??银狐999(http://www.javafox.org)
Blog变更地址
Blog变更地址
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());
Bossa支持PNML
工作流模式与工作流运转模型(Transition Model)
那么将这些“return”之类的放于何处呢?放在workflow feature,就有些太不抽象;这也是我曾经写《工作流模型分析》一个原因。?? 当时,实在无法用“工作流模式”这个词,所以才用的“工作流模型”来指明他们的区别:文章中,我把“Unrestricted Routing”之类的归属于“特殊运转模型”就是这个意思。但是,当时,这个区别以及层次,实际上不是很清晰的(那时候理解也并不是很透彻)。
为此,我规划出一个单独的层次:工作流运转模型(Workflow Transition Model.),如下图:
其实,这种图并不能很好的表达Workflow Transtion Model与Workflow Pattern之间的真正的关系:就像你无法用于图形,表达一个java应用与一个模式之间的关系一样。
或者说,Workflow Pattern可以用图形非常直观形象的表达流程的“规则运转方式”,而Workflow Transition Model则表达了 一种流程运行表现的应用模型。
比如,一个处于Sequence(从模式上划分,属于Sequence)的活动点,其可能表现为“rollback”,甚至“Unrestricted”;当然,也可能其本身表现的就是一个Sequence。
这样划分,也就是想将很多问题,从Patterns中跳跃出来,但也不至于一下子就跳跃到workflow feature或function这些抽象度很低的层次上。
Shark的在Eclipse环境下的联合调试跟踪
Shark的在Eclipse环境下的联合调试跟踪
胡长城(银狐999)
Shark的modules分的很清晰,但是代码量和包结构,是很复杂的,而且屏蔽了大量的实现类,这更增加了阅读程序的难度??????
一般意思上说,阅读代码最好的方式,是“调试与跟踪”。所以,学习shark,最好的方式,也是跟踪其代码的运行逻辑。
但是,一般要启动Shark,就必须启动shark的tns,corba server(SharkCORBAServer),admin(SharkAdmin)。这种情况,很容易让人感觉,调试或者跟踪程序是件很麻烦的事情,其实不然。
建议大家从shark cvs中获取::pserver:anonymous@cvs.forge.objectweb.org:/cvsroot/shark
然后利用Eclipse加载shark的工程,是非常简单的事情(哈哈,这个不用说了),稍微补充以下,就是从cvs上拽的工程,不包含hibernate.jar。但是shark编译的需要。
配置SharkAdmin 调试环境:
这个实际上没什么说的,SharkAdmin仅仅是个Application。
配置SharkCORBAServer的调试环境
这个当然要参考一下run.bat或run.sh文件。查阅一下其调用应用程序所需要的Environment及classpath。可以看见其需要“PATH=lib\contrib\ext;%PATH%”。
在lib/ext目录下,存在NTEventLogAppender.dll 等几个dll文件,需要加入Path环境中。
知道这个需求,就很简单了。只需在Eclipse的Debug中将Environment 的“Path”引入(默认是没有的),并且编辑以下,将NTEventLogAppender.dll等文件的位置引入即可。
还剩一个TNS
这个最简单的了,也不许要调试跟踪,只是提供一个命名服务。从shark网站下载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
讨论Petri Net和Workflow的关系
9月25日讨论,构建一套开发平台
今天讨论主要有几个知识点:RCP,Rich Internate Application,黄东对新浪email系统研发控制框架的探讨,POJO,MDA。
其中hd对其所开发平台的构思听值得扩充:
画了个图,如下
如何看待Ad hoc Routing