日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

如何實現(xiàn)一個簡單的工作流審批引擎

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

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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多