国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開(kāi)通VIP
三款工作流引擎比較:WWF、netBPM 和 ccflow

下面將對(duì)目前比較主流的三款工作流進(jìn)行介紹和比較,然后通過(guò)三款流程引擎分別設(shè)計(jì)一個(gè)較典型的流程來(lái)給大家分別演示這三款創(chuàng)建流程的過(guò)程.這三款工作流程引擎分別是 Windows Workflow Foundation,NetBPM, CCFlow.

NetBPM 與 CCFlow 是兩款國(guó)內(nèi)知名的開(kāi)源軟件,尤其是ccflow在國(guó)內(nèi)的發(fā)展勢(shì)頭強(qiáng)勁。

這個(gè)典型的流程假設(shè):公司有兩級(jí)領(lǐng)導(dǎo),一級(jí)為主管Chief,一級(jí)為老板Boss

場(chǎng)景描述:

  在某公司中,部門員工休假需要主管Chief的批準(zhǔn)。
  如果休假天數(shù)大于10天,則 在部門主管同意后,還必須老板Boss批準(zhǔn)。
  如果是部門主管請(qǐng)假則直接提交老板批準(zhǔn)。
  在休假被批準(zhǔn)之前,申請(qǐng)人可以撤銷休假申請(qǐng)。
  申請(qǐng)批準(zhǔn)后,對(duì)休假天數(shù)進(jìn)行修改(也可以是其他業(yè)務(wù)數(shù)據(jù)處理)。 每次休假申請(qǐng)結(jié)束之 后,不管通過(guò)未通過(guò)或是否取消,都必須記錄下來(lái)。
  流程結(jié)束時(shí),系統(tǒng)要把請(qǐng)假的結(jié)果信息Email給申請(qǐng)人。

  對(duì)于大于10天的申請(qǐng),如果部門主管已批準(zhǔn)同意而上級(jí)主管還未批準(zhǔn),這時(shí)申請(qǐng)人撤銷申請(qǐng)后,系統(tǒng)應(yīng)發(fā)Email通知部門主管申請(qǐng)已撤銷。

我們這里只是一個(gè)模擬,當(dāng)然現(xiàn)實(shí)生活中情況比這個(gè)更加復(fù)雜一些;

Windows Workflow Foundation

微軟的工作流產(chǎn)品,提供一套工作流引擎和VS解決方案自帶的流程設(shè)計(jì)器,但是該流程設(shè)計(jì)器面對(duì)的是程序員而非業(yè)務(wù)人員,所以界面比較專業(yè),流程運(yùn)行只能創(chuàng)建控制臺(tái)應(yīng)用程序,沒(méi)有流程運(yùn)行界面,沒(méi)有表單庫(kù),如需要表單和界面需要二次開(kāi)發(fā)。

使用WWF創(chuàng)建流程:

1. 啟動(dòng)VS2010,創(chuàng)建一個(gè)順序工作流控制臺(tái)的程序。
2. 輸入項(xiàng)目名稱,點(diǎn)擊確定,將自動(dòng)進(jìn)入流程設(shè)計(jì)界面。
3. 自動(dòng)生成的Workflow1.cs是一個(gè)工作流組件。
4. 工具箱中拖放一個(gè)IfElse活動(dòng)組件到設(shè)計(jì)界面上。
5. 此時(shí)就需要較多的編碼工作和表單界面設(shè)計(jì)工作,如在idelseBranchActivitiy1左側(cè)分支,用以判斷請(qǐng)假人是否新申請(qǐng)請(qǐng)假還是取消請(qǐng)假,激活Conditiong屬性,并且添加內(nèi)部事件EvaluateQingJiaNoValidCode,并激活,在內(nèi)部輸入邏輯代碼根據(jù)數(shù)據(jù)庫(kù)記錄判斷請(qǐng)假是否通過(guò),未通過(guò)則取消請(qǐng)假。也可以走另一分支EvaluateQingJiaCode繼續(xù)申請(qǐng)新的請(qǐng)假;
6. 拖放parallelActivity1組件在IfElse節(jié)點(diǎn)后,用以判斷請(qǐng)假人是否為Chief,設(shè)置sequenceActivity1中的codeActivity3屬性的ExecuteCode處理程序?yàn)镋valuateChiefNoValidCode,并激活,內(nèi)部代碼用以判斷不是Chief的情況,另一分支sequenceActivity1中則判斷是Chief的情況;
7.如果不是Chief請(qǐng)假,則需要在EvaluateChiefNoValidCode中進(jìn)行邏輯判斷和表單的設(shè)計(jì),填寫請(qǐng)假申請(qǐng)單, 并拖放IfElse組件,實(shí)現(xiàn)其中的codeActivity6代碼用以判斷大于10天的情況。
8.F5即可運(yùn)行控制臺(tái)程序,其中的通過(guò)未通過(guò)或是否取消的數(shù)據(jù)需要記錄,需要通過(guò)代碼和設(shè)計(jì)數(shù)據(jù)庫(kù)來(lái)實(shí)現(xiàn),發(fā)送Email也需要代碼實(shí)現(xiàn),WWF沒(méi)有提供該功能。

WWF下設(shè)計(jì)的流程圖如下:

NetBPM

從JBpm1移植到.NET平臺(tái)下的開(kāi)源工作流項(xiàng)目,二次開(kāi)發(fā)有一定的難度,因?yàn)槠涫褂玫腃astle框架有很多子項(xiàng)目,技術(shù)點(diǎn)較多,需要一一熟悉后才能進(jìn)行流程的二次開(kāi)發(fā)。

使用NetBPM創(chuàng)建工作流過(guò)程:
1.    使用NetBPM的難點(diǎn)之一是要理解生成配置文件,提交請(qǐng)假單配置如下:

01<?xml version="1.0"?>
02<!-- NOTE:在定義流程時(shí),建議先畫出流程圖,然后再來(lái)定義,這樣思維清晰,也不易于出錯(cuò)
03    關(guān)于processdefiniton.xml如何定義,請(qǐng)嚴(yán)格按照nPdl規(guī)定 -->
04<process-definition>
05  
06  <!-- =================================== -->
07  <!-- == PROCESS DEFINITION PROPERTIES == -->
08  <!-- =================================== -->  
09  <name>請(qǐng)假DEMO</name>
10  <description>該流程模擬公司的請(qǐng)假流程,  </description>
11  <responsible>ae</responsible>
12  
13  <!-- ====================== -->
14  <!-- == START & ENDSTATE == -->
15  <!-- ====================== -->
16  <start-state name="start leave request">
17    <description>提交請(qǐng)假單</description>
18    <!-- 定義了role,引擎在該start-state節(jié)點(diǎn)執(zhí)行時(shí),就會(huì)把執(zhí)行者信息賦值給角色對(duì)應(yīng)的屬性“requester” -->
19    <role>requester</role>
20    <!-- 在這里定義start-state的field,它表示該filed相關(guān)聯(lián)的屬性,并且在該state,它對(duì)屬性的訪問(wèn)權(quán)利。
21         如果需要定義其在web表單上的操作界面,如何進(jìn)行web表單顯示等,需要在webinterface.xml文件對(duì)應(yīng)節(jié)點(diǎn)補(bǔ)充該field -->
22    <field attribute="start date" access="write-only-required" />
23    <field attribute="end date"   access="write-only-required" />
24    <field attribute="leave days"    access="write-only-required" />
25    <field attribute="comment"    access="write-only" />
26    <transition to="Is Cancel Fork" />
27  </start-state>
28    
29  <!-- 結(jié)束節(jié)點(diǎn)除名稱外不要定義其他-->
30  <end-state name="end" />
31  
32  
33  <!-- ====================== -->
34  <!-- ==      Actions     == -->
35  <!-- ====================== -->
36  <!-- 解釋:這里定義process-definition節(jié)點(diǎn)的action,有效的事件類型為:process-instance-start, process-instance-end and process-instance-cancel -->
37    
38  <!-- 此處具體為:在流程結(jié)束的時(shí)候, 發(fā)送E-Mail消息給申請(qǐng)者,記錄請(qǐng)假日志 -->    
39  <action event="process-instance-end" 
40        handler="NetBpm.Example.LeaveOfAbsence.EmailAction, NetBpm.Example.LeaveOfAbsence"   on-exception="log">
41        <!--定義action參數(shù),供委托類實(shí)例化類調(diào)用方法時(shí)獲取使用。如這里的EmailAction的run方法發(fā)送郵件,需要知道發(fā)給誰(shuí),郵件標(biāo)題等等,那么
42            參數(shù)可以提供輔助-->
43        <parameter name="to">previousActor</parameter>
44        <parameter name="subject">您提交了請(qǐng)假申請(qǐng)</parameter>
45        <parameter name="message">you requested a holiday from ${start date} to ${end date} with comment ${comment}</parameter>
46      </action>
47    <!-- 此處具體為:在流程結(jié)束的時(shí)候記錄請(qǐng)假日志, 此處Log模擬 注意:每個(gè)節(jié)點(diǎn)可以定義多個(gè)action -->
48    <action event="process-instance-end" 
49        handler="NetBpm.Example.LeaveOfAbsence.LogLeaveInfoAction, NetBpm.Example.LeaveOfAbsence"   on-exception="log">
50    <parameter name="LogInfo">記錄請(qǐng)假日志? :) </parameter>
51  </action>
52  
53  <!-- ================ -->
54  <!-- == ATTRIBUTES == -->
55  <!-- ================ -->
56  <!-- 解釋:定義屬性值及其序列化方式。屬性值一般包括3類 -->
57  <!-- one:角色對(duì)應(yīng)的屬性 -->
58  <attribute name="requester" type="actor" />
59  <attribute name="chief" type="actor" />
60  <attribute name="boss" type="actor" />
61    
62  <!-- two:所有acitivity-state(包括start-state)處需要更新的屬性,和用戶表單內(nèi)容對(duì)應(yīng) -->
63  <attribute name="start date" type="date" />
64  <attribute name="end date" type="date" />
65  <attribute name="leave days" type="integer" />
66  <attribute name="comment" type="text" initial-value="請(qǐng)假理由或者備注" />
67  <attribute name="Chief evaluation result" type="evaluation" />
68  <attribute name="Boss evaluation result" type="evaluation" />
69 
70  </concurrent-block>
71    
72</process-definition>

2. 其它配置文件代碼太長(zhǎng)就不一一貼出來(lái);
3. 定義委托類:委托類包含在lib文件夾下的程序集中。

因?yàn)槲蓄悢?shù)目眾多,這里僅貼出幾個(gè)典型的委托類:

1. NetBpm.Example.LeaveOfAbsence.AutoSetAttributionsAction:該委托類設(shè)計(jì)為一個(gè)通用委托類,這里用來(lái)設(shè)置表識(shí)屬性,如流程經(jīng)過(guò)用戶取消請(qǐng)假路徑,則把RunTrace屬性設(shè)置為requestercancel,供WhichWayDicision作判斷用。
2. NetBpm.Example.LeaveOfAbsence.AnyOneJoin: 該委托主要用來(lái)設(shè)置激活父flow機(jī)制,這里是只要任何一條路徑到達(dá)了join,則激活父flow,流程往下流。
3. NetBpm.Example.LeaveOfAbsence.WhichWayDecision:該委托根據(jù)流程實(shí)際流過(guò)路徑,根據(jù)標(biāo)識(shí)屬性RunTrace等進(jìn)行走哪條邊的抉擇。
4. 本文僅僅是一個(gè)示例,給大家提供一個(gè)運(yùn)用nPdl定義NetBPM流程的參考,如果要把該流程投入現(xiàn)實(shí)中使用顯然還需要做很多優(yōu)化。其中的代碼量還是很大的。

NetBPM下設(shè)計(jì)的流程圖如下:

 

CC Flow

ccflow是一款國(guó)產(chǎn)開(kāi)源工作流。支持SQLServer、Oracle、Access、MySQL數(shù)據(jù)庫(kù),支持群集計(jì)算、支持多國(guó)語(yǔ)言。流程設(shè)計(jì)、表單設(shè)計(jì)都是可視化的,所見(jiàn)即所得。 ccflow提供了強(qiáng)大的數(shù)據(jù)分析功能:流程運(yùn)行的各種報(bào)表、圖形、挖掘、賺取,可以對(duì)實(shí)(時(shí))效性、成本分析(人力、時(shí)間、財(cái)物),進(jìn)行全方位的分析、監(jiān)控。 Ccflow更可與手機(jī)+手機(jī)短信+短信貓+電子郵件無(wú)縫連接,讓您的工作第一時(shí)間溝通,第一時(shí)間處理。

使用CC Flow創(chuàng)建工作流過(guò)程:

1.    在web容器中安裝好程序后,打開(kāi)流程設(shè)計(jì)器,建立請(qǐng)假流程,即可生成填寫請(qǐng)假單和結(jié)束節(jié)點(diǎn);
2.    拖動(dòng)Chief審批節(jié)點(diǎn)、 Boss審批節(jié)點(diǎn),添加連線以及標(biāo)簽注明;
3.    設(shè)置表單:郵件選擇傻瓜型表單或者自由類型表單,設(shè)置表單后,設(shè)置每個(gè)節(jié)點(diǎn)的工作崗位;
4.    設(shè)置流程跳轉(zhuǎn)方向條件,如判斷情人是誰(shuí),判斷請(qǐng)假天數(shù)等,選擇的數(shù)據(jù)來(lái)源自表單數(shù)據(jù)。
5.    點(diǎn)擊運(yùn)行即可運(yùn)行流程;可打開(kāi)windows service,即可使用自帶的消息提醒以及郵件發(fā)送功能;

CC Flow設(shè)計(jì)的流程圖如下:

綜上所述,三款的工作流區(qū)別如下表:

本文相關(guān)軟件鏈接:

CCFlow: http://www.oschina.net/p/ccflow  使用中的問(wèn)題可與 @ccflow 聯(lián)系
NetBPM: http://www.oschina.net/p/netbpm
jBPM: http://www.oschina.net/p/jbpm
WWF: http://msdn.microsoft.com/zh-cn/library/aa480214.aspx

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
馳騁工作流引擎-ccflow單據(jù)模式介紹與使用
.net開(kāi)源工作流引擎ccflow表單數(shù)據(jù)返回值Pop分組模式和表格模式對(duì)比
工作流實(shí)現(xiàn)自定義表單
工作流程引擎,表單設(shè)計(jì)器,表單字段的輸入js腳本驗(yàn)證,設(shè)計(jì)思路,實(shí)現(xiàn)原理介紹
馳騁工作流引擎設(shè)計(jì)系列13
如何把您現(xiàn)有的流程系統(tǒng)數(shù)據(jù)遷徙到馳騁BPM上?
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服