2008-05-06
深入osworkflow的function
1.基本概念
osworkflow里使用自定义的function来执行业务代码,如步骤“拟稿”,当你执行提交操作的时候,可以自定义一个funciton用来保存稿件到业务数据库。
function分为pre-function(前置方法)和post-function(后置方法),前置函数在step和action之前执行, 后置方法在step和action之后执行。
2.如何使用
2.1 定义前置function
前置方法,放在action里results之前。
2.2 定义后置function
后置方法,放在action里results之后。
2.3 执行benshell
osworkflow支持在function里执行beanshell脚本。
2.4 自定义function
实现FunctionProvider接口来自定义自己的function.如下:
在function里你能够得到caller(调用者的名字),workflowID(工作流ID),actionId(操作ID)。
3.使用spring来管理function
osworkflow支持使用spring来管理function和condition的生命周期。
3.1 让spring来管理function
在bean.xml做如下配置
这样通过byName的注入方式,注入到你的AbstractWorkflow的bean里。
或者
AbstractWorkflow workflow = new BasicWorkflow(userName);
workflow.setResolver(workflowTypeResolver);
workflow.setConfiguration(osworkflowConfiguration);
3.2定义myFunction的bean
<bean id="myFunction" class="MyFunction" />
3.2配置bean的function
arg的name为bean.name
注意:<arg name="bean.name">myFunction</arg>必须放在同一行,因为myFunction旁边有空格的话,会找不到myFunction bean。
更多osworkflow讨论,请进入osworkflow组:http://osworkflow.group.javaeye.com/
osworkflow里使用自定义的function来执行业务代码,如步骤“拟稿”,当你执行提交操作的时候,可以自定义一个funciton用来保存稿件到业务数据库。
function分为pre-function(前置方法)和post-function(后置方法),前置函数在step和action之前执行, 后置方法在step和action之后执行。
2.如何使用
2.1 定义前置function
前置方法,放在action里results之前。
<action id="100" name="启动工作流">
<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>
2.2 定义后置function
后置方法,放在action里results之后。
<action id="100" name="启动工作流">
<results>
<unconditional-result old-status="Finished" status="Underway" step="1" owner="${caller}"/>
</results>
<post-functions>
<function type="class">
<arg name="class.name">com.opensymphony.workflow.util.Caller</arg>
</function>
</post-functions>
</action>
2.3 执行benshell
osworkflow支持在function里执行beanshell脚本。
<post-functions>
<function type="beanshell">
<arg name="script">
System.out.println("step is success!!!");
</arg>
</function>
</post-functions>
2.4 自定义function
实现FunctionProvider接口来自定义自己的function.如下:
public class MyFunction implements FunctionProvider {
@SuppressWarnings("unchecked")
public void execute(Map transientVars, Map args, PropertySet ps) throws WorkflowException {
}
}
在function里你能够得到caller(调用者的名字),workflowID(工作流ID),actionId(操作ID)。
WorkflowEntry workflowEntry = (WorkflowEntry) transientVars.get("entry");
long workflowId = workflowEntry.getId();
BasicWorkflowContext context = (BasicWorkflowContext) transientVars.get("context");
String caller = context.getCaller();
int actionId = (Integer) transientVars.get("actionId");
3.使用spring来管理function
osworkflow支持使用spring来管理function和condition的生命周期。
3.1 让spring来管理function
在bean.xml做如下配置
<!-- 将工作流的function和condition交给spring管理 --> <bean id="resolver" class="com.opensymphony.workflow.util.SpringTypeResolver"> </bean>
这样通过byName的注入方式,注入到你的AbstractWorkflow的bean里。
或者
AbstractWorkflow workflow = new BasicWorkflow(userName);
workflow.setResolver(workflowTypeResolver);
workflow.setConfiguration(osworkflowConfiguration);
3.2定义myFunction的bean
<bean id="myFunction" class="MyFunction" />
3.2配置bean的function
<post-functions>
<function type="spring">
<arg name="bean.name">myFunction</arg>
</function>
</post-functions>
arg的name为bean.name
注意:<arg name="bean.name">myFunction</arg>必须放在同一行,因为myFunction旁边有空格的话,会找不到myFunction bean。
更多osworkflow讨论,请进入osworkflow组:http://osworkflow.group.javaeye.com/
- 15:39
- 浏览 (250)
- 评论 (6)
- 分类: 工作流
- 进入论坛
- 发布在 osworkflow 圈子
- 相关推荐
评论
fantasy
2008-06-28
kathytingzi 写道
怎么实现会签阿,谢谢啦
增加两个conditon,
第一个:如果会签的人都签字了,进入下一个步骤。
第二个:如果还未有人未会签,则循环当前步骤。
amuj2ee
2008-06-27
工作流初学者:
参考:http://hi.baidu.com/vjame/blog/item/43a537d1719caf3d9b50279d.html
参考:http://hi.baidu.com/vjame/blog/item/43a537d1719caf3d9b50279d.html
kathytingzi
2008-06-27
怎么实现会签阿,谢谢啦
fantasy
2008-05-08
最近一直在研究osworkflow,
很想看看lllyq说的这本书。
很想看看lllyq说的这本书。
lllyq
2008-05-07
可以找这本书来看看
OSWorkflow: A guide for Java developers and architects to integrating open-source Business Process Management (Paperback)
http://www.amazon.com/OSWorkflow-developers-architects-integrating-open-source/dp/1847191525
OSWorkflow: A guide for Java developers and architects to integrating open-source Business Process Management (Paperback)
http://www.amazon.com/OSWorkflow-developers-architects-integrating-open-source/dp/1847191525
hspeed
2008-05-07
恩,不错,osworkflow与其他业务模块交互就靠funciton了
发表评论
提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则
- 浏览: 78623 次
- 性别:

- 来自: 北京

- 详细资料
搜索本博客
最近加入圈子
最新评论
-
J2EE开发注意事项
写绝对路径,在移动文件到其他文件夹的时候,不需要修改代码。
-- by fantasy -
J2EE开发注意事项
5.页面上的地址原则上写绝对路径。 是何道理呢? 相对路径先定位到根,然后定 ...
-- by nwangwei -
深入osworkflow的function
kathytingzi 写道怎么实现会签阿,谢谢啦 增加两个conditon, ...
-- by fantasy -
使用Filter控制页面的权限
恩,是面向切面。过滤器可以看成是一个切面。
-- by fantasy -
深入osworkflow的function
工作流初学者: 参考:http://hi.baidu.com/vjame/blo ...
-- by amuj2ee






评论排行榜