免费开源工作流Smartflow-Sharp v2.0
@font-face { font-family: 宋体 }
@font-face { font-family: "Cambria Math" }
@font-face { font-family: Calibri }
@font-face { font-family: "@宋体" }
p.MsoNormal, li.MsoNormal, div.MsoNormal { margin: 0 0 0.0001pt; text-align: justify; text-justify: inter-ideograph; font-size: 10.5pt; font-family: "Calibri", "sans-serif" }
p.MsoHeader, li.MsoHeader, div.MsoHeader { mso-style-link: "页眉 Char"; margin: 0 0 0.0001pt; text-align: center; layout-grid-mode: char; border: none; padding: 0; font-size: 9pt; font-family: "Calibri", "sans-serif" }
p.MsoFooter, li.MsoFooter, div.MsoFooter { mso-style-link: "页脚 Char"; margin: 0 0 0.0001pt; layout-grid-mode: char; font-size: 9pt; font-family: "Calibri", "sans-serif" }
a:link, span.MsoHyperlink { color: rgba(0, 0, 255, 1); text-decoration: underline }
a:visited, span.MsoHyperlinkFollowed { color: rgba(128, 0, 128, 1); text-decoration: underline }
span.Char { mso-style-name: "页眉 Char"; mso-style-link: 页眉 }
span.Char0 { mso-style-name: "页脚 Char"; mso-style-link: 页脚 }
@page Section1 { size: 595.3pt 841.9pt margin-top: 72pt margin-right: 90pt margin-bottom: 72pt margin-left: 90pt layout-grid: 15.6pt }
div.Section1 { page: Section1 }
免费开源工作流Smartflow-Sharp v2.0
Smartflow-Sharp工作流组件从去年6月起开源,截止到今天已经一年有余。在这期间我已经将组件从1.0版本升级到2.0版本,可能有的人还不清楚,我稍作简单介绍,这是一款基于.net平台下研发的工作流组件,该组件由流程设计器和流程引擎两个部件构成,历经一年时间的调整与完善,已经日益成熟稳定,主要适用于各种文件审批流转等场景。
项目开源地址:https://github.com/chengderen/Smartflow-Sharp
相比1.0版本,2.0这个版本对性能以及流程设计器上,有较大的调整与完善。去掉1.0中一些定制化的功能,使其更加注重业务流程,以业务流程为核心。对流程设计器和工作流引擎的核心代码进行梳理和重写,使其更具有可读性和维护性。从现在看1.0的代码有点惨不忍睹,刚开始考虑的是如何更加快速完成功能开发。这点可能跟平时工作习惯有点关系,造成这种情况。
在使用的过程中也有网友向我反眏,流程初始化的很影响性能,其实我以前发现过这个问题,这是微软在将XML序列化为对象的时候,会动态创建程序集和对象所致,动态创建的方式导致性能方面有所下降,XML的文件越大,所耗时间就会越长。为解决这个问题,我决定放弃使用XmlSerializer方式解析流程文件, 其实有网友也提出使用的缓存的方式,避免动态重复创建对象,将创建的对象放进缓存,可以解决此问题。但是由于个人对代码有点洁癖,并不太喜欢加特性方式来解析XML文件,所以我重新设计XML 的解析接口,经过测试,我已经彻底解决业务流程初始化的问题,且代码更加干净整洁。在此,感谢各位的网友参与和反馈。
工作流组件技术含量并高,但是,要想做得非常好还是很有难度。在这个过程中开发流程设计器是最让我头疼的事情,刚开始也考虑过用canvas,但是在使用开发过程中明显没有SVG编码方便,而且各种元素事件绑定方式有点不习惯,所以最终选择SVG画图技术。目前感觉流程设计器细节没有处理到位,后续还有待继续完善。
未来计划推出以业务流程为核心,将表单与业务流程结合起来,形成整体解决方案。在这个过程中,工作流组件将逐渐与BPM标准进行对接,使其更加标准化。后续也会推出.net core版本的工作流组件,为大家多提供一种选择,敬请关注。
免费开源工作流Smartflow-Sharp v2.0的更多相关文章
- GO 前后端分离开源后台管理系统 Gfast v2.0.4 版发布
更新内容:1.适配插件商城,开发环境从后台直接安装插件功能:2.代码生成细节修复及功能完善(支持生成上传文件.图片及富文本编辑器功能):3.增加swagger接口文档生成:4.更新goframe版本至 ...
- MvcPager 免费开源分页控件3.0版发布!
MvcPager 3.0版在原2.0版的基础上进行了较大的升级,对MvcPager脚本插件重写并进行了大量优化.修复了部分bug并新增了客户端Javascript API等功能,使用更方便,功能更强大 ...
- PyCharm 3.0 发布,提供免费开源版本
PyCharm 发布最新的 3.0 版本,该版本新特性详见: http://www.jetbrains.com/pycharm/whatsnew/index.html 该版本最主要的是提供了免费开源的 ...
- 严重推荐一个免费开源数据库建模工具软件 --OpenSystemArchitect 4.0
嘿嘿,对于我这样的新手,这个工具还是很令人兴奋的. 真的是术业有专攻啊.关键还是免费开源 EXCEL,VISO,PPT,PS,CD,FREEHAND不是不可以,只是.人家还是专业点,方便点.. Ope ...
- Scut游戏服务器免费开源框架-3
Scut游戏服务器免费开源框架--快速开发(3) Scut快速开发(3) 1 开发环境 需要安装的软件 a) 消息队列 b) 数据库,Sql2005以上版本 ...
- 如何通过免费开源ERP Odoo建立你的团队, 销售过程和目标
这种快速的一步一步的指南将引导您完成Odoo CRM, 帮助您轻松处理您的销售渠道, 时刻从线索到客户管理您的销售渠道. 配置 从 Odoo初始化后,生成你的数据库, 选择CRM 作为第一个app安装 ...
- Kafka Eagle V2.0.0新版预览
1.概述 Kafka Eagle是一款用于管理Kafka的监控系统,且完全开源.当前Kafka Eagle发布了2.0.0版本.今天笔者就为大家来介绍一下2.0.0更新了哪些功能. 官网地址:http ...
- 免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)
前面介绍了六种.NET组件,其中有一种组件是写文件的压缩和解压,现在介绍另一种文件的解压缩组件SharpZipLib.在这个组件介绍系列中,只为简单的介绍组件的背景和简单的应用,读者在阅读时可以结合官 ...
- 免费开源的DotNet任务调度组件Quartz.NET(.NET组件介绍之五)
很多的软件项目中都会使用到定时任务.定时轮询数据库同步,定时邮件通知等功能..NET Framework具有“内置”定时器功能,通过System.Timers.Timer类.在使用Timer类需要面对 ...
随机推荐
- Vue最全知识点
声明:本篇文章纯属笔记性文章,非整体原创,是对vue知识的整理, 基础篇 说说你对MVVM的理解 Model-View-ViewModel的缩写,Model代表数据模型,View代表UI组件,View ...
- Mysql探索之索引详解,又能和面试官互扯了~
前言 索引是什么?有什么利弊?一旦在面试中被问道,对于新入门的小白可能是个棘手的问题. 本篇文章将会详细讲述什么是索引.索引的优缺点.数据结构等等常见的知识. 什么是索引 索引就是一种的数据结构,存储 ...
- JavaScript面向对象的学习
1.面向过程与面向对象 1.1面向过程 面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候再一个一个的依次调用就可以了. 1.2面向对象 面向对象是把事务分解成为一个 ...
- TCP/IP网络编程之socket交互流程
一.概要 本篇文章主要讲解基于.net中tcp/ip网络通信编程.在自我进步的过程中记录这些内容,方便自己记忆的同时也希望可以帮助到大家.技术的进步源自于分享和不断的自我突破. 技术交流QQ群:580 ...
- Cobalt strike与内网渗透
cobalt strike的用法参照我之前的博客: https://www.cnblogs.com/vege/p/12743274.html 这里只演示上线之后的操作. Socks代理 开启socks ...
- Python编程进阶,Python如何实现多进程?
进程part1 一.进程介绍 1.获取子父进程 2.进程的基本使用 2.创建带有参数的进程 3.进程之间的数据彼此隔离 4.多个进程之间的异步并发 二.join 1.基本语法 2.使用自定义类的方法创 ...
- 专项测试实战 | 如何测试 App 流畅度(基于 FPS 和丢帧率)
本文为霍格沃兹测试学院学员学习笔记. FPS 和丢帧率可以在一定程度上作为 APP 流畅度的一项衡量标准,本文介绍利用 adb shell dumpsys gfxinfo 命令获取软件渲染加载过程的数 ...
- agumaster 分页方案
本文例程下载:https://files.cnblogs.com/files/xiandedanteng/agumaster20200430-1.zip 之前的分页方案有点小瑕疵,这回修正了一下. 控 ...
- 转载:记录一次MySQL两千万数据的大表优化解决过程
地址:https://database.51cto.com/art/201902/592522.htm 虽然是广告文,但整体可读性尚可.
- 关于Java代理那些事儿
代理是啥?就是代替你执行你持有的主要功能,并且能在你的基础之上完成一些其他的功能.代理的目的就是生成一个和原对象具有同样功能的对象.在Java中,代理是一种设计模式.在Spring的面向切面编程(AO ...