|
该帖已经被评为良好帖
|
|
|---|---|
| 作者 | 正文 |
|
时间:2008-06-19
仿照OSWORKFLOW写了一个简单的工作流引擎,支持简单流程,分支,合并等操作。 工作流所采用的数据库如下: create table wf_instances( id integer primary key, name, filename, status --CREATED, ACTIVATED, SUSPENDED, KILLED 和 COMPLETED ) create table wf_curr_steps( id integer primary key, wf_instance_id integer, step integer, action integer, status, owner, started_at datetime, finished_at datetime, caller ) create table wf_properties( id integer primary key, wf_instance_id integer, item_key, item_value ) 采用YAML来描述流程定义,比如一个请假流程的定义如下: workflow:
init-actions:
1:
name: 开始
results:
-
step: 1
status: 在填写
owner: @wf_params['caller']
steps:
1:
name: 填写请假单
actions:
1:
name: 修改
params:
page-name: edit_leave
results:
-
step: 1
status: 在填写
owner: @wf_params['caller']
2:
name: 提交申请
params:
page-name: apply_leave
results:
-
condition: @wf_params['days'].to_i <= 3
step: 2
status: 待审核
owner: 部门经理
-
step: 3
status: 待审核
owner: 公司领导
2:
name: 部门经理审核
actions:
1:
name: 同意
params:
page-name: verify_leave
results:
-
step: 4
status: 待归档
owner: 资料员
2:
name: 不同意
params:
page-name: verify_leave
results:
-
step: 1
status: 不同意
owner: @wf_params['applier']
3:
name: 公司领导审核
actions:
1:
name: 同意
params:
page-name: verify_leave
results:
-
step: 4
status: 待归档
owner: 资料员
2:
name: 不同意
params:
page-name: verify_leave
results:
-
step: 1
status: 不同意
owner: @wf_params['applier']
4:
name: 归档
actions:
1:
name: 归档处理
condition: curr_instance_step(4).status=='待归档'
params:
page-name: verify_leave
results:
-
step: 4
status: 已归档
owner: 资料员
使用的基本方法介绍如下: 1、建立工作流实例: @wf = Workflow.new(caller)
@wf_id = @wf.create('请假流程.yml', 2, nil)
2、执行一个ACTION: @wf.do_action(@wf_id,step_id,action_id,wf_params) 3、获取当前可执行的动作: @wf.available_actions(@wf_id,wf_params) 4、获取当前实例的全部全部STEP全部: @wf.curr_steps(@wf_id) 5、删除工作流实例: @wf.destroy(@wf_id)
声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
时间:2008-06-19
很好,继续努力,成为ruby的第一个开源工作流
|
|
| 返回顶楼 | |
|
时间:2008-06-19
redmine算不算是个开源的工作流呢?
|
|
| 返回顶楼 | |
|
时间:2008-06-19
太粗糙了吧, 可以参考oswf等其他,结合中国国情的wf。
写出想法, 大家共同参与。 我想应该是很有前途的。 |
|
| 返回顶楼 | |
|
时间:2008-06-20
呵呵,楼主精神可嘉!
虽然workflow原理不是很复杂,可感觉做一个成熟的workflow真的很难,需要投入巨大的研发力量。一个成熟的workflow产品至少要包含流程设计(一般都是支持傻瓜式的图形操作),Role管理,Form设计,业务逻辑控制模块等,用户管理模块。 我现在的工作就是做基于工作流进行二次开发。有成熟的workflow平台支持,感觉开发e-workflow类的电子流程系统效率还是挺高的。 目前我使用的是adobe workflow.公司花了不少钱买的。功能很强,就是开发工具傻了点,不过也没办法,产品好像都是这样。 |
|
| 返回顶楼 | |
|
时间:2008-06-21
写的太粗糙,?Action定义怎么配置的?
|
|
| 返回顶楼 | |
|
时间:2008-06-21
Rocwo 写道 呵呵,楼主精神可嘉!
虽然workflow原理不是很复杂,可感觉做一个成熟的workflow真的很难,需要投入巨大的研发力量。一个成熟的workflow产品至少要包含流程设计(一般都是支持傻瓜式的图形操作),Role管理,Form设计,业务逻辑控制模块等,用户管理模块。 我现在的工作就是做基于工作流进行二次开发。有成熟的workflow平台支持,感觉开发e-workflow类的电子流程系统效率还是挺高的。 目前我使用的是adobe workflow.公司花了不少钱买的。功能很强,就是开发工具傻了点,不过也没办法,产品好像都是这样。 Role管理,业务逻辑控制模块等,用户管理模块。这些东西根本不属于工作流系统本身应该有的,因为不用工作流也会需要这些东西,工作流只是和这些东西有接口。 Form设计,也就是说工作单的开发吧,谁会用一个专用Form设计工具去开发工作单呢?更多的程序员还是用eclipse,vs等通用的开发工具开工作单。 |
|
| 返回顶楼 | |
|
时间:2008-06-21
ltian 写道 Rocwo 写道 呵呵,楼主精神可嘉!
虽然workflow原理不是很复杂,可感觉做一个成熟的workflow真的很难,需要投入巨大的研发力量。一个成熟的workflow产品至少要包含流程设计(一般都是支持傻瓜式的图形操作),Role管理,Form设计,业务逻辑控制模块等,用户管理模块。 我现在的工作就是做基于工作流进行二次开发。有成熟的workflow平台支持,感觉开发e-workflow类的电子流程系统效率还是挺高的。 目前我使用的是adobe workflow.公司花了不少钱买的。功能很强,就是开发工具傻了点,不过也没办法,产品好像都是这样。 Role管理,业务逻辑控制模块等,用户管理模块。这些东西根本不属于工作流系统本身应该有的,因为不用工作流也会需要这些东西,工作流只是和这些东西有接口。 Form设计,也就是说工作单的开发吧,谁会用一个专用Form设计工具去开发工作单呢?更多的程序员还是用eclipse,vs等通用的开发工具开工作单。 楼上很正确, 工作流最重要的是引擎部分, 其他的给个接口就行了。 还有, 没必要用jaml吧? 用ruby 做dsl不是很好么? |
|
| 返回顶楼 | |
|
时间:2008-06-21
ltian 写道 Form设计,也就是说工作单的开发吧,谁会用一个专用Form设计工具去开发工作单呢?更多的程序员还是用eclipse,vs等通用的开发工具开工作单。 现在有些工作流产品带表单设计的,自定义表单+自定义流程,这是一大卖点。 |
|
| 返回顶楼 | |
|
时间:2008-06-23
以前用过actionflow,rails的一个插件
|
|
| 返回顶楼 | |







