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);
}

}


最后:对工作流感兴趣的同仁可以加入:[url]http://osworkflow.group.iteye.com/[/url]讨论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值