java workflow 教程_学习(史帝芬)osworkflow入门教程后的一些体会
可以这么说史帝芬的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入门教程后的一些体会相关推荐
- 电脑雕刻教程_湖南益阳3DMAX建模培训入门教程【仁厚教育】
湖南益阳3DMAX建模培训入门教程[仁厚教育] 仁厚教育学校拥有雄厚的师资力量,中心现有现有专教师多名,均为本科以上,具为扎实的理论基础和丰富的教育经验.所有员工都必须经过仁厚教育总部的岗位培训和考核 ...
- python十分钟教程_简洁的十分钟Python入门教程
[简介] Python是一种动态解释型的编程语言.Python可以在Windows.UNIX.MAC等多种操作系统上使用,也可以在Java..NET开发平台上使用. [特点] 1 Python使用C语 ...
- java netty教程_明哥教学 - Netty简单入门教程
作为一个正在Java路上摸爬滚打的小菜鸡,之前在项目中也用过Netty,也因为Netty报名阿里的中间件大赛,但终究功力太浅,最终不了了之,最近工作中又遇到了Netty的小姐妹Mina.此时楼主觉得N ...
- Java绘制海螺_彩铅画海螺步骤入门教程
漂亮的海螺怎么画?海螺是生活在海里的软体动物,海螺的种类很多,海螺壳可以做装饰品.相信很多小伙伴也和学画画网一样,曾经把海螺放在耳朵边上听大海的声音.那么今天跟着学画画网一起来学习用彩铅画一个漂亮的海 ...
- python pyqt教程_『开发技巧』PyQt5入门教程
PyQt5相关 PyQt5是一套来自Digia的Qt5应用框架和Python的粘合剂.支持Python2.x和Python3.x版本.本教程使用Pyhton 3.Qt库是最强大的GUI支持库的一种.P ...
- python asyncio教程_一份详细的asyncio入门教程
asyncio模块提供了使用协程构建并发应用的工具.它使用一种单线程单进程的的方式实现并发,应用的各个部分彼此合作, 可以显示的切换任务,一般会在程序阻塞I/O操作的时候发生上下文切换如等待读写文件, ...
- dbforge studio for mysql教程_【dbForge Studio for MySQL入门教程】如何创建和编辑查询
要创建查询: 1. 创建服务器连接. 2. 在" Start " 页上单击" SQL Development" ,然后单击" SQL Editor&q ...
- ZBrush教程_次时代作品“行尸矿工”制作教程
ZBrush教程_次时代作品"行尸矿工"制作教程 链接:https://pan.baidu.com/s/12BcANjJC_Q8SLgqTf2dyjw 密码:hd0c 这是在我工作 ...
- ok计数器使用教程_玩转透视表!Excel教程 Excel入门 Excel技巧 Excel快捷键 Excel学习!...
教程领到手,学习不用愁!领 ↑↑↑ 兴趣使然,以应用为导向,学以致用,学习效率更高!还有朋友不知道知识兔吗?知识兔就是下载考试资料|软件|教程|素材的网站,建议去搜索引擎搜索知识兔!知识兔是课程网站吗 ...
- lua菜鸟教程_初学者必看:Lua入门学习教程
Lua入门学习教程是本文要介绍的内容,主要是来对Lua入门的一个学习,Lua是一个被设计成用于扩展C/C++编程的轻量级脚本语言.不幸的是,网上很少有关于这个语言的在线教程.我主要通过阅读其源代码来了 ...
最新文章
- PCL从0到1|点云滤波之直通滤波与体素法滤波
- wps android x86,Android-x86 8.1-rc5 发布:PC 上的安卓系统
- NeurIPS 2019最佳论文出炉,今年增设“新方向奖”,微软华人学者获经典论文奖...
- Oracle优化07-分析及动态采样-动态采样
- mysql之触发器trigger
- bash shell函数中返回任意值的四种方法
- CSRF:跨站请求伪造
- 隆重推荐一本虚拟化方面的重量级图书
- 屏蔽×××S 2008报表导出格式
- Cocos2dx使用 TexturePacker导出的.plist
- lambdaQuery中EQ、NE、GT、LT、GE、LE的用法 (来自网络收集)
- ZigBee-CC2530单片机 - 低功耗运行
- wagtail 实现中英文
- 10.12 ——透明网桥,路由策略,准入技术
- 实习日记5:过滤器+批量删除+角色管理
- 三、pandas_datareader金融数据
- 团队管理的四大挑战——裁人篇
- 公交门户分析与统计系统
- 淘宝网店商品哪个时间段是最佳上架时间?
- 泛微e-cology和Oracle无法启动的解决方案
热门文章
- 计算机中英字幕精品教程合集
- 九度1538:GrassLand密码
- GNN从入门到精通 -- Graph Embedding (2)
- signature=530d9c5e7e99d796faa35352560aede4,Visual Detection of Volcanic Plumes
- 输入框常规测试数据用例设计
- pgsql装数卸数方案
- PuTTY使用复制粘贴
- 测试固态硬盘好坏的软件,电脑怎么测试ssd固态硬盘|电脑测试ssd固态硬盘的方法...
- sip php 来电,php - 如何在Twilio上传递原来的来电显示? (Sip域语音URL配置) - SO中文参考 - www.soinside.com...
- Apostrophe not preceded错误