homeaction.java

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

JAVA
97
字号
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.definition.impl.*;
import org.jbpm.model.execution.*;
import org.jbpm.model.execution.impl.*;
import org.jbpm.web.formgen.Form;
import org.jbpm.web.struts.form.*;

public class HomeAction extends Action {

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

    // cast the form
    HomeForm homeForm = (HomeForm) form;

    String user = Authentication.getUser(request);
    
    ExecutionService executionService = JbpmServiceLocator.getInstance().getExecutionService();

    // get the tasklist from jbpm for user
    List tasks = new ArrayList();
    // add the demo tasks
    //tasks.add( createToken(3, "defone", "stateone" ) );
    //tasks.add( createToken(4, "deftwo", "statetwo" ) );
    //tasks.add( createToken(5, "deftwo", "statethree" ) );
    // add the jbpm tasks
    tasks.addAll( executionService.getTaskList( user, null ) );
    // put the tasklist into the form
    homeForm.setTasks( tasks );
    

    // get the tasklist from jbpm for user
    List definitions = new ArrayList();
    // add the demo definitions
    //definitions.add( createDefinition(1, "defone" ) );
    //definitions.add( createDefinition(2, "deftwo" ) );
    // add the jbpm definitions
    definitions.addAll( executionService.getLatestDefinitions() );
    // put the tasklist into the form
    homeForm.setDefinitions( definitions );

    // initialise the forms
    Iterator iter = tasks.iterator();
    while( iter.hasNext() ) {
      Form.initialiseForms( ((Token)iter.next()).getProcessInstance().getDefinition(), executionService );
    }
    iter = definitions.iterator();
    while( iter.hasNext() ) {
      Form.initialiseForms( (Definition) iter.next(), executionService );
    }
    
    log.debug( "tasks: " + executionService.getTaskList( user, null ) );
    log.debug( "definitions: " + executionService.getLatestDefinitions() );
    
    return mapping.findForward( "home" );
	}

	private TokenImpl createToken(long id, String definitionName, String stateName) {
    DefinitionImpl definition = createDefinition( 0, definitionName );
    
    ProcessInstanceImpl pi = new ProcessInstanceImpl();
    pi.setDefinition( definition );
    
    StateImpl state = new StateImpl();
    state.setName( stateName );
    
    TokenImpl token = new TokenImpl();
    token.setId( new Long( id ) );
    token.setProcessInstance( pi );
    token.setState( state );
    
    return token;
	}

  private DefinitionImpl createDefinition(long id, String name) {
    StartStateImpl startState = new StartStateImpl();
    startState.setName( "startstate" );
    
    DefinitionImpl definition = new DefinitionImpl();
    definition.setId( new Long( id ) );
    definition.setName( name );
    definition.setStartState( startState );
    
    return definition;
  }

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

⌨️ 快捷键说明

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