学习camundaBPM未完待续.docx
《学习camundaBPM未完待续.docx》由会员分享,可在线阅读,更多相关《学习camundaBPM未完待续.docx(17页珍藏版)》请在冰豆网上搜索。
学习camundaBPM未完待续
学习camundaBPM
简介
概述
•流程引擎及其架构
•流程引擎
•java响应库
•遵循BPMN2.0规范
•使用POJO
•使用关系型数据库作为持久化
•mybatis作为ORM解决方案
•spring框架集成
•CDI/JAVAEE项目集成
•运行时容器集成
•web使用
•RSSTAPI
•Camunda任务列表
•Camunda操作监控中心
•Camunda控制台(用户管理)
•Camunda环
•附加工具
•Camunda设计器,eclipse插件
•bpmo.io,web版bpmn设计器
下载
•前提要求
•jre8
•下载运行时环境
•社区版和企业版
•完整分布式
•流程驱动配置(共享流程驱动)
•运行时使用(任务列表,操作监控中心,控制台)
•RESTAPI
•使用服务器及其容器
•独立web使用分布式
•流程驱动配置(作为内嵌式流程驱动)
•运行时使用(任务列表,操作监控中心,控制台)
•RESTAPI
•下载Camunda设计器
•下载Camunda环
从零开始
•多种不同开始方法
•BPMN2.0
•学习如何使用bpmn2.0建模
•添加java类和html表单
•打包使用并部署tomcat
•getstart
•下载并安装
•前期准备
•javajdk1.6++
•apachemaven(可选)
•安装现代浏览器(chrome,firefox等)
•CamundaBpm平台
•下载tomcat版的Camundabpm
•解压Camundabpm包
•运行start-camunda.bat
•浏览器访问
•CamundaModeler(设计器)
•准备条件
•操作系统
•win7及其以上版本
•MacOSX10.8+
•ubuntu12.04+
•Fedora21+
•Debian8+
•匹配的流程驱动版本
•7.4.0、7.3.3、7.2.6
•下载
•说明
•下载并解压
•运行camunda-modeler
•创建项目
•创建一个maven项目用eclipse
•file/new/other...
•打开newprojectwizard
•选择maven项目
•创建一个简单使用
•设置packaging为war
•添加Camunda项目依赖
•org.camunda.bpmcamunda-bom7.4.0importpom
•org.camunda.bpmcamunda-engineprovided
•org.apache.maven.pluginsmaven-war-plugin2.3false
•runasmaveninstall
•添加使用流程业务类
•创建包
•创建类
•添加meta-inf/processes.xml部署说明问题
•建模流程
•新建BPMN图
•创建一个简单流程图
•startnode
•dealnode
•配置环节审批用户
•配置环境可执行
•endnode
•保存BPMN
•部署测试(略)
•HTML表单
•创建文件夹src/main/webapp/forms
•创建开始表单
•创建request-loan.html
•修改流程配置
•开始环节增加formkey属性值
•embedded:
app:
forms/request-loan.html
•创建任务表单
•创建approve-loan.html
•修改任务节点formkey值
•重新打包、部署
•java服务任务
•添加服务任务
•选择路由(用户节点之后的路由)
•添加一个委托代理
•CMMN1.1
•如何创建CMNN1.1事例
•定义任务,哨兵,里程碑
•打包、部署
•getstart
•CMMN概述
•一个年轻标准
•没有太多建模工具
•下载并安装
•前提条件
•jdk1.6+
•maven
•现代浏览器
•创建一个java项目forCMMN
•创建一个maven项目
•packagingaswar
•添加项目maven依赖
•dependencyManagement
•org.camunda.bpmcamunda-bom7.4.0importpom
•dependencies
•org.camunda.bpmcamunda-engineprovided
•plugins
•org.apache.maven.pluginsmaven-war-plugin2.3false
•ProcessApplicationClass
•创建一个包:
org.camunda.bpm.getstarted.loanapproval
•创建一个类:
LoanApprovalApplicationextendsServletProcessApplication
•部署流程描述文件
•src/main/resources/META-INF
•新建CMMN用例
•src/main/resources目录下创建CMMN文件
•建立CMMN用例计划模型
•DMN1.1
•创建DMN分配表
•打包,部署
•getstart
•DMN概述
•可作为独立驱动使用
•下载并安装
•创建项目
•创建maven项目
•packageaswar
•添加依赖
•添加dependencyManagement
•添加depdency
•添加plugin
•runasmaveninstall
•添加流程过程使用类
•创建包
•extendsServletProcessApplication
•添加流程描述文件
•创建DMN分配表格
•newfile/DMNTABLE
•settingtablename/id
•配置输入表达式及输出名字
•配置输入输出类型
•添加规则
•配置潜规则
•保存table
•添加可执行代码、部署、测试
•spring框架
•使用camundabpm在springweb程序中
•getstart
•前言
•目标
•在一个springweb项目中使用CamundaBPM
•针对人员
•熟悉javaweb开发
•熟悉spring框架
•已经安装好eclipse和camundamodeler
•创建项目
•创建maven项目
•packagingaswar
•添加Camunda&spring依赖
•version
•camunda7.4.0
•spring3.1.2
•dependencyManagement
•dependency
•camunda-engine
•camunda-engine-spring
•spring-web
•spring-jdbc
•h2database
•slf4j
•添加web.xml文件,用于启动spring容器
•地址src/main/webapp
•添加context-param
•contextConfigLocation
•/WEB=INF/applicationContext.xml
•添加listener
•class:
org.springframework.web.context.ContextLoaderListener
•Runasmaveninstall
•添加spring配置文件
•地址src/main/webapp/WEB-INF
•文件名applicationContext.xml
•内嵌式流程驱动配置
•添加配置bean在applicationContext.xml
•dataSource
•transactionManager
•processEngineConfiguration
•processEngine
•repositoryService
•runtimeService
•taskService
•historyService
•managementService
•如何调用springbean在流程环节中
•添加一个springBean服务任务
•建立一个可执行的BPMN2.0流程图
•添加至:
src/main/resources
•使用spring自动部署bpmn2.0流程
•camunda引擎spring集成
•修改processEngineConfigurationBean
•deploymentResources
•用springbean启动一个流程实例
•实例化流程实例bean
•implementsInitializingBean
•addafterPropertiesSet方法
•addspringbean到applicationContext.xml
•调用springbean服务
•选择servicetask在camundaModeler
•设置implementation类型为Delegate表达式
•值为$(className)
•添加一个类实现JavaDelegate接口
•注册springbean在application上下文
•使用共享流程驱动
•调整流程配置for共享流程驱动
•使用背景
•之前的主要讲述如何部署一个内嵌流程驱动在web项目中
•但是我们也可以使用一个共享流程驱动在web使用中
•和内嵌流程驱动相对,共享流程驱动是独立于web使用和web容器
•共享驱动允许多个使用使用相同的流程驱动
•配置三要点
•第一步
•修改maven中依赖scope为provided,并且不需要和使用模块绑定
•然后,删除spring-jdbc,h2,slf4j相关依赖
•第二步
•添加processes.xml文件到META-INF
•第三步
•调整applicationContext.xml文件
•保证共享流程引擎可以被找到
•SpringServletProcessApplication流程可以被启动
•javaee6
•在javaee环境中如何使用camundabpm
•如何和jsf,cdi,ejb,jpa集成
•apachemaven
•bpmn2.0roundtrip
流程引擎
流程引擎启动
使用管理流程引擎
通过javaAPI编程式
使用ProcessEngineConfiguration类创建不同流程引擎
createStandaloneProcessEngineConfiguration
createStandaloneInMemProcessEngineConfiguration
设置默认参数
调用buildProcessEngine方法
通过xml配置
bpm-platform.xml
允许环境
apachetomcat
GlassFish
WebSphere
WebLogic
配置方法
使用标签创建流程驱动
帮助文档
META-INFO/processes.xml
通过spring
最容易的配置方法
创建一个camunda.cfg.xml文件
•这个文件是一个springxml配置文件
•需要说明一下,此处使用springxml文件,并不意味着camunda依赖于spring环境
•camunda只是简单使用分析和依赖注入spring的特性,为了更方便启动camunda流程驱动
•流程引擎配置对象,也可以通过编程被创建
•在这个文件中必须配置一个名为processEngineConfigurationid
•选择适合的ProcessEngineConfiguration类
执行ProcessEngineprocessEngine=ProcessEngines.getDefaultProcessEngine()
共享,容器管理流程引擎
•容器
•tomcat
•jboss
•glassFish
•ibmwebsphere
•...
•配置方法
•运行时容器集成详细文档
ProcessEngineConfigurationBena
camunda通过使用ProcessEngineConfiguration
Bean进行配置和构建一个独立流程引擎
有多个子类可以用来被定义流程引擎配置,
这些类代表着不同环境以及默认设置
org.camunda.bpm.engine.impl.cfg.StandaloneProcessEngineConfiguration
org.camunda.bpm.engine.impl.cfg.StandaloneInMemProcessEngineConfiguration
org.camunda.bpm.engine.spring.SpringProcessEngineConfiguration
org.camunda.bpm.engine.impl.cfg.JtaProcessEngineConfiguration
流程引擎API
ServicesAPI
javaapi是和流程引擎交互的最常用方法
流程引擎是一个起始点
通过不同的流程配置,创建不同流程驱动
通过流程驱动,我们能获得一些服务(包括bpm方法)
processEngines能扫描所有的camunda.cfg.xml和activiti.cfg.xml文件
camunda.cfg.xml使用java方法
activiti.cfg.xml将使用spring容器
所有的服务的都是无状态的
意味着,我们能很容易运行camundaBPM在多个节点一个集群
彼此之间用同一个数据库
服务
RepositoryService
流程定义
流程定义遵循BPMN2.0规范
代表流程结构和每一步行为
部署
部署是流程驱动的包单元
包含一组bpmn文件
其他资源文件
部署意味着文件需要上传到流程驱动中
负责管理
查询query
挂起和激活
获取其他流程资源
流程定义
流程图
其他静态信息
RuntimeService
获取流程实例运行时信息
流程实例是指可执行流程
同一时间可以拥有多个流程实例
可以获取或者存储流程变量
从而改变流程走向
查询流程实例并且执行
TaskService
查询任务分配用户和群组
创建新的独立任务
处理任务
完成任务
identityService
增删改查群组和用户
FormService(可选)
没有它,流程引擎可以继续工作
开始表单
流程还没有启动前的表单
任务表单
有这个服务的流程,不必将数据内嵌到流程中
HistoryService
所有的历史数据都是通过流程引擎产生的
ManagementService
一个不需要定制的服务,是一个标准服务
用于获取数据库信息和表元信息
QueryAPI
RESTQueryAPI
NativeQueries
CustomQueries
SQLQueries
流程引擎概念
流程定义
查找流程定义
关键字及其版本号
挂起流程定义
流程实例化
流程实例
创建一个流程实例
创建一个带有设置活动的流程实例
查询流程实例
和一个流程实例交互
触发式
消息事件
信号事件
取消操作
发起/取消流程
挂起是一个流程实例
执行实例
执行流程
查询执行
活动实例
活动实例
查询活动
id和唯一性
关联和执行
作业
作业和作业定义
作业查询
挂起和激活作业执行
流程变量
作用域
可见性