jeffen2006的专栏

当我们往前仰望大师的遥远背影时,我们总是期望有那么一个快捷方式能够赶上他们,但事实上并不存在这个快捷方式,大师们所花费的时间是我们所尚未付出的、他 们所花费的精神是我们尚未投入的、中间所历经的苦恼是我们未曾体会的、而所得到的经验在他们愿意转换为知识之前,更是我们所无法拥有的,我们所看到的只是 他们的背影所显现出的光辉,却无法看到他们往前看时所面对的迷雾,我们所走的只是他们开拓过的大道,而不是他们正在努力开拓的道路。 ——林信良

jeffen2006ID:jeffen2006
38956次访问,排名2844好友0人,关注者2
jeffen2006的文章
原创 82 篇
翻译 0 篇
转载 1 篇
评论 16 篇
jeffen的公告
版权所有,转贴请注明出处
最近评论
swenge:jbpm.cfg.xml
这个文件不能空着,要写一些东西的,可是具体写哪些我忘记了
shawn:首先是使用UML技术描述出整个需求,使用ORMpping技术将面向对象的UML转换成数据库表,同时生成对应的对象,

原来UML还能做这个事情,长见识了,今天
shawn:个人理解写自己的ASSIGNMENT,但是最终都会变成ACTORID或是POOLED ACTORID,任务创建的时候会执行自己的ASSIGNMENT,ASSIGNMENT里面可以根据自己的情况把现有的组织机构转换为ACTORID,或是POOLED ACTORID放进去。

弊端就是如果在任务被创建以后,组织机构里的GROUP或是ROLE等的人员变动不能在TASK里面表现出来。……
弱弱的问下:感觉是jBPM的GPD好像不支持superstate的子节点的显示和修改,只能编辑流程定义的文件。
如果是这样为什么会有superstate在可视化工具上呢?是不是有别的什么办法?
多谢.....
jeffen:你的问题看的不是很明白?你是不是想通过拖拉来构建流程,其实通过拖拉来完成流程设计可能不是想象中那么简单,关键的流程一定是要经过仔细的设计并经过严格的测试的,同时还要有一定的经验。完全通过拖拉做得流程其实只是一个花架子。jbpm提供的这个可视的工具,我想目的是让我们对流程有个整体的概念,同时可以做一些表现上的扩展,而不是用了它就省去编码了。
文章分类
收藏
    相册
    博客链接
    mrshan[箫杉]的专栏
    sunrain-多种数据库应用
    我的文件存放地,一个好的java学习网站
    林信良(良葛格)的专栏
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 jbpm知识点——timer、Scheduler收藏

    新一篇: 医生VS程序员——都是技术工种 | 旧一篇: jbpm知识点——identity

    定时器timer可以被用于decision fork join node process-state state super-state task-node,可以设置开始时间duedate和频率repeat,定时器动作可以是所支持的任何动作元素,如action或script,会运行我们设置的商务动作。定时器通过动作创建和取消,有两个动作元素create-timer和cancel-timer。事实上,默认的定时器元素只是create-timer动作依附于node-enter事件、cancel-timer动作依附于node-leave事件的一个简略表示。

    timer还有一个很重要的属性cancel-event,这个是timer和task结合时使用的,任务定时器的cancel-event可以被定制。默认情况下,当任务被结束时(=完成)任务上的定时器将被取消,这是通过在定时器上使用cancel-event属性,流程开发者可以定制诸如task-assign或task-start。cancel-event支持多个事件,通过在属性中指定一个用逗号分割的列表,可以组合cancel-event的类型。这个属性没搞过呢。

    调度这一块其实分成2部分,一个就是定时器,还有一个是调度服务。从jbpm的javadoc可以看到调度服务涉及了几个类,由于时间原因我还没有深入的研究过。


    下面举一个简单的例子,运行一个定时器reminder,这个定时器立刻就运行duedate='0 seconds',频率是3seconds,执行的动作是输出timer running。这个定时器会在12秒后被定时器reminderend终结。
    (有一个问题,终结是终结了但是SchedulerThread还在那等着,要回头再看看java的线程了。)
    (还有一个问题,transition的用途还不是很明白?我以为运行12秒后流程就会跳转到end了。)

    <?xml version="1.0" encoding="UTF-8"?>
    <process-definition xmlns="" name="yytest">
        
    <start-state>
            
    <transition to="a"/>
        
    </start-state>
        
    <state name='a'>
         
    <timer name='reminder' 
                 
    duedate='0 seconds' 
                 repeat
    ='3 seconds'>
            
    <script>System.out.println("timer running");</script>
         
    </timer>
         
    <timer name='reminderend' 
                 
    duedate='12 seconds'
                 transition
    ='end'
                 
    >
            
    <cancel-timer name='reminder'/>
         
    </timer>
        
    </state>
       
    <end-state name="end"></end-state>
    </process-definition>


     

    private static void run(){
            JbpmContext jbpmContext 
    = jbpmConfiguration.createJbpmContext();
            
    try {
                
    long processInstanceId =1;
                   processInstance 
    = jbpmContext.loadProcessInstance(processInstanceId);
                   Token token 
    = processInstance.getRootToken();
                   
    //schedulerSession = jbpmContext.getSchedulerSession();
                   System.out.println(token.getNode());
                   token.signal();
                   System.out.println(token.getNode());
                   
    //Timer timer = (Timer) schedulerSession.findTimersByDueDate().next();
                   
    //timer.execute();
                   SchedulerThread st=new SchedulerThread(jbpmConfiguration);
                   
    //st.executeTimers();
                   st.run();
                   
    //token.signal();
                   
    //System.out.println(token.getNode());
                   
    //jbpmContext.save(processInstance);
                }
    finally {
                  jbpmContext.close();
                }

        }

    运行结果如下:

    StartState(159e154)
    State(a)
    timer running
    timer running
    timer running
    timer running
    (12秒后停止但是线程还在run)

    发表于 @ 2006年10月20日 10:01:00|评论(loading...)|编辑

    新一篇: 医生VS程序员——都是技术工种 | 旧一篇: jbpm知识点——identity

    评论

    #jonim 发表于2006-11-04 15:29:00  IP: 218.71.141.*
    timer中的transition是当timer结束时会跳到指定的transition上,但有一个条件就是这个节点要有这条transition存在,如果不存在,系统将什么都做,就等于没有定义了。
    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © jeffen