posts - 26,  comments - 7,  trackbacks - 0

          作者: nogocn 

          在某一公司中,部門員工要休假的話需要部門主管的批準。如果休假天數大于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"
              "
          http://jbpm.org/dtd/processdefinition-2.0.dtd">
          <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="Begin Request"/>
           </start-state>
           <fork name="Begin Request">
            <transition to="Requester Cancel"/>
            <transition to="IsChief"/>
           </fork>
           <decision name="IsChief">
            <delegation class="kellerdu.jbpm.delegation.ChiefDecision"/>
            <transition name="Boss Approve"  to="Boss Approve"/>
            <transition name="Chief Approve"  to="Chief Approve"/>
           </decision>
           <state name="Requester Cancel">
            <assignment swimlane="requester"/>
            <transition name="cancel" to="Decided">
             <action>
              <!--
          將請假的狀態改變為取消
          ”-->
              <delegation class="kellerdu.jbpm.action.RequestCancel"/>
             </action>
            </transition>
           </state>
           <state name="Chief Approve">
            <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="Boss Approve">
            <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="Boss Approve"/>
            <transition name="notNeed" to="Decided"/>
           </decision>
           <join name="Decided">
            <description>
          有一個先到達即進行父
          Token</description>
            <delegation class="kellerdu.jbpm.delegation.DecidedJoin"/>
            <transition to="Do Something"/>
           </join>
           <decision name="Do Something">
            <description>
             
          根據請求的狀態決定。

             
          1主管或者老板批準‘approve’:修改員工休假的總天數,設定發給用戶E-Mail的信息。
             
          2主管或者老板否決”-“disapprove”:設定發給用戶EMail的信息。
             
          3撤銷”-"cancel"-設定發給用戶EMail的信息。如果主管批準,要發給主管消息說明已經撤銷。
              </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">
            <!--
          發送EMail消息給申請者,記錄請假日志 -->
            <delegation class="kellerdu.jbpm.action.ProcessEndAction"/>
           </action>
          </process-definition>

           


          posted on 2007-09-11 13:47 jbpm 閱讀(2425) 評論(0)  編輯  收藏 所屬分類: jbpm實例
          主站蜘蛛池模板: 和田县| 宁夏| 外汇| 昭平县| 南丰县| 顺义区| 定安县| 沛县| 闸北区| 博客| 临洮县| 肇州县| 霞浦县| 泰和县| 鹰潭市| 大冶市| 徐汇区| 高清| 观塘区| 山东| 广东省| 阳新县| 行唐县| 肃北| 云和县| 惠安县| 于田县| 南昌市| 玛纳斯县| 共和县| 林甸县| 洪江市| 元朗区| 闸北区| 广丰县| 宝丰县| 苍山县| 佛山市| 洪雅县| 拉萨市| 禄劝|