%3cp%3e 修改 值 html,integration.html

Snaker - 开源轻量级工作流引擎

window.location.href="http://snakerdoc.jd-app.com/";

集成

集成snaker必须在classpath下增加snaker.properties,选择性的配置snaker.xml

snaker.properties配置明细:

属性名称描述默认值
config定义snaker.xml文件的名称snaker.xml
jdbc.pageSize查询结果的每页显示数量15
jdbc.*如果指定了JDBC+dbutils方式但未提供DataSource时使用
hibernate.*如果指定了Hibernate方式但未提供SessionFactory时使用
tx.jta.userTransaction如果用API集成,并且采用JTA事务时配置

snaker.properties一般配置如下:

config=snaker.xml

#page must config

jdbc.pageSize=15

snaker.xml用于配置自定义扩展,所配置的bean实例属于单例对象,并且存放在ServiceContext上下文中(SimpleContext、SpringContext),具体配置如下:

 
     

<config>

<!--jdbc的数据库访问与事务拦截器

<bean class="org.snaker.engine.access.jdbc.JdbcAccess"/>

<bean class="org.snaker.engine.access.transaction.DataSourceTransactionInterceptor"/>

-->

<!--

<bean class="org.snaker.engine.access.transaction.JtaTransactionInterceptor"/>

-->

<!--hibernate3的数据库访问与事务拦截器

<bean class="org.snaker.engine.access.hibernate3.HibernateAccess"/>

<bean class="org.snaker.engine.access.transaction.Hibernate3TransactionInterceptor"/>

-->

<!--mybatis的数据库访问与事务拦截器

<bean class="org.snaker.engine.access.mybatis.MybatisAccess"/>

<bean class="org.snaker.engine.access.transaction.MybatisTransactionInterceptor"/>

-->

<!-- 数据库方言配置。如果使用orm框架已自带了方言的支持,这里不需要配置

<bean class="org.snaker.engine.access.dialect.OracleDialect"/>

<bean class="org.snaker.engine.access.dialect.MySqlDialect"/>

<bean class="org.snaker.engine.access.dialect.SQLServerDialect"/>

-->

<!-- 任务拦截器,这里可配置多个拦截器,在任务执行后进行拦截处理(如:记录日志、短信提醒等) -->

<bean class="org.snaker.engine.impl.LogInterceptor"/>

<!-- 表达式引擎配置 -->

<bean class="org.snaker.engine.impl.JuelExpression"/>

</config>

snaker.xml不是必须配置的,视具体应用环境而定。

注:与Spring集成的项目中不需要配置DBAccess、TransactionIntercptor。数据库方言Dialect实现类根据orm框架而定(仅Hibernate框架不需要配置Dialect),

此处配置的拦截器属于全局拦截器,只要产生Task,就会执行拦截处理。

1 Spring集成

Spring集成Snaker时,需要配置流程引擎及服务、事务管理、数据访问方式、缓存管理.具体可参考snaker-web

 
     

<!-- 流程引擎配置 -->

<bean class="org.snaker.engine.spring.SpringSnakerEngine">

<property name="processService" ref="processService"/>

<property name="orderService" ref="orderService"/>

<property name="taskService" ref="taskService"/>

<property name="queryService" ref="queryService"/>

<property name="managerService" ref="managerService"/>

</bean>

<bean id="dbAccess" class="org.snaker.engine.access.hibernate.Hibernate3Access">

<property name="sessionFactory" ref="sessionFactory"/>

</bean>

<bean id="processService" class="org.snaker.engine.core.ProcessService">

<property name="access" ref="dbAccess"/>

<property name="cacheManager" ref="cacheManager"/>

</bean>

<bean id="orderService" class="org.snaker.engine.core.OrderService">

<property name="access" ref="dbAccess"/>

</bean>

<bean id="taskService" class="org.snaker.engine.core.TaskService">

<property name="access" ref="dbAccess"/>

</bean>

<bean id="managerService" class="org.snaker.engine.core.ManagerService">

<property name="access" ref="dbAccess"/>

</bean>

<bean id="queryService" class="org.snaker.engine.core.QueryService">

<property name="access" ref="dbAccess"/>

</bean>

<bean id="cacheManager" class="org.snaker.engine.cache.memory.MemoryCacheManager"/<

<!-- 流程事务配置 aop的pointcut中增加:or execution(* org.snaker.engine..*.*(..))-->

<tx:attributes>

<tx:method name="start*" propagation="REQUIRED"/>

<tx:method name="execute*" propagation="REQUIRED"/>

<tx:method name="save*" propagation="REQUIRED"/>

<tx:method name="delete*" propagation="REQUIRED" />

<tx:method name="update*" propagation="REQUIRED" />

<tx:method name="remove*" propagation="REQUIRED" />

<tx:method name="add*" propagation="REQUIRED" />

<tx:method name="assign*" propagation="REQUIRED" />

<tx:method name="create*" propagation="REQUIRED" />

<tx:method name="complete*" propagation="REQUIRED" />

<tx:method name="finish*" propagation="REQUIRED" />

<tx:method name="terminate*" propagation="REQUIRED" />

<tx:method name="take*" propagation="REQUIRED" />

<tx:method name="deploy*" propagation="REQUIRED" />

<tx:method name="redeploy*" propagation="REQUIRED" />

<tx:method name="undeploy*" propagation="REQUIRED" />

<tx:method name="withdrawTask*" propagation="REQUIRED" />

<tx:method name="native*" propagation="REQUIRED" />

<tx:method name="get*" propagation="REQUIRED" read-only="true" />

<tx:method name="find*" propagation="REQUIRED" read-only="true" />

<tx:method name="query*" propagation="REQUIRED" read-only="true" />

<tx:method name="search*" propagation="REQUIRED" read-only="true" />

<tx:method name="is*" propagation="REQUIRED" read-only="true" />

</tx:attributes>

1.1 SpringJdbc
 
     

<bean id="dbAccess" class="org.snaker.engine.access.spring.SpringJdbcAccess">

<property name="dataSource" ref="dataSource"/>

<property name="lobHandler" ref="lobHandler"/>

</bean>

<bean id="lobHandler" class="org.springframework.jdbc.support.lob.DefaultLobHandler" lazy-init="true" />

1.2 Hibernate

需要在sessionFactory的bean配置中增加mappingResources属性

 
     

<property name="mappingResources">

<list>

<value>hbm/snaker.task.hbm.xml</value>

<value>hbm/snaker.order.hbm.xml</value>

<value>hbm/snaker.ccorder.hbm.xml</value>

<value>hbm/snaker.process.hbm.xml</value>

<value>hbm/snaker.taskactor.hbm.xml</value>

<value>hbm/snaker.workitem.hbm.xml</value>

<value>hbm/snaker.surrogate.hbm.xml</value>

</list>

</property>

 
     

<bean id="dbAccess" class="org.snaker.engine.access.hibernate3.HibernateAccess">

<property name="sessionFactory" ref="sessionFactory"/>

</bean>

1.3 mybatis
 
     

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">

<property name="configLocation" value="classpath:mybatis.cfg.xml"/>

<property name="dataSource" ref="dataSource" />

<property name="typeAliasesPackage" value="org.snaker.engine.entity" />

</bean>

 
     

<bean id="dbAccess" class="org.snaker.engine.access.mybatis.MybatisAccess">

<property name="sqlSessionFactory" ref="sqlSessionFactory"/>

</bean>

mybatis.cfg.xml配置如下:

 
     

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>

<mappers>

<mapper resource="mapper/process.xml"/>

<mapper resource="mapper/order.xml"/>

<mapper resource="mapper/task.xml"/>

<mapper resource="mapper/task-actor.xml"/>

<mapper resource="mapper/hist-order.xml"/>

<mapper resource="mapper/hist-task.xml"/>

<mapper resource="mapper/hist-task-actor.xml"/>

<mapper resource="mapper/query.xml"/>

<mapper resource="mapper/hist-query.xml"/>

</mappers>

</configuration>

 
     

<bean id="dbAccess" class="org.snaker.engine.access.mybatis.MybatisAccess">

<property name="sqlSessionFactory" ref="sqlSessionFactory"/>

</bean>

2 API集成

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

import javax.sql.DataSource;

import org.snaker.engine.SnakerEngine;

import org.snaker.engine.access.jdbc.JdbcHelper;

import org.snaker.engine.cfg.Configuration;

public class SnakerHelper {

private static final SnakerEngine engine;

static {

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

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

DataSource dataSource = JdbcHelper.getDataSource();

engine = new Configuration()

.initAccessDBObject(dataSource)

.buildSnakerEngine();

}

public static SnakerEngine getEngine() {

return engine;

}

}

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

参数类型访问对象事务管理拦截器依赖库
DataSourceJdbcAccessDataSourceTransactionInterceptorcommons-dbcp-1.4.jar


commons-dbutils-1.5.jar


commons-pool-1.5.4.jar

SessionFactoryHibernateAccessHibernate3TransactionInterceptorhibernate-*-3.5.5.jar
SqlSessionFactoryMybatisAccessMybatisTransactionInterceptormybatis-3.2.3.jar

initAccessDBObject方法也可以不调用,而使用snaker.properties中的jdbc.*或hibernate.*来初始化DataSource、SessionFactory、SqlSessionFactory。但在实际的项目,还是建议使用该项目已有的访问对象

3 Jfinal集成

在Jfinal平台中集成Snaker,可按照如下步骤操作:

3.1 增加maven依赖或jar

snaker-jfinal的maven坐标为:

 
     

<dependency>

<groupId>com.github.snakerflow</groupId>

<artifactId>snaker-jfinal</artifactId>

<version>2.0.0</version>

</dependency>

如果非maven项目,则需要在百度网盘上下载snaker-jfinal-***.jr

3.2 配置插件SnakerPlugin

import org.snaker.jfinal.plugin.SnakerPlugin;

......

/**

* 配置插件

*/

public void configPlugin(Plugins me) {

// 配置C3p0数据库连接池插件

C3p0Plugin c3p0Plugin = new C3p0Plugin(getProperty("jdbcUrl"), getProperty("user"), getProperty("password").trim());

me.add(c3p0Plugin);

// 配置ActiveRecord插件

ActiveRecordPlugin arp = new ActiveRecordPlugin(c3p0Plugin);

me.add(arp);

arp.addMapping("blog", Blog.class);// 映射blog 表到 Blog模型

// 配置Snaker插件

SnakerPlugin snakerPlugin = new SnakerPlugin(c3p0Plugin);

me.add(snakerPlugin);

}

3.3 配置Jfinal方式的DBAccess、事务拦截器

在snaker.xml中配置数据库访问类路径:

 
     

<bean class="org.snaker.jfinal.access.JfinalAccess"/>

<bean class="org.snaker.jfinal.access.JfinalTransactionInterceptor"/>

3.4 使用
 
     

//直接从SnakerPlugin的静态方法getEngine获得引擎实现类,再调用其API进行操作即可

SnakerPlugin.getEngine().startInstanceByName("simple", null, "test", args);

© 2013-2015 Snaker 皖ICP备14011739号

var _bdhmProtocol = (("https:" == document.location.protocol) ? " https://" : " http://");

document.write(unescape("%3Cscript src='" + _bdhmProtocol + "hm.baidu.com/h.js%3Fc131f59e6a5a93f75a74790c7acad03e' type='text/javascript'%3E%3C/script%3E"));

一键复制

编辑

Web IDE

原始数据

按行查看

历史

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值