.Net開源工作流Roadflow的使用與整合

張龍豪發表於2015-11-25

序言

最近公司要整理公司內部oa系統,需要使用到工作流,所以就開始了開源工作流挑選,使用,到整合到公司內部系統的工作。 

首先在網上搜了文件,自己也有補充,整理啦國內幾款工作流的比較,由於沒有個個擊破式的研究所以不足之處還望海涵。

送上比較內容圖:

鑑於這個表的內容,與公司技術與需求的結合,我們選擇啦RoadFlow工作流引擎。

下面踏上RoadFlow的征程。

RoadFlow的下載、部署、及使用

官方網址:http://cqroad.cn/

官方文件:http://cqroad.cn/Doc/Default.aspx

官方原始碼下載連結:http://cqroad.cn/Download

專案下載完成後,

1、自帶有資料庫指令碼,執行到本地資料庫,就行啦。

2、開啟專案,由於我們公司絕大多說專案都是用mvc,所以我選用webmvc專案,移除webform專案,也可以保留去看看哈。

3、配置webconfig中的資料庫連結字串,注意這裡一般會有一個版本問題或者模式問題,爆紅頁面順手就能解決沒多大難度。

4、然後就是開啟/login/index頁面,按照提示登入進去。

5、根據文件,自己一點點摸索前進啦。

我摸索的差不多啦,感覺公司一般的流程需求這裡是可以滿足的,並且考慮啦一下整合的成本與技術實現,也感覺沒有什麼問題,畢竟程式碼都在手裡嗎,哈哈。然後搞起。

Roadflow開源工作流整合到公司內部OA系統

首先弄懂一個陌生的專案,我是從資料庫進行操刀的,因為我看啦一下他的專案結構,沒有非常特別的東西,就是一般的mvc專案。

資料結構如下:

1、基礎平臺:日誌表,資料庫配置表,資料字典表。

這些表在roadflow中幾乎都是單表操作,比較獨立,不用做過多的分析就一目瞭然。

 

2、組織結構,工作組,人員資訊

3、角色,許可權,人員資訊

4、表單,流程,按鈕,步驟等工作流相關核心表

 

 

需要注意的就是自己建自己的表單欄位儲存表,然後在繫結表單的時候可以選擇資料自己的資料表進行繫結對映。

分析完表結構之後,就是自己的登入許可權整合與Js解壓分析,整合到適合自己的內部系統中。經過千辛萬苦之後,就是輕鬆的頁面整合。

哦,中間繫結自定義事件的時候,遇到啦反射程式集路徑問題,這裡給大家做個簡單的分享。修改下路徑就可以啦。

/// <summary>
        /// 執行自定義方法
        /// </summary>
        /// <param name="eventName"></param>
        /// <returns></returns>
        public object ExecuteFlowCustomEvent(string eventName, object eventParams, string dllName = "")
        {
            if (dllName.IsNullOrEmpty())
            {
                dllName = eventName.Substring(0, eventName.LastIndexOf('.'));
                dllName = dllName.Substring(0,dllName.LastIndexOf('.'));
            }
            System.Reflection.Assembly assembly = System.Reflection.Assembly.Load(dllName);
            string typeName = System.IO.Path.GetFileNameWithoutExtension(eventName);
            string methodName = eventName.Substring(typeName.Length + 1);
            Type type = assembly.GetType(typeName, true);

            object obj = System.Activator.CreateInstance(type, false);
            var method = type.GetMethod(methodName);

            if (method != null)
            {
                return method.Invoke(obj, new object[] { eventParams });
            }
            else
            {
                throw new MissingMethodException(typeName, methodName);
            }
        }

小結

由於工作流不是一個工作量小的專案,別且過於繁雜,所以如果沒有特殊的需求,建議使用開源框架。

還有,如果你也用到啦工作流,那麼我們們可以一起交流學習,左上方是我的群,歡迎加入。

下面給大家展示下我的成果。

流程設計整合

表單設計整合

待辦事項整合

 

好啦,好事說三遍,我再次說明下,如果你對本篇內容有什麼批評指教或者想一起交流學習,歡迎加入左上角我的技術交流群。

今晚陪媳婦逛超市啦,時間有點緊,就整理啦一篇圖比較多的博文,耽誤啦我的redis,明天堅持繼續我的redis系列

相關文章