java workflow 教程_学习(史帝芬)osworkflow入门教程后的一些体会

可以这么说史帝芬的http://my.so-net.net.tw/idealist/OSWorkflow/osworkflow资料是目前华文osworkflow资料中最好的一份入门教程。去面的时候在mssql中中实践过这份入门资料,感觉非常顺利。但感觉按作者的顺序把教程中的例子跑完了,还不完全清楚的明白osworkflow的架构。前些在mysql5.0中重做一次,遇到了挺多问题,我通过一步一步的跟踪原代码调试终于把这些问题搞定。下图是把osworkflow所提供的mysql下的数据表的ER图:

1be74a573f5386ac85e941db8dd41d52.png

如果你的osworkflow持久化到mysql中你的osworkflow.xml文件内如必需按如下格式来写:

propertyset.xml文件格式如下:

class="com.opensymphony.module.propertyset.database.JDBCPropertySet">

workflows.xml文件格式如下:

osuser.xml文件格式如下:

os_user

os_group

os_membership

username

passwordhash

groupname

username

groupname

java:comp/env/jdbc/DefaultDS

os_user

os_group

os_membership

username

passwordhash

groupname

username

groupname

java:comp/env/jdbc/DefaultDS

os_user

os_group

os_membership

username

passwordhash

groupname

username

groupname

java:comp/env/jdbc/DefaultDS

请假列子的配置如下:

package com.pdw.wfbo;

import java.util.HashMap;

import java.util.Map;

import com.opensymphony.workflow.*;

import com.opensymphony.workflow.basic.BasicWorkflow;

import com.opensymphony.workflow.config.DefaultConfiguration;

public class LeaveWFBO {

/**

* 送出假单

* @param employee

* @return

*/

public long send(String employee) {

Workflow workflow=new BasicWorkflow("peidw");

DefaultConfiguration config=new DefaultConfiguration();

workflow.setConfiguration(config);

long workflowId=-1;

try {

workflowId=workflow.initialize("leave",0,null);//leave是workflows.xml里配置的工作流名称

workflow.doAction(workflowId,1,null);

}catch(Exception e) {

e.printStackTrace();

}

return workflowId;

}

/**

* 批假

* @param workflowId 工作流编号

* @param actionId  工作编号,2 准许,3 驳回

*/

public void allow(long workflowId,int actionId) {

Workflow workflow=new BasicWorkflow("peidw");

DefaultConfiguration config=new DefaultConfiguration();

workflow.setConfiguration(config);

try {

System.out.println("actionId->"+actionId);

System.out.println("workflowId->"+workflowId);

workflow.doAction(workflowId,actionId,null);

}catch(Exception e) {

e.printStackTrace();

}

}

}

这是上面的这个例子的一个说明

Qoo1.gif

看完第一支程式,相信讀者會有許多疑問,這些先就流程的設定做初步的介紹。首先,讀者應該注意到了,第一支程式的用到三個xml設定檔,沒錯,這三個是設定流程的設定檔。

osworkflow.xml:這個檔案是設定流程是否存在資料庫或存在記憶體,前面的內容是存在MS SQL Server的寫法。

leave.xml:請假流程寫在這個檔案,這也是osworkflow的重點之一。

workflows.xml:指定系統啟動時要載入那些流程。

這裡針對leave.xml做些說明…

initial-actions:每個流程都至少需定義一個initial-actions,這是流程的起點。

action:導致流程變動的動作,每個action都有個編號,且不能重複。

step:雖然它的名稱是步驟,似乎它會有動作? 其實將它視為流程位置可能比較恰當,osworkflow真正的動作在action發生。

result:執行動作後的結果,result有兩種conditional-result和unconditional-result,每個result一定有unconditional-result,當conditional-result的條件都不滿足時,就執行unconditional-result。

status:流程在某個action時的狀態。

old-status:流程執行某個action後的狀態。

caller:這是OSWorkflow的保留字,可取得呼叫此工作流的user,即Workflow workflow = new BasicWorkflow(caller); 在資料庫中會記錄於Table OS_HISTORYSTEP如下:

caller.jpg

記得在pre-functions加上如下設定…

com.opensymphony.workflow.util.Caller

posted on 2006-04-18 15:43 有猫相伴的日子 阅读(6024) 评论(4)  编辑  收藏 所属分类: workflow

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值