Package com.founder.fix.fixflow.core.impl.cmd

Source Code of com.founder.fix.fixflow.core.impl.cmd.ExecuteConnectorTimeJobCmd

/**
* Copyright 1996-2013 Founder International Co.,Ltd.
*
* 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.
*
* @author kenshin
*/
package com.founder.fix.fixflow.core.impl.cmd;

import java.util.List;

import org.eclipse.bpmn2.impl.FlowNodeImpl;
import org.quartz.JobExecutionContext;

import com.founder.fix.fixflow.core.event.BaseElementEvent;
import com.founder.fix.fixflow.core.exception.FixFlowBizException;
import com.founder.fix.fixflow.core.exception.FixFlowException;
import com.founder.fix.fixflow.core.factory.ProcessObjectFactory;
import com.founder.fix.fixflow.core.impl.connector.ConnectorInstanceBehavior;
import com.founder.fix.fixflow.core.impl.interceptor.Command;
import com.founder.fix.fixflow.core.impl.interceptor.CommandContext;
import com.founder.fix.fixflow.core.impl.runtime.ProcessInstanceEntity;
import com.founder.fix.fixflow.core.impl.runtime.TokenEntity;
import com.founder.fix.fixflow.core.impl.task.TaskInstanceEntity;
import com.founder.fix.fixflow.core.runtime.ExecutionContext;

/**
*
* @author kenshin
*
*/
public class ExecuteConnectorTimeJobCmd implements Command<Void> {

  protected JobExecutionContext jobExecutionContext;
 
  protected String tokenId;
  protected String processInstanceId;
  protected String nodeId;
  protected String processKey;
  protected String processId;
  protected String processName;
  protected String bizKey;
  protected String jobType;
  protected String connectorId;
  protected String connectorInstanceId;
  protected String connectorInstanceName;
  protected String eventType;
  protected String taskId;
 
  public ExecuteConnectorTimeJobCmd(JobExecutionContext jobExecutionContext){
    this.jobExecutionContext=jobExecutionContext;
    this.tokenId=jobExecutionContext.getJobDetail().getJobDataMap().getString("tokenId");
    this.processInstanceId=jobExecutionContext.getJobDetail().getJobDataMap().getString("processInstanceId");
    this.nodeId=jobExecutionContext.getJobDetail().getJobDataMap().getString("nodeId");
    this.processKey=jobExecutionContext.getJobDetail().getJobDataMap().getString("processKey");
    this.processId=jobExecutionContext.getJobDetail().getJobDataMap().getString("processId");
    this.processName=jobExecutionContext.getJobDetail().getJobDataMap().getString("processName");
    this.bizKey=jobExecutionContext.getJobDetail().getJobDataMap().getString("bizKey");
    this.jobType=jobExecutionContext.getJobDetail().getJobDataMap().getString("jobType");
    this.connectorId=jobExecutionContext.getJobDetail().getJobDataMap().getString("connectorId");
    this.connectorInstanceId=jobExecutionContext.getJobDetail().getJobDataMap().getString("connectorInstanceId");
    this.connectorInstanceName=jobExecutionContext.getJobDetail().getJobDataMap().getString("connectorInstanceName");
    this.eventType=jobExecutionContext.getJobDetail().getJobDataMap().getString("eventType");
    this.taskId=jobExecutionContext.getJobDetail().getJobDataMap().getString("taskId");
  }
 
  public Void execute(CommandContext commandContext) {
   
    ProcessInstanceEntity processInstance=commandContext.getProcessInstanceManager().findProcessInstanceById(this.processInstanceId);
   
    TokenEntity token=processInstance.getTokenMap().get(this.tokenId);
   
    ExecutionContext executionContext=ProcessObjectFactory.FACTORYINSTANCE.createExecutionContext(token);
   
   
    if(this.taskId!=null&&!this.taskId.equals("")){
      TaskInstanceEntity taskInstanceEntity=processInstance.getTaskMgmtInstance().getTaskInstanceEntitys(taskId);
      executionContext.setTaskInstance(taskInstanceEntity);
    }
   
    if(this.connectorId!=null&&!this.connectorId.equals("")){
     
      FlowNodeImpl flowNode=(FlowNodeImpl)processInstance.getProcessDefinition().getDefinitions().getElement(this.nodeId);
      BaseElementEvent baseElementEvent=flowNode.getEvent(this.eventType);
      List<ConnectorInstanceBehavior> connectors=baseElementEvent.getConnectors();
      ConnectorInstanceBehavior connectorDefinition=null;
      for (ConnectorInstanceBehavior connectorDefinitionObj : connectors) {
        if(connectorDefinitionObj.getConnectorInstanceId().equals(this.connectorInstanceId)){
          connectorDefinition=connectorDefinitionObj;
          break;
        }
      }
      if(connectorDefinition!=null){
        //connectorDefinition.setSkipExpression(null);
        connectorDefinition.execute(executionContext);
      }
     
      try {
        commandContext.getProcessInstanceManager().saveProcessInstance(processInstance);
      } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        throw new FixFlowException(e.toString(), e);
      }
     
     
    }else{
     
     
     
      throw new FixFlowBizException("定时任务启动失败");
     
    }
   
    return null;
   
   
  }

}
TOP

Related Classes of com.founder.fix.fixflow.core.impl.cmd.ExecuteConnectorTimeJobCmd

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.