浏览 2370 次
锁定老帖子 主题:osworkflow的API封装
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-05-05
最后修改:2009-11-07
/** * 初始化工作流 * @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.iteye.com/讨论 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-05-05
这个不算扩展,只能是算包装吧,同志
|
|
返回顶楼 | |
发表时间:2008-05-05
kjj 写道 这个不算扩展,只能是算包装吧,同志
对,这个只是封装 呵呵 |
|
返回顶楼 | |