zoukankan      html  css  js  c++  java
  • .Net开源工作流Roadflow的使用与集成

    序言

    最近公司要整理公司内部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系列

  • 相关阅读:
    DP动态规划【专辑@AbandonZHANG】
    Abandon の DP动态规划【专辑】(长期更新)
    可持久化线段树【专题@AbandonZHANG】
    DP动态规划【专辑@AbandonZHANG】
    最近公共祖先LCA 【专题@AbandonZHANG】
    最近公共祖先LCA 【专题@AbandonZHANG】
    可持久化线段树【专题@AbandonZHANG】
    SDK , MFC 和 API
    2007年12月英语四级预测作文大全3
    Ajax介绍
  • 原文地址:https://www.cnblogs.com/knowledgesea/p/4993277.html
Copyright © 2011-2022 走看看