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

Examples of com.founder.fix.fixflow.core.impl.runtime.TokenEntity


    ProcessDefinitionBehavior processDefinition = processDefinitionManager.findLatestProcessDefinitionById(processDefinitionId);

    ProcessInstanceEntity processInstanceImpl = processInstanceManager.findProcessInstanceById(processInstanceId, processDefinition);

    TokenEntity token=processInstanceImpl.getTokenMap().get(tokenId);
   
   
   
    List<String> tokenIdList=new ArrayList<String>();
   

    addTokenParent(token, tokenIdList);
   
    @SuppressWarnings({ "unchecked", "rawtypes" })
    List<TaskInstance> taskInstanceQueryToList=(List)taskManager.findTasksByTokenIdList(tokenIdList);
   
   
   
 
    List<UserTaskBehavior> userTaskBehaviorList=new ArrayList<UserTaskBehavior>();
    for (TaskInstance taskInstanceQueryTo : taskInstanceQueryToList) {
      if(!(taskInstanceQueryTo.getNodeId().equals(token.getNodeId()))&&cleanRollBackTask(userTaskBehaviorList,taskInstanceQueryTo.getNodeId())){
        UserTaskBehavior userTaskBehavior= (UserTaskBehavior)processDefinition.getDefinitions().getElement(taskInstanceQueryTo.getNodeId());
        if(userTaskBehavior!=null){
          userTaskBehaviorList.add(userTaskBehavior);
        }
       
View Full Code Here


    processInstanceImpl.getContextInstance().setVariableMap(variables);

    // processInstanceImpl.setBizKey(this.businessKey);

    TokenEntity token = processInstanceImpl.getTokenMap().get(tokenId);

    processInstanceImpl.getContextInstance().setTransientVariableMap(
        transientVariables);

    ExecutionContext executionContext = ProcessObjectFactory.FACTORYINSTANCE
View Full Code Here

    ProcessDefinitionBehavior processDefinition = processDefinitionManager.findLatestProcessDefinitionById(processInstance.getProcessDefinitionId());

   

    ProcessInstanceEntity processInstanceImpl = processInstanceManager.findProcessInstanceById(processInstanceId, processDefinition);
    TokenEntity tokenEntity = processInstanceImpl.getTokenMap().get(tokenId);
    if(transientVariables!=null&&transientVariables.keySet().size()>0){
      processInstanceImpl.getContextInstance().setTransientVariableMap(transientVariables);
   
    }
    if(dataVariables!=null&&dataVariables.keySet().size()>0){
      processInstanceImpl.getContextInstance().setDataVariable(dataVariables);
    }
   
    tokenEntity.signal();

    try {
      processInstanceManager.saveProcessInstance(processInstanceImpl);
    } catch (Exception e) {
      throw new FixFlowException("流程实例持久化失败!", e);
View Full Code Here

     
      if(processInstance==null){
        throw new FixFlowBizException("未能找到任务对应的流程实例");
      }
      ProcessInstanceEntity processInstanceEntity=(ProcessInstanceEntity)processInstance;
      TokenEntity tokenEntity=processInstanceEntity.getTokenMap().get(tokenIdString);
     
     
     
     
      List<TaskInstanceEntity> taskInstanceEntities= processInstanceEntity.getTaskMgmtInstance().getTaskInstanceEntitys();
      List<TaskInstance> taskInstances=new ArrayList<TaskInstance>();
      for (TaskInstanceEntity taskInstanceEntity : taskInstanceEntities) {
        if(!taskInstanceEntity.hasEnded()){
          String nextTokenId=taskInstanceEntity.getTokenId();
          if(tokenIdString.equals(nextTokenId)){
            taskInstances.add(taskInstanceEntity);
          }else{
           
            //分支走到合并的时候的处理.
            if(tokenEntity==null){
              if(taskInstanceEntity.getCreateTime().compareTo(taskInstance.getCreateTime())>=0){
                taskInstances.add(taskInstanceEntity);
              }
            }
            else{
     
              if(tokenEntity.hasChildRecursive(nextTokenId)){
                taskInstances.add(taskInstanceEntity);
              }
            }
           
           
View Full Code Here

    ProcessDefinitionBehavior processDefinition = processDefinitionManager.findLatestProcessDefinitionById(processDefinitionId);

    ProcessInstanceEntity processInstanceImpl = processInstanceManager.findProcessInstanceById(processInstanceId, processDefinition);

    TokenEntity token=processInstanceImpl.getTokenMap().get(tokenId);
   
   
   
    List<String> tokenIdList=new ArrayList<String>();
   
View Full Code Here

          throw new FixFlowException("节点 " + this.getId() + " " + this.getName() + " 的跳过策略出错请检查流程配置!", e);
        }
      }
    }

    TokenEntity token = executionContext.getToken();

    TaskInstanceEntity newTask = TaskInstanceEntity.create();
    newTask.setId(GuidUtil.CreateGuid());
    newTask.setCreateTime(new Date());
    newTask.setNodeId(this.getId());

    if (skipAssigneeString != null && !skipAssigneeString.equals("")) {
      newTask.setAssignee(skipAssigneeString);
    }

    newTask.setDraft(false);

    Date date = new Date();

    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    cal.add(Calendar.MILLISECOND, 1);
    date = cal.getTime();

    newTask.setEndTime(date);
    newTask.setPriority(50);

    ProcessDefinitionBehavior processDefinition = token.getProcessInstance().getProcessDefinition();
    String processDefinitionId = processDefinition.getProcessDefinitionId();
    newTask.setProcessDefinitionId(processDefinitionId);
    newTask.setProcessDefinitionKey(processDefinition.getProcessDefinitionKey());
    newTask.setName(this.getName());
    newTask.setNodeName(this.getName());
    newTask.setProcessInstanceId(token.getProcessInstance().getId());
    newTask.setTokenId(token.getId());
    newTask.setProcessDefinitionName(processDefinition.getName());
    newTask.setTaskInstanceType(TaskInstanceType.FIXBPMTASK);
    String bizKey = token.getProcessInstance().getBizKey();
    newTask.setBizKey(bizKey);
    newTask.setCommandId(TaskCommandType.SKIPNODE);
    newTask.setCommandType(TaskCommandType.SKIPNODE);

    TaskCommandDef taskCommandDef = Context.getProcessEngineConfiguration().getTaskCommandDefMap().get("skipNode");
View Full Code Here

 
  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("")){
View Full Code Here

 
 

  public void enter(ExecutionContext executionContext) {

    TokenEntity token = executionContext.getToken();

    // 把令牌的所在节点设置为当前节点
    token.setFlowNode(this);

    // 触发流程启动事件
    token.getProcessInstance().getProcessDefinition().fireEvent(BaseElementEvent.EVENTTYPE_PROCESS_START, executionContext);

    // 设置令牌进入节点的时间
    token.setNodeEnterTime(new Date());
   
    token.getProcessInstance().setInstanceType(ProcessInstanceType.RUNNING);
   
    if(this.isPersistence()){
      //插入流程启动记录
      createStartEventTask(executionContext);
    }
View Full Code Here

     
    } catch (Exception e) {
      throw new FixFlowException("超时表达式计算失败!原因是: "+e.toString(),e);
    }
   
    TokenEntity tokenEntity=executionContext.getToken();
    String processInstanceId=tokenEntity.getProcessInstance().getId();
    /*VariableTransferEntity variableTransferEntity = new VariableTransferEntity();
    Map<String, Object> transientVariableMap=tokenEntity.getProcessInstance().getContextInstance().getTransientVariableMap();
    String guidString=GuidUtil.CreateGuid();
    variableTransferEntity.addVariable(guidString, transientVariableMap);
   
    if (processInstanceId != null && !processInstanceId.equals("")) {
      VariableFlowTypeEntity variableFlowTypeEntity = new VariableFlowTypeEntity(VariableFlowType.PROCESSINSTANCE, processInstanceId);
      variableTransferEntity.addVariableFlowType(variableFlowTypeEntity);
    }
 
    Context.getCommandContext().getVariableManager().saveVariable(variableTransferEntity);
    */
   
   
    Scheduler scheduler=Context.getProcessEngineConfiguration().getScheduler();

   
   
   
    Map<JobDetail, List<Trigger>> jobList=new HashMap<JobDetail, List<Trigger>>();
   
   
   
   
   
   
   
    JobDetail job = QuartzUtil.createJobDetail(
        TokenTimeOutJob.class,  GuidUtil.CreateGuid()+"_"+tokenEntity.getId(), tokenEntity.getId()+"_"+processInstanceId+"_"+tokenEntity.getProcessInstance().getProcessDefinitionId());
    job.getJobDataMap().put("tokenId", tokenEntity.getId());
    //job.getJobDataMap().put("transientVariableId", guidString);
    job.getJobDataMap().put("processInstanceId", processInstanceId);
    job.getJobDataMap().put("nodeId", event.getId());
    job.getJobDataMap().put("processKey", tokenEntity.getProcessInstance().getProcessDefinitionKey());
    job.getJobDataMap().put("processId", tokenEntity.getProcessInstance().getProcessDefinitionId());
    job.getJobDataMap().put("processName", tokenEntity.getProcessInstance().getProcessDefinition().getName());
    job.getJobDataMap().put("bizKey", tokenEntity.getProcessInstance().getBizKey());
    job.getJobDataMap().put("jobType", "fixTimeOutTask");
   
   
    if(date==null){
     
      if(expressionTemp!=null&&!expressionTemp.equals("")){
        Trigger trigger = null;
        trigger =  QuartzUtil.createCronTrigger(
            GuidUtil.CreateGuid(), "FixTimeOutTask_"+tokenEntity.getId(), expressionTemp);
       
        List<Trigger> triggers=new ArrayList<Trigger>();
        triggers.add(trigger);
        jobList.put(job, triggers);
       
      }else{
       
        if(timeObjects.size()>0){
         
          List<Trigger> triggers=new ArrayList<Trigger>();
          for (Object object : timeObjects) {
            if(object instanceof Date){
              Trigger trigger = null;
             
             
             
              trigger = (SimpleTrigger) QuartzUtil.createSimpleTrigger(
                  GuidUtil.CreateGuid(), "FixTimeOutTask_"+tokenEntity.getId(), StringUtil.getDate(object));
             
              triggers.add(trigger);
             
            }
            if(object instanceof String){
              Trigger trigger = null;
              trigger =  QuartzUtil.createCronTrigger(
                  GuidUtil.CreateGuid(), "FixTimeOutTask_"+tokenEntity.getId(), StringUtil.getString(object));
              triggers.add(trigger);
            }
          }
          jobList.put(job, triggers);
        }else{
          throw new FixFlowBizException("定时任务节点没有设置时间!");
        }
       
     
       
      }
     
     
     
     
    }else{
     
     
      Trigger trigger = null;
     
     
     
      trigger = (SimpleTrigger) QuartzUtil.createSimpleTrigger(
          GuidUtil.CreateGuid(), "FixTimeOutTask_"+tokenEntity.getId(), date);
      List<Trigger> triggers=new ArrayList<Trigger>();
      triggers.add(trigger);
      jobList.put(job, triggers);
    }
   
View Full Code Here

    ProcessDefinitionBehavior processDefinition = processDefinitionManager.findLatestProcessDefinitionById(processInstance.getProcessDefinitionId());

   

    ProcessInstanceEntity processInstanceImpl = processInstanceManager.findProcessInstanceById(processInstanceId, processDefinition);
    TokenEntity tokenEntity = processInstanceImpl.getTokenMap().get(tokenId);
    processInstanceImpl.getContextInstance().setTransientVariableMap(transientVariables);
   
    if(nodeId==null){
      Event event=(Event)tokenEntity.getFlowNode();
      if(event instanceof BoundaryEvent){
        BoundaryEvent boundaryEvent=(BoundaryEvent)event;
        Activity activity =boundaryEvent.getAttachedToRef();
        boolean isCancelActivity=boundaryEvent.isCancelActivity();
        if(isCancelActivity){
          //如果是终止事件 则结束进入节点的时候的散发的所有子令牌 然后将父令牌 移动到超时节点往下进行
          tokenEntity.signalKillChildMoveParentToken(boundaryEvent,activity);
        }
        else{
          //如果不是终止事件 则默认方法驱动令牌
          tokenEntity.signal();
        }
       
      }
      if(event instanceof CatchEvent){
        tokenEntity.signal();
      }
     
    }
    else{
      BaseElement baseElement=processDefinition.getDefinitions().getElement(nodeId);
      if(baseElement instanceof BoundaryEvent){
        BoundaryEvent boundaryEvent=(BoundaryEvent)baseElement;
        Activity activity =boundaryEvent.getAttachedToRef();
       
        //String nodeTokenId = this.getId();
        // 创建分支令牌并添加到集合中
        boolean isCancelActivity=boundaryEvent.isCancelActivity();
        if(isCancelActivity){
         
          //设置超时节点
          //nodeChildExecutionContext.setTimeOutNode(nodeToken.getFlowNode());
          //ExecutionContext executionContext=ProcessObjectFactory.FACTORYINSTANCE.createExecutionContext(tokenEntity);
          tokenEntity.signalKillChildMoveParentToken(boundaryEvent,activity);
          //boundaryEvent.leave(executionContext);
        }
        else{
          TokenEntity nodeToken=((FlowNodeImpl)tokenEntity.getFlowNode()).createForkedToken(tokenEntity, boundaryEvent.getId()).token;
         
          ExecutionContext nodeChildExecutionContext = ProcessObjectFactory.FACTORYINSTANCE.createExecutionContext(nodeToken);
          //设置超时节点
          nodeChildExecutionContext.setTimeOutNode(activity);
          boundaryEvent.leave(nodeChildExecutionContext);
View Full Code Here

TOP

Related Classes of com.founder.fix.fixflow.core.impl.runtime.TokenEntity

Copyright © 2018 www.massapicom. 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.