@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的更多相关文章

  1. GO 前后端分离开源后台管理系统 Gfast v2.0.4 版发布

    更新内容:1.适配插件商城,开发环境从后台直接安装插件功能:2.代码生成细节修复及功能完善(支持生成上传文件.图片及富文本编辑器功能):3.增加swagger接口文档生成:4.更新goframe版本至 ...

  2. MvcPager 免费开源分页控件3.0版发布!

    MvcPager 3.0版在原2.0版的基础上进行了较大的升级,对MvcPager脚本插件重写并进行了大量优化.修复了部分bug并新增了客户端Javascript API等功能,使用更方便,功能更强大 ...

  3. PyCharm 3.0 发布,提供免费开源版本

    PyCharm 发布最新的 3.0 版本,该版本新特性详见: http://www.jetbrains.com/pycharm/whatsnew/index.html 该版本最主要的是提供了免费开源的 ...

  4. 严重推荐一个免费开源数据库建模工具软件 --OpenSystemArchitect 4.0

    嘿嘿,对于我这样的新手,这个工具还是很令人兴奋的. 真的是术业有专攻啊.关键还是免费开源 EXCEL,VISO,PPT,PS,CD,FREEHAND不是不可以,只是.人家还是专业点,方便点.. Ope ...

  5. Scut游戏服务器免费开源框架-3

    Scut游戏服务器免费开源框架--快速开发(3) Scut快速开发(3) 1        开发环境 需要安装的软件 a)        消息队列 b)        数据库,Sql2005以上版本 ...

  6. 如何通过免费开源ERP Odoo建立你的团队, 销售过程和目标

    这种快速的一步一步的指南将引导您完成Odoo CRM, 帮助您轻松处理您的销售渠道, 时刻从线索到客户管理您的销售渠道. 配置 从 Odoo初始化后,生成你的数据库, 选择CRM 作为第一个app安装 ...

  7. Kafka Eagle V2.0.0新版预览

    1.概述 Kafka Eagle是一款用于管理Kafka的监控系统,且完全开源.当前Kafka Eagle发布了2.0.0版本.今天笔者就为大家来介绍一下2.0.0更新了哪些功能. 官网地址:http ...

  8. 免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)

    前面介绍了六种.NET组件,其中有一种组件是写文件的压缩和解压,现在介绍另一种文件的解压缩组件SharpZipLib.在这个组件介绍系列中,只为简单的介绍组件的背景和简单的应用,读者在阅读时可以结合官 ...

  9. 免费开源的DotNet任务调度组件Quartz.NET(.NET组件介绍之五)

    很多的软件项目中都会使用到定时任务.定时轮询数据库同步,定时邮件通知等功能..NET Framework具有“内置”定时器功能,通过System.Timers.Timer类.在使用Timer类需要面对 ...

随机推荐

  1. 程序员小哥教你秋招拿大厂offer

    快要到秋招了,对于应届生来说,秋招是一个特别重要的机会.对于社招同学来说,金九银十也是一个很好的跳槽窗口. 而我呢,因为是从上海到广州工作,就没有提前先把工作定下来.刚好也趁这个机会出去旅游了两个月. ...

  2. include标签—引用文件路径

    今天给大家讲解的是include标签,在打代码的时候总会出现一些重复的样式,这个时候就可以用include标签来减少打代码的次数. 文件名index.html,代码: {% from 'macros/ ...

  3. Android Weekly Notes Issue #428

    Android Weekly Issue #428 Kotlin Flow Retry Operator with Exponential Backoff Delay 这是讲协程Flow系列文章中的一 ...

  4. 解决Oracle12cr2自创建用户无法登录的问题

    说明: 下面创建是创建CDB本地用户,不是PDB应用程序用户,如果是PDB应用程序创建语法会不一样.下面介绍创建CDB本地用户. 创建表空空间 CREATE TABLESPACE YH datafil ...

  5. android 数据绑定(5) kotlin 的binding bug

    1.BR找不到,无法自动更新 1.1 描述 https://stackoverflow.com/questions/57983508/android-studio-kotlin-databinding ...

  6. AcWing 285. 没有上司的舞会(树形dp入门)

    Ural大学有N名职员,编号为1~N. 他们的关系就像一棵以校长为根的树,父节点就是子节点的直接上司. 每个职员有一个快乐指数,用整数 HiHi 给出,其中 1≤i≤N1≤i≤N. 现在要召开一场周年 ...

  7. 牛顿迭代法解非线性方程组(MATLAB版)

    牛顿迭代法,又名切线法,这里不详细介绍,简单说明每一次牛顿迭代的运算:首先将各个方程式在一个根的估计值处线性化(泰勒展开式忽略高阶余项),然后求解线性化后的方程组,最后再更新根的估计值.下面以求解最简 ...

  8. Activiti7 查询用户任务列表

    package com.itheima.activiti; import org.activiti.engine.ProcessEngine; import org.activiti.engine.P ...

  9. netty如何进行单元测试

    一种特殊的Channel 实现——EmbeddedChannel,它是Netty 专门为改进针对ChannelHandler 的单元测试而提供的. 将入站数据或者出站数据写入到EmbeddedChan ...

  10. element封装表格

    <template> <div> <el-scrollbar class="table-wrap"> <el-table v-loadin ...