`
Dead_knight
  • 浏览: 1200941 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
博客专栏
752c8642-b795-3fe6-946e-a4e845bffdec
Spring Securi...
浏览量:240190
33caa84e-18a6-3036-a82b-6e2106a4de63
clojure专题
浏览量:48914
E17ca077-44df-3816-a3fe-471c43f6e1e5
WebLogic11g
浏览量:236872
社区版块
存档分类
最新评论

开源流程引擎Snaker

阅读更多
Snaker工作流引擎本着轻量、简单、灵巧理念设计。
一、轻量:
1、可以使用JDBC+Dbutils独立运行,也可以依赖主流的ioc、orm框架运行
2、整个jar占用170K

二、简单:
1、流程组件简单。

这方面纠结很久,像jbpm包括(State/Hql/Sql/Jms/Custom/Java/Script等)真正用到的有几个呢?很多组件仅仅是附属品,但是会增加学习成本
2、表设计简单(目前只有7张表)
http://git.oschina.net/yuqs/snaker/wikis/DataBase
实际上,如果各种数据库对表分区支持较好,可去除历史记录的3张表。
3、上手简单
只需要根据实际的项目环境配置snaker.properties/snaker.xml两个文件即可

三、灵巧:
1、扩展性:暴露较多的可扩展接口,甚至是核心的流程组件(只需在snaker.xml中增加bean的配置即可)。
2、数据持久层面支持jdbc+dbutils、mybatis、hibernate、springjdbc。目前支持的数据库有oracle、mysql、sqlserver。

当然,基于以上三点设计肯定会损失流程引擎的一些特性。所以Snaker目前主要针对中小型项目需要增加工作流特性的系统。

如果,你的项目中部分业务需要使用工作流而觉得JBPM、ACTIVITI开发成本太高时,可考虑Snaker!


项目包括三部分:
Snaker:流程引擎,负责流程的调度与执行
Snaker-Designer:流程设计器(基于Eclipse RCP设计的插件)
Snaker-Web:使用SpringMVC、Shiro、Spring、Hibernate整合的一套案例平台
数据库表设计:
http://git.oschina.net/yuqs/snaker/wikis/DataBase
入门手册:
http://git.oschina.net/yuqs/snaker/wikis/QuickStart

支持以下流程模型:<br>
1、简单直流:


2、选择分支:


3、并行:


4、子流程串行:


5、子流程并行:


6、请假流程的案例:


目前流程设计器的图形元素使用JBPM-JPDL的元素(个人觉得图标比较美观),如下图:



具体请参考:
wiki:http://git.oschina.net/yuqs/snaker/wikis/home
source:http://git.oschina.net/yuqs/snaker
25
1
分享到:
评论
21 楼 zack 2013-11-19  
目前的文档太简单了,是否可以提供详细的API文档。一个好项目文档也很重要。谢谢
20 楼 Dead_knight 2013-11-19  
9344187 写道
请问snaker支持集群部署吗,另外怎么和现有的用户组织机构表整合起来呢

snaker有三个子项目:
snaker:流程引擎
snaker-designer:流程设计器(eclipse插件)
snaker-web:整合流程引擎的web应用

目前我正在完善snaker-web子项目,该子项目使用springmvc+shiro+hibernate3+spring3框架搭建。其中也包括了项目的基础安全部分(用户、部门、角色、权限、资源、动态菜单)、数据字典等。
目前我正在整合两个流程案例,请您继续关注。

与现有的用户组织机构不需要整合,你只需要把你任务的处理者通过args传递进去就行了。比如说我想给用户1000,部门2000,角色3000分配task1,那么只需要这么做:
args.put("task.assignee",new Long[]{1000L,2000L,3000L},流程引擎会自动把这三个参与者存到wf_task_actor表中。

流程引擎是否可以部署在集群上,具体要看是否用到了缓存。snaker使用ModelContainer缓存所有的流程定义,所以暂时不支持集群。后续我再增加集群同步的功能,谢谢您的宝贵意见。
19 楼 9344187 2013-11-19  
请问snaker支持集群部署吗,另外怎么和现有的用户组织机构表整合起来呢
18 楼 Dead_knight 2013-11-19  
9344187 写道
任务的分派是通过回调java代码,还是通过脚本呢

通过脚本的方式。java代码回调方式不实用。
可以参考test包下面的测试用例。任务模型TaskModel有个属性:assignee,用来定义任务分派的变量名称,比如说,该属性值为task1.assignee
那么在调用executeTask方法时,args参数列表可传递值,如下:
args.put("task1.assignee", value)
这里的value支持Long、Long[]、String三种类型,具体任务分派时,会根据value类型转换为实际的参与者(参与者可以为用户Id,部门Id、角色Id)
17 楼 9344187 2013-11-19  
任务的分派是通过回调java代码,还是通过脚本呢
16 楼 Dead_knight 2013-11-19  
phoenix_85 写道
eclipse3.7下,流程设计器不能用?不知道是我的环境问题还是该插件不支持?

我之前是对eclipse4以后的版本做了测试是可以的。myeclipse9的也行。3.7的版本刚刚试了下,也不行,如果版本不兼容,我就对每个版本打jar包吧
15 楼 phoenix_85 2013-11-19  
eclipse3.7下,流程设计器不能用?不知道是我的环境问题还是该插件不支持?
14 楼 Dead_knight 2013-11-19  
zack 写道
Dead_knight 写道
zack 写道
楼主,参看一下客户端的流程定义工具http://www.iteye.com/topic/1130290,是否考虑一下把这两个集成起来呢?谢谢

非常感谢您的建议。我最近确实在考虑这个,不过也有顾虑的地方:客户端流程定义工具主要使用者是谁呢?如果是业务人员使用的,我觉得这个工具基本上是个摆设,如果是开发人员使用的,那确实有必要增加。
你发的这个帖子我之前也看过,实际用起来可能有问题。我会选择一个比较好的工具整合到snaker-web里面去的。

很多时候使用人员也需要知道业务流程的是怎么样定义的,相关流程当前执行的状态是怎么样,这时就可以派上用处。另外,开发人员也经常会需要做一些小修改或者设置新的简单流程时,也不想重新发布程序,这时也可以派上用处,所以提供一个使用模式下的图形界面还是很有必要的。谢谢,这只是我个人的看法和想法。

有道理,activiti使用signavio做web的设计器,我会多参考几个,然后再选择一个比较好的设计器进行整合,希望您继续关注。
13 楼 Dead_knight 2013-11-19  
phoenix_85 写道
好啊,楼主,我正需要一个开源,轻量的 流程引擎,没有想到就来了,

谢谢支持,希望在使用过程中能够提出宝贵意见
12 楼 zack 2013-11-19  
Dead_knight 写道
zack 写道
楼主,参看一下客户端的流程定义工具http://www.iteye.com/topic/1130290,是否考虑一下把这两个集成起来呢?谢谢

非常感谢您的建议。我最近确实在考虑这个,不过也有顾虑的地方:客户端流程定义工具主要使用者是谁呢?如果是业务人员使用的,我觉得这个工具基本上是个摆设,如果是开发人员使用的,那确实有必要增加。
你发的这个帖子我之前也看过,实际用起来可能有问题。我会选择一个比较好的工具整合到snaker-web里面去的。

很多时候使用人员也需要知道业务流程的是怎么样定义的,相关流程当前执行的状态是怎么样,这时就可以派上用处。另外,开发人员也经常会需要做一些小修改或者设置新的简单流程时,也不想重新发布程序,这时也可以派上用处,所以提供一个使用模式下的图形界面还是很有必要的。谢谢,这只是我个人的看法和想法。
11 楼 phoenix_85 2013-11-19  
好啊,楼主,我正需要一个开源,轻量的 流程引擎,没有想到就来了,
10 楼 Dead_knight 2013-11-19  
zack 写道
楼主,参看一下客户端的流程定义工具http://www.iteye.com/topic/1130290,是否考虑一下把这两个集成起来呢?谢谢

非常感谢您的建议。我最近确实在考虑这个,不过也有顾虑的地方:客户端流程定义工具主要使用者是谁呢?如果是业务人员使用的,我觉得这个工具基本上是个摆设,如果是开发人员使用的,那确实有必要增加。
你发的这个帖子我之前也看过,实际用起来可能有问题。我会选择一个比较好的工具整合到snaker-web里面去的。
9 楼 zack 2013-11-19  
楼主,参看一下客户端的流程定义工具http://www.iteye.com/topic/1130290,是否考虑一下把这两个集成起来呢?谢谢
8 楼 Dead_knight 2013-11-19  
asialee 写道
对了,顺便问一句,这个项目lz是基于什么目的开发的?

目的有以下两点点:
1、现有开源的流程引擎相对复杂,整合起来也比较麻烦,很多公司都是做深入研究后二次开发的,但是小的企业,小项目,没必要花费这么大精力、成本在这上面
2、很多流程引擎都在往bpmn上面靠,越靠就越复杂,但是有些项目就那么几个模块涉及工作流,而且都是单系统流转,很多流程引擎的特性,根本就用不上。
7 楼 Dead_knight 2013-11-19  
mmhotsky 写道
刚下载了源码导入Eclipse中,发现snaker-web的LeaveService类报错,snakerEngine.startProcessById和executeByTaskId函数未定义,是SnakerEngine的API有变动吗?是不是应该调用startInstanceById和executeTask这2个函数?

web项目,我正在改造。打算提供两个案例。
很抱歉,这周会提交经过测试的案例上去
6 楼 mmhotsky 2013-11-19  
刚下载了源码导入Eclipse中,发现snaker-web的LeaveService类报错,snakerEngine.startProcessById和executeByTaskId函数未定义,是SnakerEngine的API有变动吗?是不是应该调用startInstanceById和executeTask这2个函数?
5 楼 hanjiangit 2013-11-19  
牛逼,不错
4 楼 asialee 2013-11-19  
对了,顺便问一句,这个项目lz是基于什么目的开发的?
3 楼 asialee 2013-11-19  
不错,我也是搞工作流的,感觉这个东西,在中小型项目里面如果作为流程引擎已经完全够用了
2 楼 Dead_knight 2013-11-19  
arong 写道
不错,学习一下。

互相学习。也欢迎提出宝贵意见。

相关推荐

    Java开源工作流引擎snaker

    总的来说,Java开源工作流引擎Snaker1.01为Java开发者提供了一套完整的解决方案,用于构建具有流程管理能力的应用系统。其非Maven版本降低了依赖性,使得部署和使用更加便捷。开发者可以根据需求选择合适的集成方式...

    工作流引擎 Snaker

    工作流引擎Snaker是一款强大的流程自动化工具,专为企业的业务流程管理设计。它提供了一种灵活、可扩展的方式来实现各种复杂的工作流程,从而提高工作效率,规范业务操作,并确保企业内部的流程符合法规要求。在本篇...

    snakerflow开源轻量流程引擎服务端

    SnakerFlow是一款开源轻量级流程引擎,专为简化企业工作流程管理而设计。它提供了服务端和客户端的完整解决方案,使得开发者可以快速构建出符合业务需求的工作流系统。在这个项目中,我们只关注服务端部分,即...

    流程框架snaker,用于 提交-审核-撤销-回滚

    2. **工作流引擎**:Snaker的核心是其强大的工作流引擎,能够解析流程定义并执行相应的操作。引擎负责任务的分配、流转、撤销和回滚,确保流程按照预设的规则运行。 3. **任务提交与审批**:在提交环节,Snaker提供...

    snakerflow开源轻量流程引擎客户端

    Snakerflow是一款开源的轻量级流程引擎,它专注于流程的建模、执行和监控,为企业或项目提供灵活的工作流解决方案。在这个特定的资源中,我们关注的是Snakerflow的客户端部分,它允许用户与流程引擎进行交互,例如...

    借助Jfinal的极速开发框架与Snaker流程引擎搭建一套基础应用平台

    本文将深入探讨如何利用Jfinal的极速开发框架与Snaker流程引擎来搭建一套基础应用平台。 首先,让我们了解Jfinal。Jfinal是一个基于Java的轻量级Web开发框架,它采用了MVC(Model-View-Controller)设计模式,以...

    snaker 工作流引擎

    Snaker工作流引擎是一款针对Java平台设计的开源工作流系统,它的核心目标是提供一个轻量级、易用且灵活的工作流解决方案。这个引擎不仅适用于企业级应用,也适合小型项目,使得开发者能够快速地在应用程序中集成工作...

    snaker工作流引擎实例

    Snaker是一个基于Java的开源工作流引擎,适用于企业应用中常见的业务流程。本着轻量、简单、灵巧理念设计,定位于简单集成,多环境支持 轻量:核心代码行数大约7000行,强大的扩展性,支持Spring、Jfinal、Nutz...

    基于开源SnakerFlow工作流引擎,将其和springboot进行整合成为一个能够快速工程应用的轻量级工作流引擎组件.zip

    4. **配置SnakerFlow**:编写SnakerFlow的相关配置,例如流程引擎的初始化、事务配置等。 5. **创建流程定义**:使用SnakerFlow提供的XML或图形化工具定义业务流程。 6. **编写业务代码**:根据流程定义,使用...

    snaker-workflow源码加配置文件

    通过研究这些源码和配置文件,开发者可以了解Snaker Workflow的内部实现,比如流程实例是如何创建和执行的,任务是如何分配和完成的,以及如何扩展流程引擎来满足特定业务需求。这对于提高开发效率和优化流程管理...

    工作流 开源 snake

    - 创建数据库`snaker`,并执行`snaker-mysql.sql`来初始化流程引擎表。 - `init-data.sql`用于启动应用后的数据初始化。 2. **启动示例应用** - 用户名/密码: `admin/123456` 或 `test/123456` 3. **发布测试...

    jfaker.zip

    其次,Snaker则是Jfaker中的另一个重要组件,是一个流程引擎,专门用于处理工作流相关的需求。Snaker提供了模型驱动的设计方式,支持BPMN 2.0标准,具备图形化的流程设计工具,使得非技术人员也能理解并参与到流程...

    ECP客户管理及进销存系统 v1.0

    该系统采用了一系列成熟的开源技术,如Java框架jfinal、组件化框架avalon、前端UI库bootstrap、数据网格组件jqGrid以及流程引擎snaker工作流,实现了高效、稳定且灵活的业务处理能力。 1. **jfinal框架**:jfinal是...

    ECP客户管理及进销存系统-其他

    在ECP系统中,Snaker工作流引擎使得企业能够自定义和执行各种复杂的业务流程,如销售订单审批、采购申请等,从而提高业务流程的自动化程度和效率。 此外,ECP系统还强调支持多企业使用,这意味着系统具有良好的权限...

Global site tag (gtag.js) - Google Analytics