Package org.activiti.workflow.simple.converter.step

Source Code of org.activiti.workflow.simple.converter.step.HumanStepDefinitionConverter

/* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*      http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.activiti.workflow.simple.converter.step;

import org.activiti.bpmn.model.StartEvent;
import org.activiti.bpmn.model.UserTask;
import org.activiti.workflow.simple.converter.ConversionConstants;
import org.activiti.workflow.simple.converter.WorkflowDefinitionConversion;
import org.activiti.workflow.simple.definition.HumanStepAssignment.HumanStepAssignmentType;
import org.activiti.workflow.simple.definition.HumanStepDefinition;
import org.activiti.workflow.simple.definition.StepDefinition;
import org.activiti.workflow.simple.definition.form.FormDefinition;

/**
* {@link StepDefinitionConverter} for converting a {@link HumanStepDefinition} to a {@link UserTask}.
*
* @author Frederik Heremans
* @author Joram Barrez
*/
public class HumanStepDefinitionConverter extends BaseStepDefinitionConverter<HumanStepDefinition, UserTask> {
 
  private static final long serialVersionUID = 1L;
 
  private static final String DEFAULT_INITIATOR_VARIABLE = "initiator";
  private static final String DEFAULT_INITIATOR_ASSIGNEE_EXPRESSION = "${initiator}";

  public Class< ? extends StepDefinition> getHandledClass() {
    return HumanStepDefinition.class;
  }
 
  protected UserTask createProcessArtifact(HumanStepDefinition stepDefinition, WorkflowDefinitionConversion conversion) {
    UserTask userTask = createUserTask(stepDefinition, conversion);
    addFlowElement(conversion, userTask, true);
   
    return userTask;
  }

  protected UserTask createUserTask(HumanStepDefinition humanStepDefinition, WorkflowDefinitionConversion conversion) {
   
    // TODO: validate and throw exception on missing properties
   
    UserTask userTask = new UserTask();
    userTask.setId(conversion.getUniqueNumberedId(ConversionConstants.USER_TASK_ID_PREFIX));
    userTask.setName(humanStepDefinition.getName());
    userTask.setDocumentation(humanStepDefinition.getDescription());

    // Initiator
    if (humanStepDefinition.getAssignmentType() == HumanStepAssignmentType.INITIATOR) {
      userTask.setAssignee(getInitiatorExpression());

      // Add the initiator variable declaration to the start event
      for (StartEvent startEvent : conversion.getProcess().findFlowElementsOfType(StartEvent.class)) {
        startEvent.setInitiator(getInitiatorVariable());
      }
     
    // Assignee 
    } else if (humanStepDefinition.getAssignmentType() == HumanStepAssignmentType.USER) {
      userTask.setAssignee(humanStepDefinition.getAssignee());
    }

    // Candidate Users
    if (humanStepDefinition.getAssignmentType() == HumanStepAssignmentType.USERS || humanStepDefinition.getAssignmentType() == HumanStepAssignmentType.MIXED) {
      userTask.setCandidateUsers(humanStepDefinition.getCandidateUsers());
    }

    // Candidate groups
    if (humanStepDefinition.getAssignmentType() == HumanStepAssignmentType.GROUPS || humanStepDefinition.getAssignmentType() == HumanStepAssignmentType.MIXED) {
      userTask.setCandidateGroups(humanStepDefinition.getCandidateGroups());
    }
   
    // Form
    if (humanStepDefinition.getForm() != null) {
     
      FormDefinition formDefinition = humanStepDefinition.getForm();
     
      // Form properties
      userTask.setFormProperties(convertProperties(formDefinition));
     
      if(formDefinition.getFormKey() != null) {
        userTask.setFormKey(formDefinition.getFormKey());
      }
    }

    return userTask;
  }
 
  //Extracted in a method such that subclasses can override if needed
  protected String getInitiatorVariable() {
    return DEFAULT_INITIATOR_VARIABLE;
  }
 
  // Extracted in a method such that subclasses can override if needed
  protected String getInitiatorExpression() {
    return DEFAULT_INITIATOR_ASSIGNEE_EXPRESSION;
  }
 
}
TOP

Related Classes of org.activiti.workflow.simple.converter.step.HumanStepDefinitionConverter

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.