免费开源工作流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类需要面对 ...
随机推荐
- 快速幂 (C++)
typedef long long LL; using namespace std; //求a^b%m,递归写法 LL binaryPow(LL a,LL b,LL m){ if(b==){ //如果 ...
- linux下使用split命令分割文件且文件号从1开始
Linux里切割大文件的命令如下: split [OPTION] [INPUT [PREFIX]] 选项如下: -a : 指定后缀长度 -b : 每个文件多少字节 -d : 使用数字后缀而不是字母 - ...
- 攻防世界——web新手练习区解题记录<1>(1-4题)
web新手练习区一至四题 第一题view_source: 题目说右键不管用了,我们先获取在线场景来看一看,我们看到这样一个网页,并且右键确实点了没什么反应,而用到右键一般就是查看网页源码 用快捷键(F ...
- 初学WebGL引擎-BabylonJS:第6篇-碰撞交错与挑选
[playground]-collisions(碰撞) 先贴官方源码(机器翻译版本) var createScene = function () { var scene = new BABYLON.S ...
- python中os.path下模块总结
import os path =os.path.abspath("abc.text") # 返回绝对路径 print("path:",path) # path: ...
- org.xml.sax.SAXParseException: The processing instruction target matching "[xX][mM][lL]" is not allowed(转)
xml文件不能被正确解析/The processing instruction target matching "[xX][mM][lL]" is not allowed. The ...
- 喵的Unity游戏开发之路 - 互动环境(有影响的运动)
如图片.视频或代码格式等显示异常,请查看原文: https://mp.weixin.qq.com/s/Sv0FOxZCAHHUQPjT8rUeNw 很多童鞋没有系统的Unity3D游戏开发基础,也不知 ...
- 同样是logback1.11,更换了log配置后,无论是否有线程持续不断写入log文件,log文件会按设定以日期序号轮换
上次发现了logback1.11的一个bug,即有线程持续写入log,则log文件不会按设定模式进行轮换. 但发现同样采用logback1.11的另外一个工程,它的日志文件就没有错误,于是参照其配置文 ...
- 基于jQuery的鼠标悬停时放大图片的效果制作
这是一个基于jQuery的效果,当鼠标在小图片上悬停时,会弹出一个大图,该大图会跟随鼠标的移动而移动.这个效果最初源于小敏同志的一个想法,刚开始做的时候只能实现弹出的图片是固定的,不能随鼠标移动,最后 ...
- MVC中将枚举类型数据应用到下拉列表中的方法
例如: public enum ItemTypes { Movie = 1, Game = 2, Book = 3 } 在MVC2.0中如何将以上枚举类型使 ...