集成流程引擎的必要性 业务过程的变化是在BPM系统中常见的现象,企业管理层需要不断优化组织架构,改造业务流程,不可避免地带来了业务流程的变化,企业信息系统就会随之面临重构的可能性.一种直接的方式是改造业务代码,适应业务过程的变化,这将会面临不断改写代码的需求:还有一种方式是使用流程引擎控制业务过程的变化,将改写业务代码的操作交由流程引擎,通过流程引擎解析业务规则,驱动业务过程流转,从而将改写业务代码的可能性降到最低. 显而易见,流程引擎带来的好处是为了更好解决业务过程变化后带来的重构风险,信息系…
集成流程引擎的必要性 业务过程的变化是在BPM系统中常见的现象,企业管理层需要不断优化组织架构,改造业务流程,不可避免地带来了业务流程的变化,企业信息系统就会随之面临重构的可能性.一种直接的方式是改造业务代码,适应业务过程的变化,这将会面临不断改写代码的需求:还有一种方式是使用流程引擎控制业务过程的变化,将改写业务代码的操作交由流程引擎,通过流程引擎解析业务规则,驱动业务过程流转,从而将改写业务代码的可能性降到最低. 显而易见,流程引擎带来的好处是为了更好解决业务过程变化后带来的重构风险,信息系…
1. 工作流术语图示                                              图1 流程图形的BPMN图形元素表示 1) 流程模型定义说明流程(Process):是企业组织对业务过程的工作流语言描述.一个完整的流程包括开始节点,中间节点和结束节点. 活动(Activity):对每一个工作项节点上的内容定义,也包括网关,事件等节点. 转移(Transition):表示起始节点和到达节点之间的状态转移. 执行者(Performer):每一个节点定义的角色和用户,作为…
前言:在任务数据生成时,为了让办理任务的用户及时获取到待办任务的主题和内容,需要发送通知类的消息,而电子邮件和手机端的短信通知则是比较普通的消息发送.本文是针对电子邮件异步发送模块的实现来做实例说明. 1. 邮件发送通知的位置 通常任务数据生成时,就需要发送一封邮件通知,邮件内容包括正文和页面地址信息:任务办理人员在接收到邮件后,会及时登录系统进行任务处理,发送邮件通知的好处就在于方便和及时. 但是邮件发送并不是所有的业务客户都需要的一个功能,它不便于紧耦合地在引擎流转环节,即跟任务数据的生成绑…
前言:  流程引擎的核心功能是负责解析流程定义XML和流转,业务环节的不断积累,让人们不断总结和抽象出一些模式,这些模式统称为工作流模式(Workflow Pattern).本文的重点就是介绍一种常见的由两种模式组合而成的新模式. 1. 工作流模式基本介绍 关于工作流模式,已经广泛被流程分析和设计人员认可,它非常有助于工作流系统的各类用户对业务过程的理解,也能帮助架构师对引擎功能的开发和扩展.更多工作流模式因为网上已经有比较多的资料,这里就不再详细说明了,比如以下的网络资源供大家学习和了解. h…
第一次自己写博客文章,大家多多指教.写博客主要记录一下学习的过程,给初学者提供下参考,也留给自己做备忘. Slickflow .NET开源工作流-项目转换 上一篇文章里说了1.2版本的下载,下载解压后,发现使用的是VS2013创建的项目.可怜我的电脑至今最高版本是VS2010.于是就有了这篇文章.最后附VS2010版本下载地址. 项目的转换其实很简单,用记事本打开对应的解决方案文件.sln以及项目文件.csproj.对里面的参数进行下修改即可,如下: Slickflow.sln Microsof…
前言:流程是由若干个任务节点组成,流转过程就是从一个节点转移到下一个节点,通常需要不断切换用户身份来完成流程的测试,这样使得测试效率比较低下,本文从实战出发,介绍常见的两种快速测试方法,用于提升流程测试和实施的效率. 1. 流程快速测试介绍 流程引擎的核心功能是保证流程正常流转,流程是由若干个节点组成,真实的业务系统是每个用户完成各自的任务后,分发给下一步任务节点,再由下一步的任务接收人员办理任务,以此循环前进,直至流程流转结束. 如果按照这样的测试策略,每一步都需要变换用户身份来完成功能测试,…
前言:流程实现基本流转功能外,通常也需要调用外部事件,用于和业务系统的交互,同时存储一些流程变量,用于追踪和记录业务数据变化对流程流转的影响. 1. 流程事件 流程执行过程中,伴随各种事件的发生,而且是存在于整个流程的生命周期,即从流程启动一直到流程结束的整个过程都有事件发生.这些事件的发生,业务系统通常也需要知道一些流程过程的关键节点,或里程碑状态.我们统称为流程事件. 1.1  流程事件触发类型 流程事件类型的定义是按照事件发生的位置来确定划分,跟流程直接有关的比如有:启动.运行.撤销.退回…
前言:并行审批是比较常见的流程模式,在工作流模式介绍中,通常是多个分支通过网关(Gateway)来控制实现.默认的分支类型是静态定义好的.本文扩展了并行网关的控制方式,实现了动态多实例的并行分支网关,便于用户业务流程的审批过程实现.  1. 业务过程描述 并行评审需求是在多个部门同时发生,此时会有多个并行分支的实例[员工填表->组长审批].各个分支序列独立执行,直到所有并行分支序列全部执行完毕后才达到汇合条件.然后流程经过汇合网关继续向下执行流程. 并行评审的实例数据: A部门:员工填表-->…
前言:在集成Slickflow.NET 引擎组件过程中,引擎组件需要将用户,角色等资源数据读取进来,供引擎内部调用:而企业客户都是有自己的组织架构模型,在引入模块化架构设计后,引擎组件的集成性更加友好便捷. 1. 未采用模块化设计之前的项目结构 在引擎内部,创建了Resource的目录,用于组织机构模型数据的处理,而且仅作了用户和角色相关的数据读取,未涉及到组织机构模型:比如部门和员工等信息.这样当用户集成自己的组织架构模型时候,就要扩展此部分代码,对引擎内部的统一性造成一定影响,不便于用户的后…
前言:.NET Core 是.NET Framework的新一代版本,是微软开发的第一个跨平台 (Windows.Mac OSX.Linux) 的应用程序开发框架(Application Framework),未来也将会支持 FreeBSD 与 Alpine 平台..Net Core也是微软在一开始发展时就开源的软件平台,其开发目标是跨平台的 .NET 平台. .NET Core 平台的开发优势 : 支持或可以移转 (port) 到更多的操作系统平台与芯片架构 (也就是未来项目会跨出 x86 平…
前言:审批流程中常见的都是人工类型任务,但是也会有一些自动化的任务需要定时触发.因此,引擎框架中需要解决掉两个问题:选择合适的任务调度框架,集成新的任务调度模块. 1. 任务调度框架选择 Hangfire 是一个开源的.NET任务调度框架,目前1.6+版本已支持.NET Core. 基于队列的任务处理(Fire-and-forget jobs)延迟任务执行(Delayed jobs)定时任务执行(Recurring jobs)延续性任务执行(Continuations) Hangfire用的是开…
前言:.NET Core 是.NET Framework的新一代版本,是微软开发的第一个跨平台 (Windows.Mac OSX.Linux) 的应用程序开发框架(Application Framework),未来也将会支持 FreeBSD 与 Alpine 平台..Net Core也是微软在一开始发展时就开源的软件平台,其开发目标是跨平台的 .NET 平台. .NET Core 平台的开发优势 : 支持或可以移转 (port) 到更多的操作系统平台与芯片架构 (也就是未来项目会跨出 x86 平…
前言:引擎作为中间件集成到用户的项目里面去,针对用户的数据库类型,需要作出SQL部分的分别实现.引擎默认数据库为MS SQLSERVER,同时也支持ORACLE, MYSQL, KINGBASE等不同类型的数据库. 1. Dapper对于多数据库实现的支持--SqlDialect 下图给出了Dapper项目中ISqlDialect接口的具体实现类. 2. Slickflow.NET 针对不同数据库的特性实现 在各个数据库特性SQL的写法上,比如SQLSERVER中的TOP语句,对应到其它数据库就…
前言:会签和加签是常见审批流程模式,在引擎中,对这两种流程模式做了分别定义和实现,其中也用到了Workflow Pattern的Multiple Instance(多实例) . 1. 会签和加签的定义 会签即当前运行节点有多人进行办理,或者可以说当前节点存在多个办理任务.这些任务可以分为两种情况来运行:一种是按顺序进行办理,即串行会签:一种是同时进行办理,即并行会签. 串行会签和并行会签都可以进行通过率的设置,串行会签和并行会签中通过率是按照通过人数或者百分比进行设置,达到通过人数(或者百分比)…
1. Slickflow Designer 技术优势 1) 基于HTML5技术,兼容常见浏览器; 2) 纯Javascript / JsPlumb 脚本实现SVG图形化显示; JsPlumb允许您使用SVG.Canvas 或者 VML链接屏幕上的元素,这些取决于您使用的浏览器的能力; 3) 图形元素参考BPMN定义,XML存储,更加适合商务人员理解业务过程定义; 4) 富客户端开发技术,使用JQuery/SlickGrid等组件,用户体验良好; 4) 前端架构开放,可允许程序开发人员扩展新的节点…
前言:对于急切想了解引擎功能的开发人员,在下载版本后,就想尝试编写代码,完成一个流程的开发和测试.本文试图从一个最简单的并行分支流程来示例说明,如何快速了解引擎代码的编写. 版本:.NET Core2.1 1. 创建分支流程图形 分支流程是常见的决策类的流程,本文中以一个汽车订单流程为例演示并行分支流程的流程过程.并行分支通常适用于多部门可以同时执行工作任务的场景,每个单独的分支也可以看做为一个串行序列片段.多个分支最终通过汇聚节点再合并在一起. var pmb = ProcessModelBu…
前言:引擎组件的接口测试不光是程序测试人员使用,而且也是产品负责人员需要用到的功能,因为在每一步流转过程中,就会完整模拟实际用户发生的场景,也就容易排查具体是程序问题还是业务问题,从而快速定位问题,及时解决问题.WebTest测试工具集就是一个统一的交流测试平台,其带来的好处是压缩了不同类型的引擎用户交流问题的成本,同时也节约了程序开发和测试人员的工作成本. 1. 测试介绍 用户交互测试也是一种必不可少的测试过程,而且在交互过程中,可以跟踪和调试程序,真实系统的流转是需要用户身份的不断切换,但是…
前言:引擎组件的基本职责是负责流程流转,但是在流转过程中,除了对内部控制逻辑进行实现外,也不可避免的要去调用或者响应外部事件.本文主要描述外部事件的类型,以及调用方法过程. 1. 外部事件的类型 外部事件的类型是随着引擎功能的需要而不断增加,开发人员也可以在此基础上进行扩展,目前主要常用的事件类型如下: public enum ActionMethodType { LocalMethod, //本地程序 WebAPI, //调用WebAPI程序 SQL, //执行SQL脚本 StoreProce…
前言:对于急切想了解引擎功能的开发人员,在下载版本后,就想尝试编写代码,完成一个流程的开发和测试.本文试图从请假流程,或分支模式来快速了解引擎代码的编写. 1. 创建或分支流程图形 或分支流程是常见的决策类的流程,用于处理不同决策场景出现的业务处理,其中每个分支又可以看成是一个串行流程的片段.下面是请假流程的创建代码: var pmb = ProcessModelBuilder.CreateProcess("LeaveRequest", "LeaveRequestCode&q…
前言:对于急切想了解引擎功能的开发人员,在下载版本后,就想尝试编写代码,完成一个流程的开发和测试.本文试图从一个最简单的流程来示例说明,如何快速了解引擎代码的编写. 版本: .NETCore 2.1 1. 创建流程图形 串行流程(Sequence)用于顺序流程的创建,节点按照前后顺序生成. var pmb = ProcessModelBuilder.CreateProcess("BookSellerProcess", "BookSellerProcessCode")…
前言:通过设计器交互来创建流程图是比较常见的方式,这种方式是比较方便业务人员对流程的操作.然而,在需要流程模板,或者技术开发阶段以及一些自动化流程的处理过程中,使用代码快速创建流程图也是一种非常有必要的快捷途径.本文重点说明这种方法的实现过程和具体使用价值. 1. 交互式构建流程图 图形交互式一般是指通过界面进行节点元素拖动来绘制图形,并且,每个图像节点元素和连线元素的属性配置,都是逐一需要交互操作并且保存来完成的.其特点是清晰直观,在绘制图形的过程中,可以明确流程图形的整个流转过程. 对于流程…
前言: 业务人员绘制流程时,通常使用图形GUI界面交互操作来完成,然而对于需要频繁操作或者管理较多流程的系统管理用户,就需要一款辅助工具,来帮助他们快速完成流程的创建和编辑更新.Slickflow.Graph 图形编码建模工具通过命令行直接编写代码创建图形,实现了流程图形绘制效率的快速提升. 申明: 本篇文章为Slickflow原创文章,任何人不得私自转载,博客园为作者授权的中文文章唯一来源. 1. 图形创建代码文本 首先通过一个代码片段来进行说明,这个代码片段创建了一个简单的序列流程.代码如下…
一.python种类 1.1 Cpython python官方版本,使用c语言实现,运行机制:先编译,py(源码文件)->pyc(字节码文件),最终执行时先将字节码转换成机器码,然后交给cpu执行: 如果再次运行时,会优先寻找字节码文件,若源码文件被修改,则会再次编译成字节码 1.2 Jython Python语言的Java实现,不仅提供Python的库,同时也提供所有的Java类.能运行在任何可兼容的Java1.1或更高的Java虚拟机平台上. 运行机制:py(源文件)->动态编译成字节码(…
smarty模板引擎所需文件夹共可分为存放页面缓存的(cache).存放配置文件的(configs).存放模板扩充插件的(plugins).存放模板文件的(templates).存放编译后的模板文件的(templates_c).存放后端程序代码的(main); 一.configs文件夹:即保存一些与页面配置有关的相关代码,可以用[]来进行模块分类 ,以conf格式保存,可用记事本打开查询,在页面中的调用指令为 <{config_load file='文件名' section="模块名&qu…
JAX-RS是一个用于构建REST资源的Java API,可以使用JAX-RS注解装饰每一个扩展类,从而让服务器处理对应的http请求,附加注解可以用来控制请求和响应的格式,http头和URI模板的格式.     下面看一个服务器扩展实现的示例,允许客户端请求社交网络的两个成员之间的距离 @Path("/distance")/*注解规定请求URL以/distance开始*/ Public class SocialNetworkExtension{ private final Execu…
第一次自己写博客文章,大家多多指教.写博客主要记录一下学习的过程,给初学者提供下参考,也留给自己做备忘. Slickflow .NET开源工作流-介绍 这里摘录Slickflow官网的介绍: Slickflow工作流引擎,选取BPMN模型作为工作流模型的语义表达,BPMN模型消除技术和业务之间的隔阂,注重业务人员对流程的需求和理解,而不是以技术为本位,相对来说,更近一步体现技术服务于业务需求的概念.其次,由于工作流模型跟业务需求的紧密结合,还有新技术的出现,认为有必要构建新的工作流系统:鉴于以上…
第一次自己写博客文章,大家多多指教.写博客主要记录一下学习的过程,给初学者提供下参考,也留给自己做备忘. Slickflow .NET开源工作流-环境搭建 在VS2010中使用附加进程的方式调试IIS中的页面,请参考如下页面: http://www.cnblogs.com/minesky/p/3389955.html 这篇文章中也写明了如何搭建IIS.发布网站,不明白的话,可以参考下. 上篇文章中已经介绍了如何在VS2010中打开该开源代码,下面继续说一下数据库生成.网站发布.部署.如果你有VS…
前言:工作流流程过程中,除了正常的人工审批类型的节点外,事件类型的节点处理也尤为重要.比如比较常见的事件类型的节点有:Timer/Message/Signal等.本文重点阐述消息类型的节点处理,以及实现消息驱动流程过程中对消息队列(RabbitMQ)的集成使用方式. 1. 节点间消息传递 1.1 MessageThrow 消息抛出节点,当执行到这个节点时,特定消息主题的消息记录将会添加到消息队列,然后等待被订阅的消息消费者来激活消息处理服务. 1.2 MessageCatch 消息接收节点,消息…
前言: 在Slickflow产品开发过程中,前端流程设计器经历了几个不同的版本(jsPlumb, mxGraph等),目的是为了在设计流程时的用户体验更加良好,得到客户的好评和认可.BpmnJS流程设计器的集成,更加让客户体验到了优秀的前端流程设计器带来的改变.通过这篇文章的介绍,让我们来认识一下Slickflow产品对BpmnJS设计器的集成和使用. BPMN(Business Process Modeling Notation)是一种流程建模的通用和标准语言,用来绘制业务流程图,其好处是便于…