2006-04-27

StackOverflow了

在DesignerApplicationWorkbenchWindowAdvisor的构造函数里写了一句就出现了这种情况:
configurer.getWindow().getWorkbench().openWorkbenchWindow(file);
想了一下,原因挺简单的。

嗯...又有了点了解,不过总找不到本像样的书看,老这么试可真不是办法

获得一个文件真是麻烦

IPath path = new Path("org.jbpm.ui/gpd.xml");
IWorkspaceRoot workspaceRoot = ResourcesPlugin.getWorkspace().getRoot();
IFile file = workspaceRoot.getFile(path);

文件只能通过workspace范围内,那个org.jbpm.ui是project名,看着挺别扭的...

2006-04-26

补个日记吧

上次田野跟我说的事务执行细节:
有个大前提:所有操作都只是函数调用

函数放在线程栈内(注意是一个线程噢),从上往下依次执行,如果某个地方抛出异常,则整个栈的执行被回退。

嗯,大概就是这么说的,以前我也见到过,现在虽然明白但是还是不清楚。有个问题就是:每个函数都应该支持do和undo吧?要不怎么回退呢

对plug-in进行二次开发

其实方法挺简单的,只是刚开始的时候不知道。在package Explorer里右键选择import...,然后在出来的wizard里选择"external plug-ins and fragments",里面会有好多plug-ins可供选择,都是你的Eclipse目前能识别的所有的。选择一个finish就OK了,Eclipse会独立创建一个新project把所需要的东西复制过来。这样就跟一个普通plug-in project一样了,呵呵。

如果想以Eclipse Application方式运行,还需要写点东西的说,不晓得怎么把模板导进来,那就不用写了嘿嘿。

贴代码不说话

Thread.currentThread().getContextClassLoader().getResource();

dont code like above, but :
Thread current = Thread.currentThread();
ClassLoader oldLoader = current.getContextClassloader();
try{
current.setContextClassloader(getClass().getClassloader());
//call library code here
}finally{
current.setContextClassloader(oldLoader);
}

Eclipse Product的创建方法

昨天找了半天都没找到:
新建一个plug-in Project,然后在wizard里面有个选项,叫"would you like to create a eclipse product application?"选择yes就OK了。

2006-04-20

把文档写出来了

也没用多少时间,只是把网上的东西copy下来,然后修改一下适合版面罢了。当然,写出来的肯定是自己懂的,要不别人问起来那不丑大了,呵呵。

今天印象最深的是澄清了一个概念:execution,这个和petriNet里的Token是一样的意思,而我之前以为token应该是和transition挂钩的。=_=#!
execution是可以传递的,通过Node或Transition,其实Transition惟一的作用就是传递Execution到Node。Action可以产生新的Execution。这和petriNet中place可以fork出新token是一样的。

jBPM实现太多东西了,一时间还看不全面,比如asynchronous, concurrent, persistence,jms,transaction。后来因为找不到web-based 流程设计ui,跑去jboss的forum问了一下,本是不期望答案的,结果没过三分钟就有人来回答,虽然答案不尽人意,却也挺高兴的,我很久没在论坛上说过话了,也很少看,更何况是e文的,因为以前问的问题很少有人回答,就再不去论坛了,在CSDN上的号很久都没去过了。现在看来,真是个错误的决策!

以后要多多逛论坛啦 ^_^