一直开发基于操作的业务系统,主要就是通过界面,用户提交一些数据完成任务,大多数涉及多人协作的,基本都是浏览,少数可能对其进行审批,这里的审批不是电子政务那样的多人审批任务,仅仅是对数据的一个操作而已,所以任务协作都是有我们程序自己进行控制的,业务的组合也不是很多,也不是多人协作式的任务,所以也就是没使用基于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编程模型(场景)的更多相关文章

  1. ETL编程模型(场景)

    使用场景: ETL是一个处理过程. 多个数据源之间进行数据同步 1:n:一对多同步数据 n:1:多个数据源到一个目的段 m;n:多个数据源多个目的段 ========================= ...

  2. ESB的编程模型(场景)

    GateWay:网关channel:数据传输的通道adapter:数据连接通道的数据适配器spliter:对通道里面的数据进行分割router:对通道进行路由transforme:对消息进行格式化转化 ...

  3. 系统编程-网络-tcp客户端服务器编程模型(续)、连接断开、获取连接状态场景

    相关博文: 系统编程-网络-tcp客户端服务器编程模型.socket.htons.inet_ntop等各API详解.使用telnet测试基本服务器功能 接着该上篇博文,咱们继续,首先,为了内容的完整性 ...

  4. Spring Batch批处理以及编程模型

    1.批处理: 类似于SQL里面的批处理提交 2.场景: 业务定时进行批处理操作,但是批处理的编程模型是怎么的呢? 3.开源框架 Spring Batch 4.编程模型: reader-processo ...

  5. 云巴:基于MQTT协议的实时通信编程模型

    概要 有人常问,云巴实时通信系统到底提供了一种怎样的服务,与其他提供推送或 IM 服务的厂商有何本质区别.其实,从技术角度分析,云巴与其它同类厂商都是面向开发者的通信服务,宏观的编程模型都是大同小异, ...

  6. 【温故知新】c#异步编程模型(APM)--使用委托进行异步编程

    当我们用到C#类许多耗时的函数XXX时,总会存在同名的类似BeginXXX,EndXXX这样的函数. 例如Stream抽象类的Read函数就有 public abstract int Read(byt ...

  7. mapreduce编程模型你知道多少?

    上次新霸哥给大家介绍了一些hadoop的相关知识,发现大家对hadoop有了一定的了解,但是还有很多的朋友对mapreduce很模糊,下面新霸哥将带你共同学习mapreduce编程模型. mapred ...

  8. Dubbo 新编程模型之外部化配置

    外部化配置(External Configuration) 在Dubbo 注解驱动例子中,无论是服务提供方,还是服务消费方,均需要转配相关配置Bean: @Bean public Applicatio ...

  9. Spark:Spark 编程模型及快速入门

    http://blog.csdn.net/pipisorry/article/details/52366356 Spark编程模型 SparkContext类和SparkConf类 代码中初始化 我们 ...

随机推荐

  1. fluent nhibernate映射的数值类型问题

    fluent nhibernate中,数值类型设置不当,就可能会引发一些意想不到错误. 一.引发映射错误 比如,oracle数据库中,字段ID类型是number,结果用codesmith生成代码,实体 ...

  2. Windows Security Login

    /********************************************************************************* * Windows Securit ...

  3. 8个iPhone防盗秘籍 为手机和资料安全保驾护航

    最近发现用x手机的朋友越来越多,今天一个朋友手机被偷,万分焦急,失财事小,电话里很多手机号码等重要信息都无法找回.为了让大家尽量安全使用自己的iPhone或苹果产品,哪怕丢失后也有最大的可能性找回,特 ...

  4. ZOJ2402 Lenny's Lucky Lotto List 简单DP

    Lenny's Lucky Lotto Lists Time Limit: 2 Seconds      Memory Limit:65536 KB Lenny likes to play the g ...

  5. day25 python学习 继承,钻石继承

    通过一个列子认识父类和子类中,子类的如何实现对父类默认属性调用,同时拥有自己的属性,如何在子类中调用父类的方法,class Ainmal: country='afdas' def __init__(s ...

  6. 来自官方的一些dbt 最佳实践

    限制对原始数据的依赖性 您的项目将取决于存储在数据库中的原始数据.我们建议制作所谓的“基本模型”,以最大限度地减少对原始数据表的依赖性.在此约定中,基本模型可以具有以下职责: 仅选择与当前分析相关的字 ...

  7. adnanh webhook 框架request values 说明

      request values 在adnanh webhook 是比较重要的,规则触发以及命令参数传递都是通过它 支持的request values 类似 http header 查询参数 play ...

  8. 几本不错的graphql 电子书

    当前专门讲graphql 的数据不是很多,但是越来越多的graphql 项目的出现以及graphql 自身的 便捷,老外已经有人去写graphql 的设计以及基本使用了. ebooks 地址 http ...

  9. Selenium(ThoughtWorks公司开发的web自动化测试工具)

    Selenium也是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE(7.8.9).Mozilla Firefox.Mozill ...

  10. VPC/VM/VBOX安装GHOST版的无法启动系统

    本人最近在安装一些公司的虚拟机,方便开发使用,不用每次都安装几个小时的装机和安装软件,但是本次却遇到了一点问题,虚拟机安装完成后一直无法进入系统,只有一个光标在黑色的屏幕上一闪一闪的,也没有任何错误提 ...