在当代信息化软件系统开发中,工作流引擎是其中非常重要的一环。所谓工作流引擎,是指工作流作为软件系统的一部分,

其中包括了流程的节点管理、流向管理、流程样例管理、审核管理等重要功能。

工作流引擎可根据角色、分工和条件的不同来决定信息传递的路由与内容的分级。其对各应用系统是有着决定作用的。

美观友好的交互界面,稳定的数据库信息交换,满足实际业务需求的高效程序逻辑,这些都是判断一个软件系统是否优

秀的重要标准。一个满足以上条件的系统,将会在一定程度上保证其稳定性和易用性。

做到程序稳定,是为了保证该系统的可靠性,满足界面易用,则是在保证模块化、结构化、操作的便捷性。这样可以在业

务流程发生变化,例如决策权的改变、组织结构的变动时,随之变换的全新业务逻辑,而工作流引擎解决的就是这个问题。

如果应用程序缺乏稳定高效的逻辑层,就会很容易出现包括信息路由错误、异常循环在内的各种错误。

这里举个简单的例子。一台电脑,外观前卫炫酷,但如果硬件系统有问题,那势必会出现各种BUG,如不加以改进,极有可

能被人嫌弃,最终变成一堆废品。而应用系统的拓展性就好比电脑的运行速度,别人开机只需五秒,而你的则需要五分钟

(业务流程变动需要更长时间的程序修改),孰优孰劣,一目了然。而如果电脑动不动就蓝屏重启(程序逻辑异常循环),

那这样的电脑谁还会用呢?

服务架构

面向服务的体系结构,是一个组件模型,它将应用程序的不同功能单元通过这些服务之间定义好的接口和契约联系起来。接

口是采用中立的方式进行定义的,它独立于硬件平台、操作系统和编程语言。工作流引擎使构建在各种系统中的服务,以统

一和通用的方式进行交互。

想要一套有灵活工作流机制的OA系统的企业不在少数,于是有很多人使用用Domino来摸索着做。等待后来ASP.NET出现,好像

大家都醒悟了,各领域企业都要求使用工作流引擎实现企业信息审批流程化。

基于企业的实际需求,近几年出现了一批标准的企业级工作流引擎,并获得了双软认证。这里讲一下口碑比较好的力软,总体

采用拖拽式设计,配合代码生成器,通用业务流程代码量接近于零,各项指标及客户反映都不错,其基本思路如下:

首先,定义流程步,主要包括:操作的接口地址、操作参数、操作类型(起始操作、中间操作等)。其目的是将来对每个操作进

行关系设置和流程定义时,可以选用这些定义好的操作步。

第二,定义操作的参数,除接口地址外,还需定义其参数。

第三,定义操作步之间的关系。就是定义各流程中每步的前驱、后继的操作。

第四,定义流程。其中必要的内容,是基本信息、流程操作以及流转规则。流程基本信息这里不表。流程步定义比较复杂,包括

步骤类型(起始、中间、终结),入口步骤、出口步骤、通知模式、人员、角色、发送通知的内容。

第五,跳步定义,如需根据参数的不同,提交审批到不同的步骤,这里叫做流程步骤变迁规则设置。设置的内容需要:原步骤、目

标步骤、变迁方向(正/负)、条件规则(判断参数时用与还是用或)。然后设置参数、参数值以及比较条件。

第六,授权管理。这个比较简单了,判断被提交的人是否处于授权状态,从而进行授权处理。

以上所说只是基础逻辑,实际编写过程中还要考虑各企业的实际情况,力软框架内置的工作流引擎,集合了各行业客户意见与建

议,适用性强,稳定性高,使用便捷,欢迎体验指正。

浅析LR.Net工作流引擎的更多相关文章

  1. 用Crontab打造简易工作流引擎

    1. 引言 众所周知,Oozie(1, 2)是基于时间条件与数据生成来做工作流调度的,但是Oozie的数据触发条件只支持HDFS路径,故而面临着这样的问题: 无法判断Hive partition是否已 ...

  2. 工作流引擎Oozie(一):workflow

    1. Oozie简介 Yahoo开发工作流引擎Oozie(驭象者),用于管理Hadoop任务(支持MapReduce.Spark.Pig.Hive),把这些任务以DAG(有向无环图)方式串接起来.Oo ...

  3. 【2016-11-7】【坚持学习】【Day22】【工作流引擎设计--执行用户】

    最近在做一个工作流引擎,架构师已经设计好了,但是我发现他设计 每一步的用户集合的设计,有一定的不足,或者是不方便,不同的组织架构影响着他的用户数据源配置方式. 于是我想花点时间去看看人家优秀是工作流引 ...

  4. .net之工作流工程展示及代码分享(二)工作流引擎

    在介绍完表单类的时候,接下来介绍工作流引擎,主要由四个类组成,分别是流程.流程步骤.流程实例.流程步骤实例类. 流程类: [Serializable] public class Flow { [Xml ...

  5. F2工作流引擎之-纯JS Web在线可拖拽的流程设计器(八)

          Web纯JS流程设计器无需编程,完全是通过鼠标拖.拉.拽的方式来完成,支持串行.并行.分支.异或分支.M取N路分支.会签.聚合.多重聚合.退回.传阅.转交,都可以非常方便快捷地实现,管理员 ...

  6. F2.Net工作流引擎系列索引

    索引如下 F2工作流引擎遵循参考WFCM标准规范,符合中国国情特色,更轻量级的工作流引擎,支持多种数据库(mmsqlserver,mysql,oracle),有强大智能的组织模型接口可快速应用到任何基 ...

  7. F2工作流引擎这工作流引擎体系架构(二)

    F2工作流体系架构概览图 为了能更好的了解F2工作流引擎的架构体系,花了些时间画了整个架构的体系图.F2工作流引擎遵循参考WFCM规范,目标是实现轻量级的工作流引擎,支持多种数据库及快速应用到任何基于 ...

  8. F2工作流引擎Web层全新扁平化UI上线

    特点:引入Bootstrap开源UI样式和fontawesome图标集 扁平化样式使用界面更舒服,按钮主题可快速定义更换,对于集成到业主系统UI图标更加丰富. 以下截取部分图片展示,更多请联系作者登录 ...

  9. F2工作流引擎之组织用户模型(四)

    1 概述 工作流组织模型是工作流引擎中核心重要的一部份,是实现人机交互中不可或缺的组成部分,而由于工作流引擎需要适应不同的系统之间存在组织用户结构的不同, 如组织表中字段名不同,所以需要实现适应不同系 ...

随机推荐

  1. CSS基础知识(上)

    1.创建结构化.语义丰富HTML 语义化标记是优秀HTML文档的基础. 语义化标记意味着在正确的地方使用正确的元素,从而得到有意义的文档. 有意义的文档可以确保尽可能多的人都能够使用. 1.1 ID和 ...

  2. lombok的基本使用方法

    在java刚开始学习的时候,首先就会学习封装.继承和多态,就拿封装来说,封装就是为了保护数据安全而将实体类内部数据保持为私有状态,如果外部程序想要访问里面的数据就必须调用此实体类提供的相关数据接口,这 ...

  3. 【Python笔记】2020年7月22日练习=[定义一个函数quadratic(a, b, c),接收3个参数,返回一元二次方程的两个解]

    学习教程:廖雪峰-Python教程-函数-函数定义 学习记录:[定义一个函数quadratic(a, b, c),接收3个参数,返回一元二次方程的两个解] 学习心得: 1.对问题进行判断分析后再下手. ...

  4. python3.x与2.x中print输出不换行

    python3.x: print(i,end=' ') 循环输出: ... ------------------------- print(i,end='!') 循环输出:!!!... end=单引号 ...

  5. SpringBoot实现本地存储文件上传及提供HTTP访问服务

    笔者计划为大家介绍分布式文件系统,用于存储应用的图片.word.excel.pdf等文件.在开始介绍分布式文件系统之前,为大家介绍一下使用本机存储来存放文件资源. 二者的核心实现过程是一样的: 上传文 ...

  6. Dotnet Core Public API的安全实践

    公开API的安全,其实更重要.   一.API的安全 作为一个Dotnet Core的老司机,写API时,能兼顾到API的安全,这是一种优雅.   通常,我们会用认证来保证API的安全,无敌的Auth ...

  7. Nginx同时支持Http和Https

    现在的网站支持Https几乎是标配功能,Nginx能很好的支持Https功能.下面列举一个配置同时支持Http和Https的功能. 需要注意的是:既然选择使用Https,就是为了保证通信安全,那么就没 ...

  8. 对java程序员来说时间格式永远让人挠头来看Java Date Time 教程-时间测量

    在Java中,用System.currentTimeMillis()来测量时间最方便. 你要做的是在某些操作之前获取到时间,然后在这些操作之后你想要测量时间,算出时间差.下面是一个例子: long s ...

  9. 跟我一起学.NetCore之选项(Options)核心类型简介

    前言 .NetCore中提供的选项框架,我把其理解为配置组,主要是将服务中可供配置的项提取出来,封装成一个类型:从而服务可根据应用场景进行相关配置项的设置来满足需求,其中使用了依赖注入的形式,使得更加 ...

  10. Word操作之参考文献自动关联和引用

    转载:https://blog.csdn.net/qq_40078121/article/details/88681605 编号选项->定义新编号格式: 选择插入->交叉引用选项: 然后选 ...