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系列

  • 相关阅读:
    [SSRS] Use Enum values in filter expressions Dynamics 365 Finance and Operation
    Power shell deploy all SSRS report d365 FO
    display method in Dynamics 365 FO
    How To Debug Dynamics 365 Finance and Operation
    Computed columns and virtual fields in data entities Dynamics 365
    Azure DevOps for Power Platform Build Pipeline
    Create readonly entities that expose financial dimensions Dynamics 365
    Dataentity call stack dynamics 365
    Dynamics 365 FO extension
    Use singletenant servertoserver authentication PowerApps
  • 原文地址:https://www.cnblogs.com/Alex80/p/5264393.html
Copyright © 2011-2022 走看看