snaker文档文档格式.docx

上传人:b****8 文档编号:22041796 上传时间:2023-02-02 格式:DOCX 页数:41 大小:503.29KB
下载 相关 举报
snaker文档文档格式.docx_第1页
第1页 / 共41页
snaker文档文档格式.docx_第2页
第2页 / 共41页
snaker文档文档格式.docx_第3页
第3页 / 共41页
snaker文档文档格式.docx_第4页
第4页 / 共41页
snaker文档文档格式.docx_第5页
第5页 / 共41页
点击查看更多>>
下载资源
资源描述

snaker文档文档格式.docx

《snaker文档文档格式.docx》由会员分享,可在线阅读,更多相关《snaker文档文档格式.docx(41页珍藏版)》请在冰豆网上搜索。

snaker文档文档格式.docx

如何启动已发布的流程定义

任务执行

如何执行任务

∙使用Eclipse设计器插件

∙使用web设计器

∙组件模型属性

使用Eclipse设计器插件

eclipse设计器插件是在eclipse4.3(kepler)版本开发的,经测试,是可以在eclipse4.3+,myeclipse9+上面运行

安装Eclipse插件

在XX网盘上下载snaker-designer-*.*.*.jar插件包,直接copy至eclipse安装目录下的plugins文件夹里即可使用。

考虑到大家下载的eclipse版本可能无法使用设计器,建议直接从XX网盘上下载经过测试的eclipse-kepler版本

Myeclipse安装插件时,可直接把插件包copy至dropins文件夹下面即可

创建流程定义

1)新建流程

依次选择File->

New->

Other->

Snaker,如下图所示:

选择SnakerProcessFile并输入文件名称,如下图所示:

点击Finish,则打开流程设计器主界面,其中包括两大部分:

流程组件、属性Properties视图,如下图所示:

2)定义节点

由于节点定义都是拖拽式的,所以不方便用图形来演示。

这里仅仅贴上一个定义好的请假流程图:

定义流程的几个注意点:

1)一个流程必须设置name、displayname属性

2)最常用的节点是task,如果是人工任务,则需要设置assignee[参与者]、form[设置表单url],表单url的规则可以表示contextPath下面的绝对路径,也可以表示相对路径[相对路径是用于页面include情况]

3)decision节点用于决策分支,必须设置expr属性,如果有多个选择分支,则建议设置连接线的expr属性,可参考测试用例

4)snaker支持的会签,仅仅是设置task的performType

5)snaker支持三种参与者方式

直接设置静态参与者,即assignee值为用户、部门或角色的标识符

通过运行时动态传递,即assignee值为变量名称,在调用流程引擎的api时,通过map参数传递这个变量值

通过自定义类[继承Assignment类],设置assignmentHandler属性,assign方法返回值就是参与者

6)主办、协办是通过task节点的taskType设置的。

snaker既支持单独的节点作为协办节点,也支持主办节点动态的创建协办任务

3)保存定义

流程定义的保存,实际上就是将图形元素转换为xml格式并保存。

上面请假流程的xml数据为

使用web设计器

web设计器是基于myflow开发的,使用的技术为raphael。

集成web设计器

设计器代码位于snaker-web项目的\snaker-web\src\main\webapp\styles\js\snaker目录下。

如果已有的项目需要集成web版本的设计器,主要是copy这个目录,并且参考\snaker-web\src\main\webapp\WEB-INF\content\snaker目录下process开头的jsp文件,因为设计器需要页面来编辑和展现。

∙创建流程定义 

使用web设计器的前提是已经成功运行snaker-web应用,具体可参考“1.5演示部署”章节

以admin账号登录snaker-web,点击左栏菜单:

流程管理->

流程定义,如下图所示:

!

[image](

点击“设计”按钮,则打开web流程设计器,如下图所示:

web版本的流程设计器布局与样式尽量与eclipse的设计器插件保持一致。

其节点和属性参考“组件模型属性”介绍

在流程定义列表页面,点击“初始化”按钮,即可产生6个用于测试的业务流程,如下图所示:

流程的状态表示当前流程是否可用,版本号用于管理同名流程的多版本管理

上图中的四个图标按顺序分别表示:

启动流程、编辑、重新设计、禁用。

点击重新设计,可打开已经定义好的业务流程,如下图所示:

web设计器定义流程时注意以下两点:

1)web流程设计器还是适用于开发人员,不适合业务人员。

如果面向业务人员,需要多设计器进行改造

2)设计器中连接线需要先点击连接线图标,再选择节点1、节点2,这样才能连接两个节点。

连接线的删除是通过del键盘去操作的

3)保存定义 

也是将图形元素转换为xml格式,并保存至数据库中,参见wf_process的content字段。

组件模型属性

组件模型

属性

描述

通用属性

name

组件名称,模型内名称唯一

displayName

组件中文显示名称,方便阅读

preInterceptors

前置拦截器

postInterceptors

后置拦截器

Process

expireTime

期望完成时间,设置表达式变量由参数传递

instanceUrl

流程定义列表页面直接启动流程实例的URL

instanceNoClass

流程实例编号生成类

Transition

expr

决策选择Decision节点的输出变迁表达式

Task

form

用户参与的表单任务对应的URL

assignee

任务参与者变量

assignmentHandler

任务参与者处理类

taskType

任务类型(主办/协办)

performType

任务参与类型(针对多个参与者),ANY为其中一个参与者完成即往下流转;

ALL为所有参与者完成才往下流转

reminderTime

任务提醒时间

reminderRepeat

提示重复次数

期望完成时间

autoExecute

超时是否自动执行

callback

自动执行的回调设置

Custom

clazz

自定义节点的Java类路径,两种方式:

1.实现IHandler接口,实现接口时不需要设置下面三个属性。

2.无接口实现的普通java类,需要设置下面方法名称、参数属性

methodName

定义需要执行的java类的方法名称

args

定义传递的参数表达式

var

定义返回值变量名称

SubProcess

processName

子流程名称(对应process的name属性)

Decision

决策选择表达式

handleClass

决策选择的处理类,实现DecisionHandler接口

流程部署

∙deploy

engine.process().deploy(StreamHelper

.getStreamFromClasspath("

flows/leave.snaker"

部署后的版本号默认为0,如果存在同名的流程定义,则新的流程定义版本号依次加1,并不会影响其它已经运行的流程实例。

∙redeploy

engine.process().redeploy(processId,StreamHelper

重新部署流程会影响已经运行的流程实例

∙undeploy

engine.process().undeploy(processId)

卸载流程只会更新状态state值,不会删除数据

可根据流程定义的id或者name启动流程实例。

如果相同的流程名称存在不同的版本,并使用name启动实例时,会以最新的版本号来启动,其它低版本运行中的流程实例不会受到影响,这样就允许流程的多个版本同时运行。

∙根据id启动实例

engine.startInstanceById(processId);

engine.startInstanceById(processId,operator);

engine.startInstanceById(processId,operator,args);

startInstanceById方法的参数为:

流程定义id、操作人operator、参数列表args

∙根据name启动实例

engine.startInstanceByName(name)

engine.startInstanceByName(name,version)

engine.startInstanceByName(name,version,operator)

engine.startInstanceByName(name,version,operator,args)

startInstanceByName方法的参数为:

流程名称name、版本号version、操作人operator、参数列表args

执行任务是工作流平台中最常见的操作,其处理逻辑包括两部分:

∙完成当前任务

∙按照流程定义驱动产生新的任务

执行任务的调用方法如下:

engine.executeTask(taskId);

engine.executeTask(taskId,operator);

engine.executeTask(taskId,operator,args);

executeTask参数分别表示:

任务标识taskId、操作人operator、参数列表args

应用整合

为了方便整合,snaker提供了应用示例提供参考

∙snaker-springmvc

基于SpringMVC、Spring3、Hibernate3、Snaker的快速整合示例,仅仅包括流程管理的功能,所有涉及到操作人员的部分全部使用admin,如果整合到具体项目时,一定要替换成系统当前登录的用户

∙snaker-struts2

基于Struts2、Spring3、Mybatis、Snaker的快速整合示例,仅仅包括流程管理的功能,所有涉及到操作人员的部分全部使用admin,如果整合到具体项目时,一定要替换成系统当前登录的用户

∙snaker-web

基于SpringMVC、Spring3、Hibernate3、Shiro、Snaker搭建的基础演示应用,包含:

用户管理、部门管理、角色管理、权限管理、资源管理、菜单管理、流程管理、数据字典等常用功能模块

∙jfaker

基于JFinal、Shiro、Snaker搭建的基础演示应用,包含:

目前Snaker可独立运行,以API方式整合,同时也支持spring、jfinal、nutz三个平台,并且能够将事务托管给平台管理。

其它情况下,需要自定义扩展。

API

API方式的事务由snaker自身管理,保证每次api调用事务的正确性。

snaker提供的测试用例目前就采用这种方式。

spring

与spring整合过程,需要配置服务、事务,以保证事务交给spring管理。

可以参考snaker-web项目

jfinal

与Jfinal整合类似于API方式

nutz

与Nutz整合类似于API方式

API整合

如果使用api集成,需要在snaker.xml中配置DBAccess、Transaction、Dialect

importjavax.sql.DataSource;

importorg.snaker.engine.SnakerEngine;

importorg.snaker.engine.access.jdbc.JdbcHelper;

importorg.snaker.engine.cfg.Configuration;

publicclassSnakerHelper{

privatestaticfinalSnakerEngineengine;

static{

//使用项目中已有的DataSource、SessionFactory、SqlSessionFactory对象

//传递至initAccessDBObject方法中都可以

DataSourcedataSource=JdbcHelper.getDataSource();

engine=newConfiguration()

.initAccessDBObject(dataSource)

.buildSnakerEngine();

}

publicstaticSnakerEnginegetEngine(){

returnengine;

}

initAccessDBObject方法传递的参数值与snaker.xml配置的数据库访问对应关系:

参数类型

访问对象

事务管理拦截器

依赖库

DataSource

JdbcAccess

DataSourceTransactionInterceptor

commons-dbcp-1.4.jar 

commons-dbutils-1.5.jar 

commons-pool-1.5.4.jar

SessionFactory

HibernateAccess

Hibernate3TransactionInterceptor

hibernate-*-3.5.5.jar

SqlSessionFactory

MybatisAccess

MybatisTransactionInterceptor

mybatis-3.2.3.jar

initAccessDBObject方法也可以不调用,而使用snaker.properties中的jdbc.或hibernate.来初始化DataSource、SessionFactory、SqlSessionFactory。

但在实际的项目,还是建议使用该项目已有的DataSource、SessionFactory、SqlSessionFactory

Spring整合

∙增加maven依赖或jar

∙配置DBAccess

∙配置服务类

∙配置事务管理

增加maven依赖或jar

maven坐标如下:

<

dependency>

<

groupId>

com.github.snakerflow<

/groupId>

artifactId>

snaker-spring<

/artifactId>

version>

*.*.*<

/version>

/dependency>

如果非maven项目,需要到XX网盘下载jar包

配置DBAccess

访问类型

类路径

springjdbc

org.snaker.engine.spring.SpringJdbcAccess

hibernate

org.snaker.engine.access.hibernate.Hibernate3Access

org.snaker.engine.access.hibernate4.Hibernate4Access

mybatis

org.snaker.engine.access.mybatis.MybatisAccess

如配置Hibernate方式的DBAccess:

beanid="

dbAccess"

class="

org.snaker.engine.access.hibernate.Hibernate3Access"

>

propertyname="

sessionFactory"

ref="

/>

/bean>

配置服务类

--流程引擎配置-->

beanclass="

org.snaker.engine.spring.SpringSnakerEngine"

processService"

orderService"

taskService"

queryService"

managerService"

org.snaker.engine.core.ProcessService"

access"

cacheManager"

org.snaker.engine.core.OrderService"

org.snaker.engine.core.TaskService"

org.snaker.engine.core.ManagerService"

org.snaker.engine.core.QueryService"

配置事务管理

需要将流程引擎的事务托管给spring统一管理

--流程事务配置aop的pointcut中增加:

orexecution(*org.snaker.engine..*.*(..))-->

tx:

attributes>

methodname="

start*"

propagation="

REQUIRED"

execute*"

save*"

delete*"

/>

update*"

remove*"

add*"

assign*"

create*"

complete*"

finish*"

terminate*"

take*"

deploy*"

redeploy*"

undeploy*"

withdrawTask*"

native*"

get*"

read-only="

true"

find*"

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1