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 閱讀(2421) 評論(0)  編輯  收藏 所屬分類: jbpm實例
          主站蜘蛛池模板: 通海县| 铜梁县| 安龙县| 宁晋县| 洛扎县| 太谷县| 景洪市| 若羌县| 河津市| 靖边县| 西安市| 惠州市| 西畴县| 岳阳县| 三门县| 沙湾县| 项城市| 西吉县| 龙南县| 玛曲县| 长丰县| 濮阳县| 元谋县| 文安县| 寿宁县| 梧州市| 威信县| 湟源县| 迁西县| 柳河县| 盱眙县| 黑河市| 凤阳县| 辽源市| 阿拉善盟| 河东区| 紫阳县| 桑植县| 日照市| 荔浦县| 西乌珠穆沁旗|