`
- 浏览:
981 次
- 性别:
- 来自:
北京
-
一、怎样取得当前步骤的信息
Workflow wf = new BasicWorkflow(username);
Step step = (step)wf.getCurrentSteps(id).iterator().next();
这样就得到了当前需要执行的步骤,返回的是一个step,step可以得到的信息一般可用的是getCaller(),得到当前的执行者,getEntryId(),得到工作流的id,这个不理解,既然得到step需要传入workflow的id,为什么还需要此方法?
如果需要得到步骤的描述信息,则需要得到StepDescriptor:
1.先获得WorkflowDescriptor
WorkflowDescriptor wd = wf.getWorkflowDescriptor(wf.getWorkflowName(id));
2.获得StepDescriptor
StepDescriptor sd = wd.getStep(stepId);//这里的stepId可以用step.getStepId()来取得
3.StepDescriptor可以得到的信息
StepDescriptor可以得到在xml中配置的描述信息,比如step的名称,sd.getName();
二、怎么取得可执行动作的信息
估计猜也猜得到了,取得ActionDescriptor;
没错,先用StepDescriptor取得ActionDescriptor,这样就能获取执行动作的名称等信息。
所以在osworkflow中可以写一些常用的Util方法,可是也许是osworkflow的设计问题,每个Util方法都得重复很多代码,比如重复得获取WorkflowDescriptor.StepDescriptor等等。。。。
简单例子如下:
public static List<Action> getActionNames(long id,String username){
List<Action> actions = new ArrayList<Action>();
List<String> names = new ArrayList<String>();
Workflow wf = new BasicWorkflow(username);
WorkflowDescriptor wd = wf.getWorkflowDescriptor(wf.getWorkflowName(id));
Step step = (Step) wf.getCurrentSteps(id).iterator().next();
StepDescriptor sd = wd.getStep(step.getStepId());
List<ActionDescriptor> ads = sd.getActions();
for(ActionDescriptor a:ads){
Action action = new Action();
action.setActionId(a.getId());
action.setActionName(a.getName());
actions.add(action);
}
return actions;
}
获得当前步骤下能执行的action的名称,这一般是在页面上用于显示的,比如审批同意还是驳回,并不是自己手动加一个链接上去,而是动态生成的。
三、怎样传一些可用值到osworkflow流程中使用
这个问题一开始纠结了好久。慢慢地看一些前辈写的例子才知道。
在osworkflow的initialize()和doAction()方法中可以传一个map参数。这个参数即用来传值供流程中使用,比如:
Map inputs = new HashMap();
inputs.put("hello","hello world");
wf.initialize("请假",1,inputs);
传进去的inputs可以在初始化定义的时候使用,我猜具体可以在script中用transientVars.get();获得,但是没有实现,因为一般用不着。最常见的一般是定义一个function()在function类中使用,可以用来保存数据到数据库中。
如下:
<initial-actions>
<action name="工作流初始化" id="1000">
<pre-functions>
<function type="class">
<arg name="class.name">com.ideamoment.function.FunctionTest</arg>
</function>
</pre-functions>
<results>
<unconditional-result old-status="Finished" status="Underway" step="1" owner="${caller}"/>
</results>
</action>
</initial-actions>
在FunctionTest中可以获取到inputs的值
public class TestFunction implements FunctionProvider{
public void execute(Map transientVars, Map args, PropertySet ps)
throws WorkflowException {
String hello = (String)transientVars.get("hello");
System.out.println(hello);
}
另外也可以在xml定义的流程文件中<arg>标签中定义数据,然后在Funtion中用args.get()来获取。
以上为自己摸索osworkflow得出的东西,官方文档是在太粗糙,基本没什么有价值的东西。希望前辈还能在指教一下,唉。
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
OSWorkflow 2.8 API 文档
OSWorkflow
OSWorkFlow demo 资料 OSWorkFlow demo 资料
用OSWorkFlow和JBPM开发工作流异同点解析
OSWorkflow中文手册OSWorkflow中文手册OSWorkflow中文手册OSWorkflow中文手册 pdf 50页
一个osworkflow的例子,其实就是官方的例子,只是除了是汉化的外我还把在jsp中的Java代码提取到一个单独的类中,这样便于阅读和理解。希望对大家有帮助。
花了两天时间写了个demo作用是通过flex解析osworkflow定义文件生成流程图,下载需要五个积分。辛苦费 还望谅解 不骗分 此附近效果图在http://huqingyun69.iteye.com/admin/blogs/1930123这个链接上有解说 大家可以先...
JPetStoreOSGI.rar Mytestworkflow.rar Osworkflow持久化.doc Osworkflow的介绍.doc osworkflow配置与demo.rar osworkflow中文开发指南.rar OSWorkflow中文手册OSWorkflow-chinese-...用osworkflow写一个请假例子.rar
通过osworkflow项目的学习和实践,总结出的一套osworkflow工作流引擎的学习笔记,供需要使用osworkflow系统的同学们借鉴,谢谢!
工作流 osworkflow工作流 osworkflow工作流 osworkflow工作流 osworkflow工作流 osworkflow工作流 osworkflow
OSworkflow2.8 开发所需所有jar包资源,学习文档及api手册
OSWORKFlow流程开发教程
osworkflow中文入门指南,osworkflow+hibernate+spring集成配置,osworkflow-2.8.0.jar
这是一个简单的osworkflow的web应用,比较适合初学或入门者,或想研究osworkflow的人,如果有任何问题,可以联系我.
osworkflow 中文文档,内容详尽。
由OpensymPhony组织开发的开源工作流引擎 OSWorkflow是一种非常灵活的工作 流引擎。它主要基于有限状态机理论,通过状态的迁移描述工作的流转。每一种状态(state) 被描述成为 step ID和 status。从一种状态(state)...
osworkflow教程,osworkflow教程,osworkflow教程,osworkflow教程,osworkflow教程,osworkflow教程,osworkflow教程,osworkflow教程,osworkflow教程osworkflow教程osworkflow教程,osworkflow教程,osworkflow教程...
osworkflow2.8.rar 工作流引擎