乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      如何實(shí)現(xiàn)一個(gè)簡(jiǎn)單的工作流審批引擎

       井梅 2018-03-20
                                 
      一直在探索一個(gè)可以靈活流轉(zhuǎn)的OA工作流機(jī)制。以前聽說都是用什么domino來做的,用ASP的時(shí)候很少有人去探求這個(gè)機(jī)制的實(shí)現(xiàn)方法。到了ASP.NET的時(shí)候好像大家都醒悟了,認(rèn)識(shí)了工作流引擎,公司老板、CTO等都嚷嚷要上工作流引擎實(shí)現(xiàn)企業(yè)信息審批流程化。我公司也在去年引進(jìn)了深信通的工作流引擎,作為公司其他系統(tǒng)開發(fā)調(diào)用的工作流審批組件,基本是符合WFMC標(biāo)準(zhǔn)的定義的。這個(gè)驗(yàn)收我也去了,看起來是很適合我們公司用的。它設(shè)計(jì)的思路如下:
      首先定義每個(gè)操做,就是定義流程步,定義流程步主要包括:操作的接口地址、操作參數(shù)、操作類型(起始操作、中間操作等)。定義操作的目的是接著為每個(gè)操作設(shè)置關(guān)系和定義流程時(shí)選用這些定義好的操作步。
      第二定義操作的參數(shù),有了接口地址外,還需要定義操作參數(shù)。
      第三是定義操作步之間的關(guān)系。就是定義一個(gè)流程中每個(gè)操作步的前驅(qū)、后繼的操作步。
      第四是定義流程了,必要的信息是流程名稱等基本信息和定義流程的各個(gè)操作步以及流轉(zhuǎn)規(guī)則。流程基本信息就不用說了。流程步定義比較復(fù)雜,設(shè)置定義步驟類型(起始、中間、終結(jié)),入口步驟、出口步驟、通知模式(郵件?短信),人員(以人員優(yōu)先)、角色、發(fā)送通知的內(nèi)容。
      第五是涉及跳步情況的定義,比如需要根據(jù)參數(shù)的不同提交到不同的步驟進(jìn)行審批,這里叫做流程步驟變遷規(guī)則設(shè)置。設(shè)置的內(nèi)容需要:原步驟、目標(biāo)步驟、變遷方向(正/負(fù))、條件規(guī)則(判斷參數(shù)時(shí)用與還是用或)。接著設(shè)置參數(shù)和參數(shù)值及比較條件。
      第六是授權(quán)管理。這個(gè)比較簡(jiǎn)單了。判斷被提交的人是否處于授權(quán)狀態(tài),是進(jìn)行授權(quán)處理。
      上面介紹的是一種商業(yè)組件,沒MONEY可用不到。下面來說說本人的“小土槍”。
      我的小土槍在行家的眼里可能不屑一顧,請(qǐng)不吝賜教.
      首先我的思路是:一個(gè)流程有多個(gè)流程步組成,一個(gè)系統(tǒng)模塊有多個(gè)流程組成.在流程步里定義該步的審批人或?qū)徟慕巧约叭肟陧撁婧蛥?shù)、下一步可以提交的步驟等等。
      所以流程定義的就兩個(gè)表,一個(gè)流程表,一個(gè)流程步表。流程表在定義流程時(shí)需要定義所屬模塊,其他都是簡(jiǎn)單的描述等. 這是一個(gè)表.表結(jié)構(gòu)如下:
      PKID,流程名稱\流程描述\啟用時(shí)間\停用時(shí)間\停啟用標(biāo)志\所屬模塊
      流程步表包括如下信息:
      流程步ID、所屬流程、流程步描述、流程步的審批人、流程步的審批角色、入口URL,出口URL,可提交的流程步(比如這步驟能提交到第4和第5步,這里就保存這個(gè)4,5)、可退回的流程步、還設(shè)置了一個(gè)是否可以選擇全部人的標(biāo)志,用于在如果提交下一步時(shí)如果不能明確事前制定某個(gè)審批人,就可以在在所有人中按部門篩選待辦人員。還有一些待閱入口URL和查看的URL。下表可以看一下。
      FlowStepID
      int
      4
      FlowID
      varchar
      10
      FlowStepDescript
      varchar
      60
      FlowStepCheckMan
      varchar
      40
      FlowStepCheckRole
      varchar
      40
      FlowStepTask
      varchar
      100
      FlowStepUrl
      varchar
      250
      FlowSltNext
      varchar
      100
      SltOtherPsn
      bit
      1
      FlowSltBack
      varchar
      100
      FlowStepReadUrl
      varchar
      250
      FlowViewURl
      varchar
      250
      FlowNextNotes
      varchar
      100
      FlowBackNotes
      varchar
      100
      定義就是這樣了。
      下面就要說怎么用了。
      先說一下背景,企業(yè)里的公文、各種單據(jù)流轉(zhuǎn)實(shí)質(zhì)上就是給“特定”人看某個(gè)頁面,說的更白一點(diǎn)就是給那個(gè)審批人的待辦工作模塊增加一條記錄,給他進(jìn)去看的窗口。接著是他進(jìn)行審批,這時(shí)有兩種可能:退回跟通過(當(dāng)然有些步驟還有編輯)。那么如何用上面設(shè)計(jì)的數(shù)據(jù)字典實(shí)現(xiàn)這些功能呢?首先看一個(gè)頁面:
      這是一個(gè)提交審批的流程,首先有一個(gè)下一流程步的列表框,這個(gè)列表框是用來顯示可以提交的那幾個(gè)流程步,就是按照數(shù)據(jù)表中的字段:FlowSltNext,這個(gè)字段里可以放幾個(gè)流程步,中間用逗號(hào)隔開,所以下一流程步去數(shù)據(jù)就是先取出這個(gè)當(dāng)前流程步的FlowSltNext值,然后再select ………WHERE PKID IN (FlowSltNext).這樣就出來可選的流程步。如果下一流程步是可選的,還要根據(jù)用戶所選的流程列出候選人,所以這個(gè)列表框應(yīng)該自動(dòng)回傳服務(wù)器的。
      然后就是填寫意見,這個(gè)沒什么說的了。
      最后就是選擇候選人,把他加入到待辦人員去,同樣可以做出待閱的效果。
      如何列出候選人呢,根據(jù)用戶選擇的下一流程,查找FlowStepCheckMan(審批人)和FlowStepCheckRole(審批角色)內(nèi)容,先找FlowStepCheckMan的內(nèi)容,如果存在就不看FlowStepCheckRole的內(nèi)容,已審批人優(yōu)先,就按照審批人的內(nèi)容列出獲選人人名。如果FlowStepCheckMan沒有內(nèi)容,再看FlowStepCheckRole內(nèi)容,按照FlowStepCheckRole內(nèi)容選擇屬于這個(gè)角色的人名。
      對(duì)了還有如何記錄審批人的審批動(dòng)作問題,這里用了一個(gè)審批記錄表,表結(jié)構(gòu)是:
      CheckInstance
      varchar
      被審批實(shí)體的唯一標(biāo)號(hào)
      sysID
      int
      流水號(hào)
      DealResult
      varchar
      處理結(jié)果(退回、通過)
      DealPsn
      varchar
      處理人(審批人)
      DealSDate
      datetime
      審批開始時(shí)間
      DealEDate
      datetime
      審批結(jié)束時(shí)間
      Idear
      varchar
      意見
      FlowStep
      varchar
      流程步
      UseFlow
      varchar
      流程
      然后還要生成待辦記錄、更新審批實(shí)體的流程信息等等。
      上面說完了提交流程的實(shí)現(xiàn),那么如果選擇退回呢,這個(gè)很簡(jiǎn)單,在流程記錄表中查找出所有已審批過的流程步并且是屬于流程步規(guī)定的可退回步驟,即FlowSltBack字段的內(nèi)容。候選人按所選那一步的處理人列表就可以了。
      大概就這樣吧,自己寫得好辛苦。越寫越?jīng)]耐心。
                                                             
                        

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多