2008-05-05
osworkflow的API封装
/**
* 初始化工作流
* @param input
* @return
*/
@SuppressWarnings("unchecked")
public long doInitialize(Map input) {
long wf_id = -1;
try {
wf_id = workflow.initialize(workflowName, initActionId, input);
} catch (InvalidRoleException e) {
logger.info("当前用户不能初始化工作流");
} catch (Exception e) {
throw new RuntimeException("初始化工作流出现问题:", e);
}
return wf_id;
}
/**
* 执行动作
*/
@SuppressWarnings("unchecked")
public void doAction(final long workflowId, final int actionId, final Map inputs) {
try {
workflow.setContext();
workflow.doAction(workflowId, actionId, inputs);
} catch (Exception e) {
throw new RuntimeException("执行操作失败",e);
}
}
/**
* 得到用户指定流程的有效行动
*
* @param workflowId
* @return actionID和名称的键值对
*/
public Map<Integer, String> findAvailableActions(long workflowId) {
Map<Integer, String> result = new HashMap<Integer, String>();
int[] availableActions = workflow.getAvailableActions(workflowId, null);
WorkflowDescriptor wd = workflow
.getWorkflowDescriptor(workflow.getWorkflowName(workflowId));
for (int i = 0; i < availableActions.length; i++) {
int actionId = availableActions[i];
result.put(actionId, wd.getAction(actionId).getName());
}
return result;
}
/**
* 查询工作流描述
*
*/
public WorkflowDescriptor queryWorkflowDescriptor(long workflowId) {
return workflow.getWorkflowDescriptor(workflow.getWorkflowName(workflowId));
}
/**
* 查询步骤描述,步骤描述中可以得到步骤的名称,步骤的函数
*/
@SuppressWarnings("unchecked")
public StepDescriptor queryStepDescriptor(int stepId) {
return getWorkflowDescriptor().getStep(stepId);
}
/**
* 查询所有步骤
*/
@SuppressWarnings("unchecked")
public List<Step> findSteps(long workflowId) {
Assert.isTrue(workflowId > 0, "workflowId必须大于零");
List<Step> result = new ArrayList<Step>();
List currentSteps = workflow.getCurrentSteps(workflowId);
List historySteps = workflow.getHistorySteps(workflowId);
result.addAll(currentSteps);
result.addAll(historySteps);
return result;
}
/**
* 查询操作的名称
*/
public String findActionName(int actionId) {
ActionDescriptor actionDescriptor = getWorkflowDescriptor().getAction(actionId);
return actionDescriptor == null ? null : actionDescriptor.getName();
}
上面所写的workflow对象,你可以通过new BasicWorkflow(caller);得到。
也可以扩展AbstractWorkflow得到
/**
* 扩展的工作流类
*/
public class ExtWorkflow extends AbstractWorkflow {
public void setContext() {
String caller;
try {
caller= //通过你的上下文获得
} catch (Exception e) {
caller ="";
}
super.context=new BasicWorkflowContext(caller);
}
}
最后:对工作流感兴趣的同仁可以加入:http://osworkflow.group.javaeye.com/讨论
- 10:20
- 浏览 (179)
- 评论 (2)
- 分类: 工作流
- 进入论坛
- 发布在 osworkflow 圈子
- 相关推荐
发表评论
提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则
- 浏览: 78625 次
- 性别:

- 来自: 北京

- 详细资料
搜索本博客
最近加入圈子
最新评论
-
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






评论排行榜