工作流接口开发中如何访问相关数据
发布日期:2010-10-20 信息来源:http://www.chysoft.net

承元工作流拥有强大的二次接口,开发时无需工作流源码,开发的代码嵌入到节点的不同环节中,由工作流引擎加载运行。
一、基本的开发框架
1、编写实现工作流指定的接口的实现类,在节点的action、进入事件、离开事件,任务创建、流程启动、流程结束、条件判断等环节均可嵌入指定的代码。
2、从环境中获取相关对象
public String decide(ExecutionContext executionContext) throws Exception
{
//1、获取工作流对象和表单相关对象
Token token = executionContext.getToken();
WorkFlowSmartForm wfsf = (WorkFlowSmartForm) token.getAssignment();
TemplateContext context = wfsf.getTemplateContext();
TableObject[] tables = context.getTables();
//2、获取用户对象
Operator user = Authentication.getUserFromSession(context.getRequest());
//3、具体代码运算(略)

return 路由的名称(必须是条件节点连接的路由)
}

3、在工作流定义中,将java类关联在指定的节点的相关事件上
典型的操作
1、访问和操作业务数据(绝大部分)
2、条件跳转判断
3、工作流状态和业务数据状态的改变
4、消息提醒

二、相关数据的读取
1、如何获取表单上下问对象
public void execute(ExecutionContext executionContext) throws Exception
{
//1、获取工作流对象和表单相关对象
Token token = executionContext.getToken();
WorkFlowSmartForm wfsf = (WorkFlowSmartForm) token.getAssignment();
TemplateContext context = wfsf.getTemplateContext();
}

2、如何获取HttpServletRequest对象实例
public void execute(ExecutionContext executionContext) throws Exception
{
//1、获取工作流对象和表单相关对象
Token token = executionContext.getToken();
WorkFlowSmartForm wfsf = (WorkFlowSmartForm) token.getAssignment();
TemplateContext context = wfsf.getTemplateContext();//获取模板上下文
HttpServletRequest request = context.getRequest();
//从request中获取用户对象Operator
(net.sysplat.common.Operator)
Operator user = Authentication.getUserFromSession(context.getRequest());
}

3、如何读取表单的业务数据
A、表单绑定字段的编辑字段,代码示例
Token token = executionContext.getToken();
WorkFlowSmartForm wfsf = (WorkFlowSmartForm) token.getAssignment();
//A、从表格对象中获取
TemplateContext context = wfsf.getTemplateContext();//获取模板上下文
TableObject[] tables = context.getTables();
TableObject table = tables[0];
String je = wfsf.getTableFieldValue(table.getFieldByName("zje"));
   //B、从表别名中获取(表单系统的表别名)
   String je1 = wfsf.getTableFieldValue(“a.zje1"));

B、非表单绑定编辑字段
(具有name名称表单元素都可以通过该方式获取,表单绑定的编辑字段也可以,但当前用户如果没有写权限,则只能使用第一种方式读取,因为元素为disabled)
Token token = executionContext.getToken();
WorkFlowSmartForm wfsf = (WorkFlowSmartForm) token.getAssignment();
//获取模板上下文
TemplateContext context = wfsf.getTemplateContext();
String testValue = null;
//判断是否文件上载
net.sysmain.common.upload.FileUpLoad upload = context.getFileUpload();
if(upload != null)
{
testValue = upload.getRequest().getParameter(“testName”)
}
else
{//从HttpServletRequest中获取
testValue = context.getRequest().getParameter((“testName”)
}
(其中:testName是表单元素的name名称)

粤ICP备11095012号-1
Copyright 2005-2017 深圳市承元软件技术有限公司