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實例
          主站蜘蛛池模板: 临泉县| 礼泉县| 上思县| 陕西省| 嘉峪关市| 关岭| 温州市| 衡山县| 柞水县| 南宫市| 通化县| 清徐县| 鄂托克前旗| 隆回县| 南澳县| 苍南县| 灵石县| 东丽区| 改则县| 双流县| 南丰县| 胶州市| 阜平县| 东丽区| 紫金县| 鄂托克前旗| 财经| 万年县| 突泉县| 米林县| 阿鲁科尔沁旗| 杭锦后旗| 天门市| 平利县| 桐柏县| 玉溪市| 定边县| 安宁市| 礼泉县| 子洲县| 麟游县|