一、实现描述
Action是实现指定接口org.jbpm.graph.def.ActionHandler的Java类,action可以定义在普通节点中,也可以定义在节点事件中。定义在普通节点中的action则是当前节点业务逻辑的执行体,定义在事件中的action在进入节点或离开节点时候触发。
Action开发工作流二次开发的重要部分,可以在action访问工作流实例数据和表单中的业务数据,扩展和增强工作流中的业务处理逻辑。下面列举一个结束节点进入事件的action例子:
1、开发实现接口org.jbpm.graph.def.ActionHandler的Java类FinishAction。
2、进入工作流定义界面,设置结束节点的进入事件为“net.test.FinishAction”。
3、整体保存工作流定义。
二、代码示例
package net.test
import net.business.engine.TableObject;
import net.business.engine.common.TemplateContext;
import net.jbpm.external.WorkFlowSmartForm;
import org.jbpm.graph.def.ActionHandler;
import org.jbpm.graph.exe.ExecutionContext;
import org.jbpm.graph.exe.Token;
public class FinishAction implements ActionHandler
{
private static final long serialVersionUID = 1L;
public void execute(ExecutionContext executionContext) throws Exception
{
Token token = executionContext.getToken();
WorkFlowSmartForm wfsf = (WorkFlowSmartForm) token.getAssignment();
TemplateContext context = wfsf.getTemplateContext();
TableObject[] tables = context.getTables();
if(tables == null)
{
throw new Exception("数据读取失败");
}
TableObject table = tables[0];
//获取数据库的连接
Connection conn = context.getConn();
//通过"khqc"字段名,访问表单提交的数据
String khqc = wfsf.getTableFieldValue(table.getFieldByName("khqc"));
//其他业务逻辑代码
(略)
}
}