论坛首页 Java企业应用论坛

osworkflow的API封装

浏览 2364 次
精华帖 (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/讨论
   发表时间:2008-05-05  
这个不算扩展,只能是算包装吧,同志
0 请登录后投票
   发表时间:2008-05-05  
kjj 写道
这个不算扩展,只能是算包装吧,同志

对,这个只是封装 呵呵
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics