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

如果你的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();

}

}

}

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

看完第一支程式,相信讀者會有許多疑問,這些先就流程的設定做初步的介紹。首先,讀者應該注意到了,第一支程式的用到三個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如下:

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

com.opensymphony.workflow.util.Caller

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

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

  1. 电脑雕刻教程_湖南益阳3DMAX建模培训入门教程【仁厚教育】

    湖南益阳3DMAX建模培训入门教程[仁厚教育] 仁厚教育学校拥有雄厚的师资力量,中心现有现有专教师多名,均为本科以上,具为扎实的理论基础和丰富的教育经验.所有员工都必须经过仁厚教育总部的岗位培训和考核 ...

  2. python十分钟教程_简洁的十分钟Python入门教程

    [简介] Python是一种动态解释型的编程语言.Python可以在Windows.UNIX.MAC等多种操作系统上使用,也可以在Java..NET开发平台上使用. [特点] 1 Python使用C语 ...

  3. java netty教程_明哥教学 - Netty简单入门教程

    作为一个正在Java路上摸爬滚打的小菜鸡,之前在项目中也用过Netty,也因为Netty报名阿里的中间件大赛,但终究功力太浅,最终不了了之,最近工作中又遇到了Netty的小姐妹Mina.此时楼主觉得N ...

  4. Java绘制海螺_彩铅画海螺步骤入门教程

    漂亮的海螺怎么画?海螺是生活在海里的软体动物,海螺的种类很多,海螺壳可以做装饰品.相信很多小伙伴也和学画画网一样,曾经把海螺放在耳朵边上听大海的声音.那么今天跟着学画画网一起来学习用彩铅画一个漂亮的海 ...

  5. python pyqt教程_『开发技巧』PyQt5入门教程

    PyQt5相关 PyQt5是一套来自Digia的Qt5应用框架和Python的粘合剂.支持Python2.x和Python3.x版本.本教程使用Pyhton 3.Qt库是最强大的GUI支持库的一种.P ...

  6. python asyncio教程_一份详细的asyncio入门教程

    asyncio模块提供了使用协程构建并发应用的工具.它使用一种单线程单进程的的方式实现并发,应用的各个部分彼此合作, 可以显示的切换任务,一般会在程序阻塞I/O操作的时候发生上下文切换如等待读写文件, ...

  7. dbforge studio for mysql教程_【dbForge Studio for MySQL入门教程】如何创建和编辑查询

    要创建查询: 1. 创建服务器连接. 2. 在" Start " 页上单击" SQL Development" ,然后单击" SQL Editor&q ...

  8. ZBrush教程_次时代作品“行尸矿工”制作教程

    ZBrush教程_次时代作品"行尸矿工"制作教程 链接:https://pan.baidu.com/s/12BcANjJC_Q8SLgqTf2dyjw 密码:hd0c 这是在我工作 ...

  9. ok计数器使用教程_玩转透视表!Excel教程 Excel入门 Excel技巧 Excel快捷键 Excel学习!...

    教程领到手,学习不用愁!领 ↑↑↑ 兴趣使然,以应用为导向,学以致用,学习效率更高!还有朋友不知道知识兔吗?知识兔就是下载考试资料|软件|教程|素材的网站,建议去搜索引擎搜索知识兔!知识兔是课程网站吗 ...

  10. lua菜鸟教程_初学者必看:Lua入门学习教程

    Lua入门学习教程是本文要介绍的内容,主要是来对Lua入门的一个学习,Lua是一个被设计成用于扩展C/C++编程的轻量级脚本语言.不幸的是,网上很少有关于这个语言的在线教程.我主要通过阅读其源代码来了 ...

最新文章

  1. PCL从0到1|点云滤波之直通滤波与体素法滤波
  2. wps android x86,Android-x86 8.1-rc5 发布:PC 上的安卓系统
  3. NeurIPS 2019最佳论文出炉,今年增设“新方向奖”,微软华人学者获经典论文奖...
  4. Oracle优化07-分析及动态采样-动态采样
  5. mysql之触发器trigger
  6. bash shell函数中返回任意值的四种方法
  7. CSRF:跨站请求伪造
  8. 隆重推荐一本虚拟化方面的重量级图书
  9. 屏蔽×××S 2008报表导出格式
  10. Cocos2dx使用 TexturePacker导出的.plist
  11. lambdaQuery中EQ、NE、GT、LT、GE、LE的用法 (来自网络收集)
  12. ZigBee-CC2530单片机 - 低功耗运行
  13. wagtail 实现中英文
  14. 10.12 ——透明网桥,路由策略,准入技术
  15. 实习日记5:过滤器+批量删除+角色管理
  16. 三、pandas_datareader金融数据
  17. 团队管理的四大挑战——裁人篇
  18. 公交门户分析与统计系统
  19. 淘宝网店商品哪个时间段是最佳上架时间?
  20. 泛微e-cology和Oracle无法启动的解决方案

热门文章

  1. 计算机中英字幕精品教程合集
  2. 九度1538:GrassLand密码
  3. GNN从入门到精通 -- Graph Embedding (2)
  4. signature=530d9c5e7e99d796faa35352560aede4,Visual Detection of Volcanic Plumes
  5. 输入框常规测试数据用例设计
  6. pgsql装数卸数方案
  7. PuTTY使用复制粘贴
  8. 测试固态硬盘好坏的软件,电脑怎么测试ssd固态硬盘|电脑测试ssd固态硬盘的方法...
  9. sip php 来电,php - 如何在Twilio上传递原来的来电显示? (Sip域语音URL配置) - SO中文参考 - www.soinside.com...
  10. Apostrophe not preceded错误