传智播客OA我的课堂笔记~~建议大家学习我的做笔记的格式!Java┳ㄞ飞哥

来源:互联网 发布:js中的面向对象编程 编辑:程序博客网 时间:2024/06/05 04:15

 ========= OA工作流  ========

第一课、工作流实战_了解和认识工作流系统
a.什么是工作流?
以前咱大多做的是增删改查,添加完就没事了。而像报销事情就必须得员工申请、经理审批这过程.....
要素:参与者/活动/数据
b.JBPM基本概况
.JBPM中与工作流领域对应的概念
c.JBPM基本用法
.基本API的用法以及应用策略
d.什么是工作流?
WFMC定义:解决业务流的一种计算机形式。

解释定义
流程定义-----------》 工作流引擎  《---------》 持久化组件
+                   |
|                   |
|产生               |           
|                      业务数据库
用户-----------》工作列表


第二课、工作流实战_工作流中的概念与JBPM相关API调用
a.工作流主要概念:
.流程定义: 预先定义的业务流转逻辑
.流程实例:业务的一次实际流转过程
.参与者:任务的执行者
.活动(任务):组成流程定义的节点
.活动实例:组成流程实例的元素
.流转:从一个节点到另一个节点这一行为
.工作列表:当前需要办理的任务集合
.工作流引擎:工作流的核心组件,对流程实例、任务实例以及其状态进行管理
b.工作流的切入点
.如何编写流程的定义
.如何部署流程
.如何加载流程
.如何启动流程
.如何执行任务
.如何完成任务

=============================我的课堂笔记========================
日期:2009-10-06
主题:jbpm二

【复习】

---名词解释---
工作流就是工作流程的计算机化
工作流系统
节点、任务节点、任务、参与者
流转
自己编写工作流定义:
<process-definition name="">
<start-state name="">
<task-node name="">
<task name="">   
<assignment actor-id=""/>
</task>
<transition to=""/>
</task-node>
<end-state name=""/>
部署工作流 -- 执行工作流 - signal - start  任务- end


流程设计器、JbpmApi

====编码实现自己的工作流平台====
环境搭建:
jar包 + 配置文件(或注解)
开发:Api的使用
部署并且signal、启动任务、查看某人任务列表、完成任务

学习路线:
编写工作流定义
部署工作流
加载工作流
开启工作流
执行任务
完成任务

【上午】

[流程变量]

-如何设置变量?
pi.getContextInstance().setVariable()

a.简单数据类型的set
b.引用类型的set
==注意:当set的实体不是持久化实体,他会先session.save的在保存到变量作用域中
!!!表中保存都是long型,不支持int型的持久化实体
c.手动实现引用类型的set,需要保存className和id主键
RootToken


[节点]
========
为什么需要节点类型?
因为有不同的分析处理,像判定,输入等操作就需要不同的节点
每个流程定义都必须有开始节点和结束节点
========


===预定义节点====
a.不同的节点类型有不同的行为
b.起始节点 start-state
结束节点 end-state
任务节点 task-node
决策节点 decision
分支节点/合并节点 fork/join
state

---详细解析----
c.开始节点 start-state
==可以有且只能放一个任务,最好使用task-mode
==不能有任何节点流转到开始节点
==开始节点首先发送signal
d.结束节点 end-state
==没有transition元素节点
c.任务节点 task-node
==进入任务节点 - 创建任务实例 -然后进入等待状态
==任务实例全完成就会离开
==属性 create-tasks=""
===create-tasks 一般当创建不确定的任务实例时就设为false
==属性 signal="" last(默认)/first/never/unsynchronized/last-wait/first-wait


数据库能否存  --- 传过来是否是中文(连接编码)




[其他]
框架思想:把xml文件每个元素都映射为一个类
ctrl+shift+T 查找某类
===================================================
===================================================

【下午】

[节点继续]

---详细解析----
a.decision
==必须给流转起个名字
----------------
==通过DecisionHander接口的decide方法计算离开方向
==重要思想,当你在接口的处理时,你的传来的参数里的信息Contenxt
----------------
通过表达式计算
#{ 5 gt 3? 'to xx' : 'to jj' }
----------------
异常:org.jbpm.graph.def.DelegationException
一般原因:
1.空指针异常
2.在执行时出现需要ProcessClassLoader
解决办法-- 直接打包时添加class资源


b.fork/join
==成对出现,分支节点、合并节点
==一般当出现分支时就给流转起个名字,防止空指针异常

-------------------------------------------------------------------

====自定义节点=====
[Node节点]
a.一个node节点,里面action指向某类,该类进行操作
b.通过实现ActionHande接口定制node节点的行为

[Actionn动作]
属性:class、name、ref-name

[event事件]

事件类型:
a.一般节点有 node-enter、onde-leave 有两个特殊
b.transition有流转事件 taking a transition 因为只有一个事件所以直接配置action
c.task有四个事件 task-create、task-assignment、task-start、task-end
d.配置事件后要给事件赋予动作
e.某些节点不支持的事件,即使配置了也不会报错,也不会执行
f.除了节点里的action可以影响流程,
当事件里的action影响流程的执行,会报token is locked异常(一种机制)
===============================
[动态创建不确定数量的任务实例]
a.fet**是一种包含关系,当你在里面,才可以拿到外面的节点


[任务分配]
a.任务分配两种模式:推模式  +  拉模式
b.获取、重新分配、退回
简单:taskInstance.setAuthor(id); id 为null 退回
c.<assignment>的actor-id分配个人任务, pooled-actors
d.接口 AssignmentHandler -- 张三找她的经理,王五找她的经理
e.分配任务的方式:
1.
f.不管使用哪种分配方式,参与者的计算都是由业务层复制解释


【总结】



【问题】
a.一个人可以退回?
b.状态跟node多大区别?


[单词]: process  - 流程
[单词]: definition - 定义
[单词]:task - 任务
[单词]:decision   1 决定, 决心, 判断 2 果断, 坚决 3 决议, 结果
[单词]:signal  - 信号
[单词]:assignment 1 工作, 任务 2 分配, 指派
[单词]:delegation 代理
[单词]:auction 拍卖
[单词]:pool  池
[单词]:fork 分支


生活很苦也很甜!!
================================================
.*.    /~ .~/    /~  ~/    /~ .~/    /~  ~/
***   '      `//'      *  '      `//'      *
V   (                .*)(               . *)
//|//  /            . *./  /            . *./
|     `/ .      . .*/'    `/ .      . .*/'
|       `/ * .*. */' _    _ `/ * .*. */'
`/ * */'  ( `//'*)  `/ * */'
`//'     /   */'    `//'
`//'
==================================================
author:  何骏飞Jeffe    hjflbc1990@sina.com

原创粉丝点击