BPM编程模型(场景)
一直开发基于操作的业务系统,主要就是通过界面,用户提交一些数据完成任务,大多数涉及多人协作的,基本都是浏览,少数可能对其进行审批,这里的审批不是电子政务那样的多人审批任务,仅仅是对数据的一个操作而已,所以任务协作都是有我们程序自己进行控制的,业务的组合也不是很多,也不是多人协作式的任务,所以也就是没使用基于BPM模式的流程开发。
但是最近的一个系统,主要还是采集数据,完成任务,但是采集的数据来源多个系统,通过Webservice进行访问其他系统的服务,流程基本有些可以重复使用,不过有些涉及多人协作,保证任务安全,所以我们采用BPM的模式进行,对原子服务进行编排组合,按照一定的流程完成我们自己的业务,一方面简化开发,同时多人协作的状态也比较好控制。
所以我们采取SOA+BPM流程模式的开发
=====================================================================================================
流程模版--xml文件(流程轨迹可以进行跟踪,这是BPM的一大优点)
流程实例--业务挂接在流程实例上面运行(主要是在节点之间挂接,业务数据只需记录流程实例的ID,而流程实例记录任务的用户,分派任务到用户)
把业务数据挂接在流程实例上面运行
同时通过流程运行轨迹我们可以了解到此业务运行过程的的数据监控,参与人员的监控(这一BPM的有点)
对原子服务进行重新的编排,达到流程的复用(BPM的有点)----后期可以对流程进行优化(比如临床路径这样的需求)
======================================================================================================
Token机制:一种状态机机制
======================================================================================================
JbpmConfiguration cfg = JbpmConfiguration.getInstance();
JbpmContext ctx = cfg.createJbpmContext();
JbpmConfiguration cfg = JbpmConfiguration.getInstance();
cfg.createSchema();//初始化数据库
ProcessDefinition processDefinition = ProcessDefinition.parseXmlResource("dd/processdefinition.xml");
ctx.deployProcessDefinition(processDefinition );//部署流程模板
ProcessDefinition processDefinition = ctx.getGraphSession().findLatestProcessDefinition("dd");
ProcessInstance processInstance = new ProcessInstance(processDefinition);//构建流程实例
ctx.save(processInstance);//保存流程实例
Token token = processInstance.getRootToken()//获取token(类似一个指针)
token.signal();//节点流转(State节点流程使用)
List lists = ctx.getTaskMgmtSession().findTaskInstances(roleId);//获取用户的代办列表(任务实例)
ProcessInstance processInstance = ctx.getGraphSession().getProcessInstance(id);//获取流程实例
instance.end('下一个节点name');//任务节点使用这个方法进行流转
注意:
start节点:
可以有任务,但是不可以指定actor-id,我们可以动态创建任务
task-node节点:
可以有多个task,一个task默认之创建一个任务实例,但是如果我们自己动态创建,可以在一个task节点上挂接多个任务实例(我们自己创建任务实例)
采用instance.end('下一个节点name')流转
state:
采用token.signal()流转
node:
自动节点
Join-For:拆分何必机制(同步顺序于非同步无顺序)
任务分配:
AssignmentHandler(动态对任务实例进行分配)
决策处理器:
DecisionHandler(动态指定流转路径)
事件处理器:
ActionHandler
节点事件:
利用节点的事件机制,我们可以动态创建任务实例
规则机制(动态机制):
BPM种,主要的节点就是任务节点以及指派机制,就是一种规则机制可以借助Drools规则进行
=======================================================================================================
国际上多工作流21种模式
大家可以了解一下这21种场景,这21种模式基本大家都可以在现实里面见到,但是国外对其理论化
http://www.cnblogs.com/wuhong/archive/2010/12/01/1890830.html
=====================================================================================================
通过ESB构建数据中心,提供服务给BPM平台,而DW通过ETL过程供BI进行数据分析,其他外围的业务平台实现具体业务,发布成服务接入ESB,通过BPM进行流程重组监控优化等。
BPM,ESB,MDM以及BI、DW关系



此图来源网上。
BPM编程模型(场景)的更多相关文章
- ETL编程模型(场景)
使用场景: ETL是一个处理过程. 多个数据源之间进行数据同步 1:n:一对多同步数据 n:1:多个数据源到一个目的段 m;n:多个数据源多个目的段 ========================= ...
- ESB的编程模型(场景)
GateWay:网关channel:数据传输的通道adapter:数据连接通道的数据适配器spliter:对通道里面的数据进行分割router:对通道进行路由transforme:对消息进行格式化转化 ...
- 系统编程-网络-tcp客户端服务器编程模型(续)、连接断开、获取连接状态场景
相关博文: 系统编程-网络-tcp客户端服务器编程模型.socket.htons.inet_ntop等各API详解.使用telnet测试基本服务器功能 接着该上篇博文,咱们继续,首先,为了内容的完整性 ...
- Spring Batch批处理以及编程模型
1.批处理: 类似于SQL里面的批处理提交 2.场景: 业务定时进行批处理操作,但是批处理的编程模型是怎么的呢? 3.开源框架 Spring Batch 4.编程模型: reader-processo ...
- 云巴:基于MQTT协议的实时通信编程模型
概要 有人常问,云巴实时通信系统到底提供了一种怎样的服务,与其他提供推送或 IM 服务的厂商有何本质区别.其实,从技术角度分析,云巴与其它同类厂商都是面向开发者的通信服务,宏观的编程模型都是大同小异, ...
- 【温故知新】c#异步编程模型(APM)--使用委托进行异步编程
当我们用到C#类许多耗时的函数XXX时,总会存在同名的类似BeginXXX,EndXXX这样的函数. 例如Stream抽象类的Read函数就有 public abstract int Read(byt ...
- mapreduce编程模型你知道多少?
上次新霸哥给大家介绍了一些hadoop的相关知识,发现大家对hadoop有了一定的了解,但是还有很多的朋友对mapreduce很模糊,下面新霸哥将带你共同学习mapreduce编程模型. mapred ...
- Dubbo 新编程模型之外部化配置
外部化配置(External Configuration) 在Dubbo 注解驱动例子中,无论是服务提供方,还是服务消费方,均需要转配相关配置Bean: @Bean public Applicatio ...
- Spark:Spark 编程模型及快速入门
http://blog.csdn.net/pipisorry/article/details/52366356 Spark编程模型 SparkContext类和SparkConf类 代码中初始化 我们 ...
随机推荐
- SWIFT Tuple Pattern及Struct Pattern
定义一个Tuple let color = (1.0,1.0,1.0,1.0) switch color{ case (0.0,0.5...1.0,let blue,_): //匹配第一个值为0.0第 ...
- HandBrake 开源视频转码器、编码转换器、格式转换器
HandBrake 开源视频转码器.编码转换器.格式转换器 点击下图进入官网下载页面:https://handbrake.fr/downloads.php macOS 下可能会阻止安装! 其实也不是安 ...
- OC基础知识总结 分类: ios学习 OC 2015-06-26 17:58 58人阅读 评论(0) 收藏
//OC: Objective-C, 面向对象的C语言 //OC与C的区别 //1.OC是C的超集, C语言的所有语法都可以在OC中使用 //2.OC是面向对象 //3.OC是一门运行时语言 //4. ...
- I.MX6 ar1020 SPI device driver hacking
/************************************************************************************ * I.MX6 ar1020 ...
- STM32 外部中断
1)STM32一般有19 个外部中断为: 线 0~15:对应外部 IO 口的输入中断.线 16:连接到 PVD 输出. 线 17:连接到 RTC 闹钟事件. 线 18:连接到 USB 唤醒事件. 2) ...
- CF1096. G. Lucky Tickets(快速幂NTT)
All bus tickets in Berland have their numbers. A number consists of n digits (n is even). Only k dec ...
- 2018-2019-2 网络对抗技术 20165212 Exp4 恶意代码分析
2018-2019-2 网络对抗技术 20165212 Exp4 恶意代码分析 原理与实践说明 1.实践目标 监控你自己系统的运行状态,看有没有可疑的程序在运行. 分析一个恶意软件,就分析Exp2或E ...
- test20181004 苹果树
题意 分析 对每个点维护子树所能达到的dfn最大值.最小值.次大值.次小值,然后就可以计算原树中每个点与父亲的连边对答案的贡献. 如果子树中没有边能脱离子树,断掉该边与任意一条新加的边都成立,答案就加 ...
- ioctl命令
_IO._IOR._IOW._IOWR 宏的使用说明 驱动程序中 ioctl 函数传递的变量 cmd 是应用程序向驱动程序请求处理的命令.cmd 除了用于区别不同命令的数值,还可包含有助于处理的几种 ...
- 12 Factor CLI Apps
CLIs are a fantastic way to build products. Unlike web applications, they take a small fraction of t ...