<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    莊周夢蝶

    生活、程序、未來
       :: 首頁 ::  ::  :: 聚合  :: 管理

    Insect Workflow

    Posted on 2008-05-21 15:09 dennis 閱讀(2145) 評論(0)  編輯  收藏 所屬分類: java 、工作流 、my open-source
        今天整理代碼,發(fā)現(xiàn)一個去年寫的簡單的工作流引擎,基于petri網(參考這里的筆記),實現(xiàn)了順序、并行、循環(huán)和選擇四種路由,資源也實現(xiàn)了人工驅動和定時、延遲時間驅動;目前只實現(xiàn)了將工作流數(shù)據(jù)保存在內存的版本,然后就換工作,折騰著就忘了這個事兒,本來是計劃加入數(shù)據(jù)庫存儲的。盡管只是個toy,可能對工作流感興趣,或者想自己實現(xiàn)一個玩玩的朋友有參考價值,放到了google code上,svn地址:
     http://insectworkflow.googlecode.com/svn/trunk/

        源碼中有在example包下給了個請假的例子,流程定義文件就是processes包下的leave.xml,實現(xiàn)大概是這么個流程:
    填寫假單-》提交假單-and-split節(jié)點-》項目經理審批-》and-join節(jié)點-》結束
                                                         -》部門經理審批-》

    其中項目經理審批和部門經理審批是并行路由。xml配置大概這樣:
    <node type="and-split" name="and-split" id="2">
            
    <inputs>
                
    <place id="3" />
            
    </inputs>
            
    <outputs>
                
    <place id="4" />
                
    <place id="5" />
            
    </outputs>
        
    </node>
        
    <node name="dept_manager_confirm" id="3">
            
    <resource class="com.google.code.insect.workflow.impl.Group" id="2"
                name
    ="dept_manager">
            
    </resource>
            
    <conditions type="and">
                
    <condition
                    
    class="com.google.code.insect.workflow.impl.NullHandler" value="false"
                    variable-name
    ="LeaveInfo" />
            
    </conditions>
            
    <handler
                
    class="com.google.code.insect.workflow.example.leave.SendRemindHandler" />
            
    <inputs>
                
    <place id="4" />
            
    </inputs>
            
    <outputs>
                
    <place id="6" />
            
    </outputs>
        
    </node>
        
    <node name="project_manager_confirm" id="4">
            
    <resource class="com.google.code.insect.workflow.impl.Group" id="3"
                name
    ="project_manager">
            
    </resource>
            
    <conditions type="and">
                
    <condition
                    
    class="com.google.code.insect.workflow.impl.NullHandler" value="false"
                    variable-name
    ="LeaveInfo" />
            
    </conditions>
            
    <handler
                
    class="com.google.code.insect.workflow.example.leave.SendRemindHandler" />
            
    <inputs>
                
    <place id="5" />
            
    </inputs>
            
    <outputs>
                
    <place id="7" />
            
    </outputs>
        
    </node>
        
    <node type="and-join" name="and-join" id="5">
            
    <handler
                
    class="com.google.code.insect.workflow.example.leave.ResultHandler" />
            
    <inputs>
                
    <place id="6" />
                
    <place id="7"></place>
            
    </inputs>
            
    <outputs>
                
    <place id="8" />
            
    </outputs>
        
    </node>

        其中的place就是各個Transition的輸入或者輸出庫所,所謂node其實就是變遷(transition),每個變遷對應一個handler,執(zhí)行具體的業(yè)務操作,比如這里的com.google.code.insect.workflow.example.leave.SendRemindHandler 用于發(fā)送提醒消息給經理們。

        具體調用和工作項的人工觸發(fā):

    //初始化工作流管理器
    WorkFlowManager wm = new BasicWorkflowManager();
    wm.setConfiguration(
    new DefaultConfiguration());

    //啟動一個案例
    Token token = wm.startWorkFlow("leave");
    token.setAttribute(
    "LeaveInfo", leaveInfo);

    //提交假單
    wm.doAction(token.getId(), this.dennis, "給領導發(fā)送消息:"
                    
    + leaveInfo.getStaff_name() + "申請請假,請批準!");
    //將token的id傳遞給后續(xù)節(jié)點做處理。。token的id就是案例id
        processes包下面的流程定義文件和test包下的TestUnit,分別測試了四種路由和定時、延時觸發(fā),有興趣的可以看一下。

    主站蜘蛛池模板: 亚洲精品乱码久久久久久V| 亚洲视频中文字幕在线| 理论亚洲区美一区二区三区| 99久久久精品免费观看国产| 亚洲电影唐人社一区二区| 久久久精品2019免费观看| 亚洲永久永久永久永久永久精品| 男的把j放进女人下面视频免费| 亚洲av永久无码精品古装片| 99免费在线观看视频| 亚洲狠狠狠一区二区三区| 久久天天躁狠狠躁夜夜免费观看| 1000部羞羞禁止免费观看视频| 免费看a级黄色片| 亚洲av无码专区在线播放 | 久久久久亚洲AV无码观看 | 亚洲爆乳无码精品AAA片蜜桃| 免费的一级片网站| 一级做a爰全过程免费视频毛片| 亚洲人成网77777亚洲色 | 午夜在线a亚洲v天堂网2019| 国产免费av一区二区三区| 亚洲午夜精品一区二区| 免费在线观看一区| 日本免费一区二区三区最新 | 中文字幕亚洲一区| 欧亚一级毛片免费看| 亚洲AV综合色一区二区三区| 四虎精品视频在线永久免费观看| 国产成A人亚洲精V品无码| 精品国产免费一区二区三区| 四虎成人精品在永久免费| 成人免费无码H在线观看不卡| 亚洲春色在线观看| 亚洲av无码天堂一区二区三区| 国产精品99久久免费观看| 亚洲精品乱码久久久久蜜桃 | a级精品九九九大片免费看| 67194在线午夜亚洲| 91精品免费在线观看| 免费手机在线看片|