osworkflow学习笔记-标签<initial-actions>、<restrict-to>、beanshell、class
2012-12-06 10:03
651 查看
关键字:osworkflow 入门教程, 初体验,环境搭建,示例,笔记,用法,标签 含义 释义。。。。。。
打开osworkflow-2.8.0\src\webapp\WEB-INF\classes\example.xml
看看这些的标签:
1 initial-actions:
一组初始动作,在工作流实例被赋予任何状态之前执行,每個流程都至少需定義一個initial-actions,這是流程的起點,初始化步骤是一种特殊类型的步骤,它用来启动工作流。在一个工作流程开始前,它是没有状态,不处在任何一个步骤,用户必须采取某些动作才能开始这个流程。这些特殊步骤被定义在 <initial-actions>。
可以用来定义通用动作(common action)和全局动作(global action)。
我们再看看example.xml的 initial-actions里干了啥:
首先定义了一个约束restrict-to,约束里有两个AND
关系的条件,然后用pre-funcitons取出当前用户名,传给step1
。
2 condition type="beanshell"
:
在beanshell
表达式范围内中始终存在三个变量,entry、context和store。entry变量是一个实现了com.opensymphony.workflow.spi.WorkflowEntry接口的对象,它代表workflow实例。context变量是com.opensymphony.workflow.WorkflowContext类型的对象,它允许BeanShell方法回滚事务或决定调用者的名字。store变量是com.opensymphony.workflow.WorkflowStore类型的对象,它允许方法访问workflow底层的持久化存储区。
另外beanshell
是一种脚本语言,一种完全符合java语法的java脚本语言
我们再看看example.xml的
beanshell
里干了啥: 直接返回true,啥也没干,这里应该可以做一些稍复杂的判断
3 condition type="class"
:能够调用一些实现了com.opensymphony.workflow.FunctionProvider接口的
外部类,这个接口只有一个方法——execute,这个方法有三个参数transientVars, args和propertySet可用
,通过这三个参数能获取或编辑当前工作流里的很多信息。
<condition type="class">
<arg name="class.name">com.opensymphony.workflow.util.OSUserGroupCondition</arg>
<arg name="group">foos</arg>
</condition>
这是一个条件语句,意思是:判断当前执行改流程的用户在不在group组(foos是组的名字)中,是执行什么流程,不是执行什么流程。
参考:http://baixiaozhe.iteye.com/blog/753603
关于权限
http://baixiaozhe.iteye.com/blog/753587关于class
4 <pre-functions>:
在事情发生之前执行的函数和它相对应是post-functions就是在事情发生以后执行的。
这里是获取到当前用户名,并放到临时变量caller中。
5 unconditional-result
:
对于每一个动作,都需要存在一个无条件结果,叫做unconditional-result。这个结果只不过是一些指令,告诉OSWorkflow下一步要做什么。这一结果让组成工作流的状态机从一个状态流转到下一个状态。
<unconditional-result old-status="Finished" status="Underway" step="1" owner="${caller}"/>
大概意思就是这一步已经完事,已经不在是当前动作了
,所以上一步
的状态为Finished, 当前流程
状态为"办理中"即Underway,现在已经到step1去了,带过去的参数是ower,即当前用户
打开osworkflow-2.8.0\src\webapp\WEB-INF\classes\example.xml
看看这些的标签:
<initial-actions> <action id="100" name="Start Workflow"> <restrict-to> <conditions type="AND"> <condition type="beanshell"> <arg name="script">true</arg> </condition> <condition type="class"> <arg name="class.name">com.opensymphony.workflow.util.OSUserGroupCondition</arg> <arg name="group">foos</arg> </condition> </conditions> </restrict-to> <pre-functions> <function type="class"> <arg name="class.name">com.opensymphony.workflow.util.Caller</arg> </function> </pre-functions> <results> <unconditional-result old-status="Finished" status="Underway" step="1" owner="${caller}"/> </results> </action> </initial-actions>
1 initial-actions:
一组初始动作,在工作流实例被赋予任何状态之前执行,每個流程都至少需定義一個initial-actions,這是流程的起點,初始化步骤是一种特殊类型的步骤,它用来启动工作流。在一个工作流程开始前,它是没有状态,不处在任何一个步骤,用户必须采取某些动作才能开始这个流程。这些特殊步骤被定义在 <initial-actions>。
可以用来定义通用动作(common action)和全局动作(global action)。
我们再看看example.xml的 initial-actions里干了啥:
首先定义了一个约束restrict-to,约束里有两个AND
关系的条件,然后用pre-funcitons取出当前用户名,传给step1
。
2 condition type="beanshell"
:
在beanshell
表达式范围内中始终存在三个变量,entry、context和store。entry变量是一个实现了com.opensymphony.workflow.spi.WorkflowEntry接口的对象,它代表workflow实例。context变量是com.opensymphony.workflow.WorkflowContext类型的对象,它允许BeanShell方法回滚事务或决定调用者的名字。store变量是com.opensymphony.workflow.WorkflowStore类型的对象,它允许方法访问workflow底层的持久化存储区。
另外beanshell
是一种脚本语言,一种完全符合java语法的java脚本语言
我们再看看example.xml的
beanshell
里干了啥: 直接返回true,啥也没干,这里应该可以做一些稍复杂的判断
3 condition type="class"
:能够调用一些实现了com.opensymphony.workflow.FunctionProvider接口的
外部类,这个接口只有一个方法——execute,这个方法有三个参数transientVars, args和propertySet可用
,通过这三个参数能获取或编辑当前工作流里的很多信息。
<condition type="class">
<arg name="class.name">com.opensymphony.workflow.util.OSUserGroupCondition</arg>
<arg name="group">foos</arg>
</condition>
这是一个条件语句,意思是:判断当前执行改流程的用户在不在group组(foos是组的名字)中,是执行什么流程,不是执行什么流程。
参考:http://baixiaozhe.iteye.com/blog/753603
关于权限
http://baixiaozhe.iteye.com/blog/753587关于class
4 <pre-functions>:
在事情发生之前执行的函数和它相对应是post-functions就是在事情发生以后执行的。
这里是获取到当前用户名,并放到临时变量caller中。
5 unconditional-result
:
对于每一个动作,都需要存在一个无条件结果,叫做unconditional-result。这个结果只不过是一些指令,告诉OSWorkflow下一步要做什么。这一结果让组成工作流的状态机从一个状态流转到下一个状态。
<unconditional-result old-status="Finished" status="Underway" step="1" owner="${caller}"/>
大概意思就是这一步已经完事,已经不在是当前动作了
,所以上一步
的状态为Finished, 当前流程
状态为"办理中"即Underway,现在已经到step1去了,带过去的参数是ower,即当前用户
相关文章推荐
- CentOS学习笔记1:< yum提示another app is currently holding the yum lock;waiting for it to exit >
- hadoop学习笔记之<Call From localhost/127.0.0.1 to localhost:9000 failed...>
- struts2的<s:iterator>标签 遇到的问题:java.lang.ClassCastException:cannot be cast to java.lang.String
- struts学习笔记 [JSTL]<c:forEach>标签的使用
- HTML && CSS 学习笔记(4)HTML <span> 标签(关键词:HTML/span)
- jstl <fmt:formatNumber>标签学习笔记
- [原]java专业程序代写(qq:928900200),学习笔记之基础入门<JDBC>(二十四)
- Java笔记7 Java基础加强<5>ClassLoader
- [原]java专业程序代写(qq:928900200),学习笔记之基础入门<tomcat>(二十五)
- R语言学习笔记之<字符串操作>
- ejb 学习:遇到错误:LazyInitializationException.<init> : failed to lazily initialize a collection of role:
- Data Types in the Kernel <LDD3 学习笔记>
- Scala学习笔记<基本数据结构>
- RT-Thread 学习笔记(十一)--- 开启基于RTGUI的LCD显示功能(1)<LCD驱动接口移植>
- 决策树学习笔记整理<分享>
- html系统学习之一<基础知识,标签,元素>
- [原]java专业程序代写(qq:928900200),学习笔记之基础入门<数据库连接配置>(二十八)
- cocos2dx lua学习笔记 <一> quick 3.5把自定义C++类绑定到lua
- <笔记> HTML 学习——1
- Adnroid学习笔记:Intent与<intent-filter>的使用