taskformprepareaction.java

来自「一个java工作流引擎」· Java 代码 · 共 65 行

JAVA
65
字号
package org.jbpm.web.struts.action;

import java.util.*;
import javax.servlet.http.*;
import org.apache.commons.logging.*;
import org.apache.struts.action.*;
import org.jbpm.*;
import org.jbpm.model.definition.Definition;
import org.jbpm.model.execution.*;
import org.jbpm.web.formgen.*;
import org.jbpm.web.struts.form.*;

public class TaskFormPrepareAction extends org.apache.struts.action.Action {

  private static Map formFileNamesCache = new HashMap();

  public ActionForward execute(ActionMapping mapping, ActionForm actionForm, HttpServletRequest request, HttpServletResponse response) throws Exception {

    TaskForm taskForm = (TaskForm) actionForm;

    Long definitionId = null;
    Long tokenId = null;
    String stateName = null;
    Map variables = null;

    ExecutionService executionService = JbpmServiceLocator.getInstance().getExecutionService();

    String tokenIdText = request.getParameter( "tokenId" );
    if ( tokenIdText == null ) {
      // this is a start process form
      taskForm.setCommand( TaskForm.COMMAND_START_PROCESS_INSTANCE );
      String definitionIdText = request.getParameter( "definitionId" );
      definitionId = new Long( definitionIdText );
      Definition definition = executionService.getDefinition( definitionId, null );
      stateName = definition.getStartState().getName();
      variables = new HashMap();
      
    } else {
      // this is a task form for an existing process instance
      taskForm.setCommand( TaskForm.COMMAND_END_OF_STATE );
      tokenId = new Long( tokenIdText );
      Token token = executionService.getToken( tokenId, null );
      Definition definition = token.getProcessInstance().getDefinition();

      definitionId = definition.getId();
      stateName = token.getState().getName();
      variables = executionService.getVariables( tokenId );
    }
    
    Form form = Form.getForm( definitionId, stateName );
    FormGenerator formGenerator = form.getGenerator();
    Map parameters = formGenerator.prepareParameters( variables );
    
    taskForm.setDefinitionId( definitionId );
    taskForm.setTokenId( tokenId );
    taskForm.setStateName( stateName );
    taskForm.setParameters( parameters );
    taskForm.setFormGenerator( formGenerator );

    return mapping.findForward( "taskform" );
  }

  private static Log log = LogFactory.getLog(TaskFormPrepareAction.class);
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?