⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 homeaction.java

📁 一个java工作流引擎
💻 JAVA
字号:
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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -