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

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

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

    [轉]一個JBPM工作流管理示例(一)

    Posted on 2005-12-16 16:49 蝦米老 閱讀(1206) 評論(0)  編輯  收藏 所屬分類: flow學習
    示例:
    在某一公司中,部門員工要休假的話需要部門主管的批準。如果休假天數大于10天的話,在部門主管的同意后,還必須上級主管批準。如果是部門主管要休假只要上級主管批準即可。在休假被批準之前,申請人可以撤銷休假申請。
    每個員工還有多少天休假必須管理起來,在員工提交休假申請時要檢查申請天數是否超過可用天數。申請批準后,要在可用天數里減去申請天數。每次休假申請結束之后,不管通過未通過或是否取消,都必須記錄下來。主管在批復申請之后,系統要將批復結果Email給申請人。對于大于10天的申請,如果部門主管已批準同意而上級主管還未批準,這時申請人撤銷申請后,系統應發Email通知部門主管申請已撤銷。 
      processdefinition.xml如下:
    <?xml version="1.0" encoding="UTF-8"?>
    <!-- edited with XMLSPY v2004 rel. 3 U (http://www.xmlspy.com) by keller (zju) -->
    <!DOCTYPE process-definition PUBLIC
        "-//jBpm/jBpm Mapping DTD 2.0//EN"
        "<process-definition  name="RequestLeave">
     <swimlane name="requester">
      <description>申請者</description>
     </swimlane>
     <swimlane name="chief">
      <description>部門主管</description>
      <delegation class="kellerdu.jbpm.delegation.ChiefSwimlane"/>
     </swimlane>
     <swimlane name="boss">
      <description>上級主管</description>
      <delegation class="kellerdu.jbpm.delegation.BossSwimlane"/>
     </swimlane>
     <start-state name="request" swimlane="requester">
      <transition to="BeginRequest"/>
     </start-state>
     <fork name="BeginRequest">
      <transition to="RequesterCancel"/>
      <transition to="IsChief"/>
     </fork>
     <decision name="IsChief">
      <delegation class="kellerdu.jbpm.delegation.ChiefDecision"/>
      <transition name="BossApprove"  to="BossApprove"/>
      <transition name="ChiefApprove"  to="ChiefApprove"/>
     </decision>
     <state name="RequesterCancel">
      <assignment swimlane="requester"/>
      <transition name="cancel" to="Decided">
       <action>
        <!-- 將請假的狀態改變為“取消”-->
        <delegation class="kellerdu.jbpm.action.RequestCancel"/>
       </action>
      </transition>
     </state>
     <state name="ChiefApprove">
      <assignment swimlane="chief"/>
      <transition name="approve" to="NeedBossApprove">
       <action>
        <!-- 將請假的狀態改變為“主管批準”-->
        <delegation class="kellerdu.jbpm.action.ChiefApprove"/>
       </action>
      </transition>
      <transition name="disapprove" to="Decided">
       <action>
        <!-- 將請假的狀態改變為“主管否決”-->
        <delegation class="kellerdu.jbpm.action.ChiefDisapprove"/>
       </action>
      </transition>
     </state>
     <state name="BossApprove">
      <assignment swimlane="boss"/>
      <transition name="approve" to="Decided">
       <action>
        <!-- 將請假的狀態改變為“老板批準”-->
        <delegation class="kellerdu.jbpm.action.BossApprove"/>
       </action>
      </transition>
      <transition name="disapprove" to="Decided">
       <action>
        <!-- 將請假的狀態改變為“老板否決”-->
        <delegation class="kellerdu.jbpm.action.BossDisapprove"/>
       </action>
      </transition>
     </state>
     <decision name="NeedBossApprove">
      <!-- 請假天數大于10天的要老板批準  -->
      <delegation class="kellerdu.jbpm.delegation.NeedBossApproveDecision"/>
      <transition name="need" to="BossApprove"/>
      <transition name="notNeed" to="Decided"/>
     </decision>
     <join name="Decided">
      <description>有一個先到達即進行父Token</description>
      <delegation class="kellerdu.jbpm.delegation.DecidedJoin"/>
      <transition to="DoSomething"/>
     </join>
     <decision name="DoSomething">
      <description>
        根據請求的狀態決定。
        (1)“主管或者老板批準”-‘approve’:修改員工休假的總天數,設定發給用戶E-Mail的信息。
        (2)“主管或者老板否決”-“disapprove”:設定發給用戶E-Mail的信息。
        (3)“撤銷”-"cancel"-設定發給用戶E-Mail的信息。如果主管批準,要發給主管消息說明已經撤銷。
        </description>
      <delegation class="kellerdu.jbpm.delegation.DoSomethingDecision"/>
      <transition name="disapprove" to="Finished">
       <action>
        <delegation class="kellerdu.jbpm.action.Disapprove"/>
       </action>
      </transition>
      <transition name="approve" to="Finished">
       <action>
        <delegation class="kellerdu.jbpm.action.Approve"/>
       </action>
      </transition>
      <transition name="cancel" to="Finished">
       <action>
        <delegation class="kellerdu.jbpm.action.Cancel"/>
       </action>
      </transition>
     </decision>
     <end-state name="Finished"/>
     <action event-type="process-end">
      <!-- 發送E-Mail消息給申請者,記錄請假日志 -->
      <delegation class="kellerdu.jbpm.action.ProcessEndAction"/>
     </action>
    </process-definition>

    posts - 5, comments - 3, trackbacks - 0, articles - 0

    Copyright © 蝦米老

    主站蜘蛛池模板: 一级日本高清视频免费观看| 亚洲第一网站免费视频| 亚洲av无码一区二区三区天堂| 中文字幕免费高清视频| 亚洲天堂在线播放| 99ee6热久久免费精品6| 亚洲电影中文字幕| www视频在线观看免费| 亚洲综合久久成人69| 99久久精品日本一区二区免费| 亚洲成人福利网站| 毛片免费视频观看| 亚洲中文字幕精品久久| 国产美女被遭强高潮免费网站| 亚洲精品色在线网站| 亚洲国产精品嫩草影院久久| 午夜不卡AV免费| 亚洲国产精品无码AAA片| 日韩精品久久久久久免费| 亚洲成a人片在线看| 免费观看a级毛片| 免费激情网站国产高清第一页| 久久亚洲国产精品123区| a级黄色毛片免费播放视频| 亚洲天天在线日亚洲洲精| 色片在线免费观看| 亚洲乱码无人区卡1卡2卡3| 好爽好紧好大的免费视频国产| 特级毛片aaaa免费观看| 亚洲精品无码成人片久久| **一级毛片免费完整视| 亚洲乱码在线卡一卡二卡新区| 中国在线观看免费国语版| 国产成人精品亚洲| 国产亚洲av人片在线观看| 亚洲第一网站免费视频| 亚洲熟妇无码av另类vr影视| 免费人成视频x8x8入口| 99视频在线看观免费| 亚洲av成人片在线观看| 中文字幕亚洲乱码熟女一区二区|