Examples of WorkflowProcess


Examples of org.fireflow.model.WorkflowProcess

        final String PrepareGoodsActivity_ID = "Goods_Deliver_Process.PrepareGoodsActivity";
        final String PaymentActivity_ID = "Goods_Deliver_Process.PaymentActivity";
        InputStream in = Dom4JFPDLParserTest.class.getResourceAsStream("/org/fireflow/model/io/example_workflow.xml");
        JAXP_FPDL_Parser instance = new JAXP_FPDL_Parser();

        WorkflowProcess result = instance.parse(in);
        assertNotNull(result);

        assertNotNull(result.getStartNode());
        assertEquals(1, result.getTasks().size());
        assertEquals(4, result.getActivities().size());
        assertEquals(2, result.getSynchronizers().size());
        assertEquals(1, result.getEndNodes().size());
        assertEquals(8, result.getTransitions().size());
       
        Task task = result.getTasks().get(0);
        assertEquals("Goods_Deliver_Process.PrepareGoodsTask",task.getId());
       
        Activity paymentActivity = (Activity) result.findWFElementById(PaymentActivity_ID);
        assertNotNull(paymentActivity);
        assertEquals(1, paymentActivity.getTasks().size());
        assertEquals(1, paymentActivity.getInlineTasks().size());

        Activity prepareGoodsActivity = (Activity) result.findWFElementById(PrepareGoodsActivity_ID);
        assertNotNull(prepareGoodsActivity);
        assertEquals(1, prepareGoodsActivity.getTasks().size());
        assertEquals(1, prepareGoodsActivity.getTaskRefs().size());
    }
View Full Code Here

Examples of org.fireflow.model.WorkflowProcess

        String synchronizer2Id = "MyFirstProcess.Synchronizer2";

        InputStream in = Dom4JFPDLParserTest.class.getResourceAsStream("/org/fireflow/model/io/MyFirstProcess.xml");
        JAXP_FPDL_Parser instance = new JAXP_FPDL_Parser();

        WorkflowProcess result = instance.parse(in);

        assertNotNull(result);

        assertEquals(1, result.getLoops().size());

        Loop loop = (Loop)result.getLoops().get(0);
        assertNotNull(loop.getCondition());

        Synchronizer sync1 = (Synchronizer)result.findWFElementById(synchronizer1Id);
        assertEquals(1,sync1.getEnteringLoops().size());
        assertEquals(0,sync1.getLeavingLoops().size());

        Synchronizer sync2 = (Synchronizer)result.findWFElementById(synchronizer2Id);
        assertEquals(0,sync2.getEnteringLoops().size());
        assertEquals(1,sync2.getLeavingLoops().size());
    }
View Full Code Here

Examples of org.fireflow.model.WorkflowProcess

        final String PrepareGoodsActivity_ID = "Goods_Deliver_Process.PrepareGoodsActivity";
        final String PaymentActivity_ID = "Goods_Deliver_Process.PaymentActivity";
        InputStream in = Dom4JFPDLParserTest.class.getResourceAsStream("/org/fireflow/model/io/example_workflow.xml");
        Dom4JFPDLParser instance = new Dom4JFPDLParser();

        WorkflowProcess workflowProcess1 = instance.parse(in);
       
        String tmpDir = System.getProperty("java.io.tmpdir");
       
        File f = new File(tmpDir+"example_workflow_tmp.xml");
        FileOutputStream out = new FileOutputStream(f);
        Dom4JFPDLSerializer ser = new Dom4JFPDLSerializer();
        ser.serialize(workflowProcess1, out);
        out.flush();
        out.close();

        FileInputStream fIn= new FileInputStream(f);
        WorkflowProcess result = instance.parse(fIn);
        f.delete();
        assertNotNull(result);

        assertNotNull(result.getStartNode());
        assertEquals(1, result.getTasks().size());
        assertEquals(4, result.getActivities().size());
        assertEquals(2, result.getSynchronizers().size());
        assertEquals(1, result.getEndNodes().size());
        assertEquals(8, result.getTransitions().size());

        Activity paymentActivity = (Activity) result.findWFElementById(PaymentActivity_ID);
        assertNotNull(paymentActivity);
        assertEquals(1, paymentActivity.getTasks().size());
        assertEquals(1, paymentActivity.getInlineTasks().size());

        Activity prepareGoodsActivity = (Activity) result.findWFElementById(PrepareGoodsActivity_ID);
        assertNotNull(prepareGoodsActivity);
        assertEquals(1, prepareGoodsActivity.getTasks().size());
        assertEquals(1, prepareGoodsActivity.getTaskRefs().size());

    }
View Full Code Here

Examples of org.fireflow.model.WorkflowProcess

                if (workflowProcessFileNames != null) {
                    Dom4JFPDLParser parser = new Dom4JFPDLParser();
                    for (int i = 0; i < workflowProcessFileNames.size(); i++) {
                        try {
                            InputStream inStream = this.getClass().getResourceAsStream(workflowProcessFileNames.get(i).trim());
                            WorkflowProcess workflowProcess = parser.parse(inStream);
                            WorkflowDefinition workflowDef = new WorkflowDefinition();
                            workflowDef.setWorkflowProcess(workflowProcess);
                            ids.add(workflowProcess.getId());
                            persistenceService.saveOrUpdateWorkflowDefinition(workflowDef);
                        } catch (IOException ex) {
                            Logger.getLogger(PersistenceServiceHibernateImplTest.class.getName()).log(Level.SEVERE, null, ex);
                        } catch (FPDLParserException ex) {
                            Logger.getLogger(PersistenceServiceHibernateImplTest.class.getName()).log(Level.SEVERE, null, ex);
View Full Code Here

Examples of org.fireflow.model.WorkflowProcess

    }
    if (taskInstanceRunner != null) {
      taskInstanceRunner.run(currentSession, this.rtCtx, processInstance,
          taskInstance);
    } else {
      WorkflowProcess process = taskInstance.getWorkflowProcess();
      throw new EngineException(taskInstance.getProcessInstanceId(),
          process, taskInstance.getTaskId(),
          "无法获取TaskInstanceRunner,TaskId=" + task.getId()
              + ", taskType=" + taskInstance.getTaskType());
    }
View Full Code Here

Examples of org.fireflow.model.WorkflowProcess

    if (taskInstanceCompletionEvaluator != null) {
      return taskInstanceCompletionEvaluator.taskInstanceCanBeCompleted(
          currentSession, runtimeContext, processInstance,
          taskInstance);
    } else {
      WorkflowProcess process = taskInstance.getWorkflowProcess();
      throw new EngineException(taskInstance.getProcessInstanceId(),
          process, taskInstance.getTaskId(),
          "无法获取TaskInstanceCompletionEvaluator,TaskId="
              + task.getId() + ", taskType="
              + taskInstance.getTaskType());
View Full Code Here

Examples of org.fireflow.model.WorkflowProcess

    if (taskInstance.getState() == ITaskInstance.COMPLETED
        || taskInstance.getState() == ITaskInstance.CANCELED) {
      return;
    }
    if (taskInstance.getState() == ITaskInstance.INITIALIZED) {
      WorkflowProcess process = taskInstance.getWorkflowProcess();
      throw new EngineException(taskInstance.getProcessInstanceId(),
          process, taskInstance.getTaskId(),
          "Complete task insatance failed.The state of the task insatnce[id="
              + taskInstance.getId() + "] is "
              + taskInstance.getState());
    }
    if (taskInstance.isSuspended()) {
      WorkflowProcess process = taskInstance.getWorkflowProcess();
      throw new EngineException(taskInstance.getProcessInstanceId(),
          process, taskInstance.getTaskId(),
          "Complete task insatance failed. The task instance [id="
              + taskInstance.getId() + "] is suspended");
    }

    if (targetActivityInstance != null) {
      ((TaskInstance) taskInstance)
          .setTargetActivityId(targetActivityInstance.getActivity()
              .getId());
    }

    IPersistenceService persistenceService = this.rtCtx
        .getPersistenceService();

    // 第一步,首先结束当前taskInstance
    if (!this.taskInstanceCanBeCompleted(currentSession, this.rtCtx,
        processInstance, taskInstance)) {
      return;
    }
    ((TaskInstance) taskInstance).setState(ITaskInstance.COMPLETED);
    ((TaskInstance) taskInstance).setCanBeWithdrawn(Boolean.FALSE);
    ((TaskInstance) taskInstance).setEndTime(rtCtx.getCalendarService()
        .getSysDate());
    persistenceService.saveOrUpdateTaskInstance(taskInstance);
    // 触发相应的事件
    TaskInstanceEvent e = new TaskInstanceEvent();
    e.setSource(taskInstance);
    e.setWorkflowSession(currentSession);
    e.setProcessInstance(processInstance);
    e.setEventType(TaskInstanceEvent.AFTER_TASK_INSTANCE_COMPLETE);
    if (this.defaultTaskInstanceEventListener != null) {
      this.defaultTaskInstanceEventListener.onTaskInstanceEventFired(e);
    }

    this.fireTaskInstanceEvent(taskInstance, e);

    // 第二步,检查ActivityInstance是否可以结束
    if (!activityInstanceCanBeCompleted(taskInstance)) {
      return;
    }

    // 第三步,尝试结束对应的activityInstance
    List<IToken> tokens = persistenceService.findTokensForProcessInstance(
        taskInstance.getProcessInstanceId(), taskInstance
            .getActivityId());
    // System.out.println("Inside TaskInstance.complete(targetActivityInstance):: tokens.size is "+tokens.size());
    if (tokens == null || tokens.size() == 0) {
      return;// 表明activityInstance已经结束了。
    }
    if (tokens.size() > 1) {
      WorkflowProcess process = taskInstance.getWorkflowProcess();
      throw new EngineException(taskInstance.getProcessInstanceId(),
          process, taskInstance.getTaskId(), "与activityId="
              + taskInstance.getActivityId() + "对应的token数量(="
              + tokens.size() + ")不正确,正确只能为1,因此无法完成complete操作");
    }
    IToken token = tokens.get(0);
    // stepNumber不相等,不允许执行结束操作。
    if (token.getStepNumber().intValue() != taskInstance.getStepNumber()
        .intValue()) {
      return;
    }
    if (token.isAlive() == false) {
      WorkflowProcess process = taskInstance.getWorkflowProcess();
      throw new EngineException(taskInstance.getProcessInstanceId(),
          process, taskInstance.getTaskId(), "与activityId="
              + taskInstance.getActivityId()
              + "对应的token.alive=false,因此无法完成complete操作");
    }

    INetInstance netInstance = rtCtx.getKernelManager().getNetInstance(
        taskInstance.getProcessId(), taskInstance.getVersion());
    Object obj = netInstance.getWFElementInstance(taskInstance
        .getActivityId());
    if (obj == null) {
      WorkflowProcess process = taskInstance.getWorkflowProcess();
      throw new EngineException(taskInstance.getProcessInstanceId(),
          process, taskInstance.getTaskId(), "系统没有找到与activityId="
              + taskInstance.getActivityId()
              + "对应activityInstance,无法执行complete操作。");
    }
View Full Code Here

Examples of org.fireflow.model.WorkflowProcess

    // taskInstance.getTaskId(),
    // "Complete task insatance failed.The state of the task insatnce[id=" +
    // taskInstance.getId() + "] is " + taskInstance.getState());
    // }
    if (taskInstance.isSuspended()) {
      WorkflowProcess process = taskInstance.getWorkflowProcess();
      throw new EngineException(taskInstance.getProcessInstanceId(),
          process, taskInstance.getTaskId(),
          "Abort task insatance failed. The task instance [id="
              + taskInstance.getId() + "] is suspended");
    }

    // 1)检查是否在同一个“执行线”上

    WorkflowProcess workflowProcess = taskInstance.getWorkflowProcess();
    if (targetActivityId != null) {
      String thisActivityId = taskInstance.getActivityId();
      boolean isInSameLine = workflowProcess.isInSameLine(thisActivityId,
          targetActivityId);
      if (!isInSameLine) {
        throw new EngineException(
            taskInstance.getProcessInstanceId(),
            taskInstance.getWorkflowProcess(),
            taskInstance.getTaskId(),
            "Jumpto refused because of the current activitgy and the target activity are NOT in the same 'Execution Thread'.");
      }
    }

    INetInstance netInstance = rtCtx.getKernelManager().getNetInstance(
        workflowProcess.getId(), taskInstance.getVersion());
    IActivityInstance targetActivityInstance = (IActivityInstance) netInstance
        .getWFElementInstance(targetActivityId);

    IActivityInstance thisActivityInstance = (IActivityInstance) netInstance
        .getWFElementInstance(taskInstance.getActivityId());
    if (thisActivityInstance == null) {
      WorkflowProcess process = taskInstance.getWorkflowProcess();
      throw new EngineException(taskInstance.getProcessInstanceId(),
          process, taskInstance.getTaskId(), "系统没有找到与activityId="
              + taskInstance.getActivityId()
              + "对应activityInstance,无法执行abort操作。");
    }

    if (targetActivityInstance != null) {
      ((TaskInstance) taskInstance)
          .setTargetActivityId(targetActivityInstance.getActivity()
              .getId());
    }

    IPersistenceService persistenceService = this.rtCtx
        .getPersistenceService();

    // 第一步,首先Abort当前taskInstance
    persistenceService.abortTaskInstance((TaskInstance) taskInstance);

    // 触发相应的事件
    TaskInstanceEvent e = new TaskInstanceEvent();
    e.setSource(taskInstance);
    e.setWorkflowSession(currentSession);
    e.setProcessInstance(processInstance);
    e.setEventType(TaskInstanceEvent.AFTER_TASK_INSTANCE_COMPLETE);
    if (this.defaultTaskInstanceEventListener != null) {
      this.defaultTaskInstanceEventListener.onTaskInstanceEventFired(e);
    }

    this.fireTaskInstanceEvent(taskInstance, e);

    // 第二步,检查ActivityInstance是否可以结束
    if (!activityInstanceCanBeCompleted(taskInstance)) {
      return;
    }

    // 第三步,尝试结束对应的activityInstance
    List<IToken> tokens = persistenceService.findTokensForProcessInstance(
        taskInstance.getProcessInstanceId(), taskInstance
            .getActivityId());
    // System.out.println("Inside TaskInstance.complete(targetActivityInstance):: tokens.size is "+tokens.size());
    if (tokens == null || tokens.size() == 0) {
      return;// 表明activityInstance已经结束了。
    }
    if (tokens.size() > 1) {
      WorkflowProcess process = taskInstance.getWorkflowProcess();
      throw new EngineException(taskInstance.getProcessInstanceId(),
          process, taskInstance.getTaskId(), "与activityId="
              + taskInstance.getActivityId() + "对应的token数量(="
              + tokens.size() + ")不正确,正确只能为1,因此无法完成complete操作");
    }
    IToken token = tokens.get(0);
    // stepNumber不相等,不允许执行结束操作。
    if (token.getStepNumber().intValue() != taskInstance.getStepNumber()
        .intValue()) {
      return;
    }
    if (token.isAlive() == false) {
      WorkflowProcess process = taskInstance.getWorkflowProcess();
      throw new EngineException(taskInstance.getProcessInstanceId(),
          process, taskInstance.getTaskId(), "与activityId="
              + taskInstance.getActivityId()
              + "对应的token.alive=false,因此无法完成complete操作");
    }
View Full Code Here

Examples of org.fireflow.model.WorkflowProcess

    // taskInstance.getTaskId(),
    // "Complete task insatance failed.The state of the task insatnce[id=" +
    // taskInstance.getId() + "] is " + taskInstance.getState());
    // }
    if (thisTaskInst.isSuspended()) {
      WorkflowProcess process = thisTaskInst.getWorkflowProcess();
      throw new EngineException(thisTaskInst.getProcessInstanceId(),
          process, thisTaskInst.getTaskId(),
          "Abort task insatance failed. The task instance [id="
              + thisTaskInst.getId() + "] is suspended");
    }

    //
    IPersistenceService persistenceService = this.rtCtx.getPersistenceService();
    WorkflowProcess workflowProcess = thisTaskInst.getWorkflowProcess();
    List<IToken> allTokens = null;
    List<String> aliveActivityIdsAfterJump = new ArrayList<String>();
    if (targetActivityId != null) {     
      String thisActivityId = thisTaskInst.getActivityId();
      boolean isInSameLine = workflowProcess.isInSameLine(thisActivityId,
          targetActivityId);
     
      if (isInSameLine){
        this.abortTaskInstance(currentSession, processInstance, thisTaskInst, targetActivityId);
      }
     
      //合法性检查
      allTokens = persistenceService.findTokensForProcessInstance(thisTaskInst.getProcessInstanceId(), null);

      aliveActivityIdsAfterJump.add(targetActivityId);
     
      for (int i=0;allTokens!=null && i<allTokens.size();i++){
        IToken tokenTmp = allTokens.get(i);
        IWFElement workflowElement = workflowProcess.findWFElementById(tokenTmp.getNodeId());
        if ((workflowElement instanceof Activity) && !workflowElement.getId().equals(thisActivityId)){
         
          aliveActivityIdsAfterJump.add(workflowElement.getId());
         
          if (workflowProcess.isReachable(targetActivityId, workflowElement.getId())
            || workflowProcess.isReachable(workflowElement.getId(), targetActivityId)){
            throw new EngineException(
                thisTaskInst.getProcessInstanceId(),
                thisTaskInst.getWorkflowProcess(),
                thisTaskInst.getTaskId(),
                "Abort refused because of the business-logic conflict!");

          }
        }
      }     
     
      //1)检查是否在同一个“执行线”上(不做该检查,20091008) 
//      if (!isInSameLine) {
//        throw new EngineException(
//            taskInstance.getProcessInstanceId(),
//            taskInstance.getWorkflowProcess(),
//            taskInstance.getTaskId(),
//            "Jumpto refused because of the current activitgy and the target activity are NOT in the same 'Execution Thread'.");
//      }
    }

    INetInstance netInstance = rtCtx.getKernelManager().getNetInstance(
        workflowProcess.getId(), thisTaskInst.getVersion());
    IActivityInstance targetActivityInstance = null;
    if (targetActivityId!=null){
      targetActivityInstance = (IActivityInstance) netInstance
        .getWFElementInstance(targetActivityId);
    }

    IActivityInstance thisActivityInstance = (IActivityInstance) netInstance
        .getWFElementInstance(thisTaskInst.getActivityId());
    if (thisActivityInstance == null) {
      WorkflowProcess process = thisTaskInst.getWorkflowProcess();
      throw new EngineException(thisTaskInst.getProcessInstanceId(),
          process, thisTaskInst.getTaskId(), "系统没有找到与activityId="
              + thisTaskInst.getActivityId()
              + "对应activityInstance,无法执行abort操作。");
    }

    if (targetActivityInstance != null) {
      ((TaskInstance) thisTaskInst)
          .setTargetActivityId(targetActivityInstance.getActivity()
              .getId());
    }


    // 第一步,首先Abort当前taskInstance
    persistenceService.abortTaskInstance((TaskInstance) thisTaskInst);

    // 触发相应的事件
    TaskInstanceEvent e = new TaskInstanceEvent();
    e.setSource(thisTaskInst);
    e.setWorkflowSession(currentSession);
    e.setProcessInstance(processInstance);
    e.setEventType(TaskInstanceEvent.AFTER_TASK_INSTANCE_COMPLETE);
    if (this.defaultTaskInstanceEventListener != null) {
      this.defaultTaskInstanceEventListener.onTaskInstanceEventFired(e);
    }

    this.fireTaskInstanceEvent(thisTaskInst, e);

    // 第二步,检查ActivityInstance是否可以结束
    if (!activityInstanceCanBeCompleted(thisTaskInst)) {
      return;
    }

    // 第三步,尝试结束对应的activityInstance
    List<IToken> tokens = persistenceService.findTokensForProcessInstance(
        thisTaskInst.getProcessInstanceId(), thisTaskInst
            .getActivityId());
    // System.out.println("Inside TaskInstance.complete(targetActivityInstance):: tokens.size is "+tokens.size());
    if (tokens == null || tokens.size() == 0) {
      return;// 表明activityInstance已经结束了。
    }
    if (tokens.size() > 1) {
      WorkflowProcess process = thisTaskInst.getWorkflowProcess();
      throw new EngineException(thisTaskInst.getProcessInstanceId(),
          process, thisTaskInst.getTaskId(), "与activityId="
              + thisTaskInst.getActivityId() + "对应的token数量(="
              + tokens.size() + ")不正确,正确只能为1,因此无法完成complete操作");
    }
    IToken token = tokens.get(0);
    // stepNumber不相等,不允许执行结束操作。
    if (token.getStepNumber().intValue() != thisTaskInst.getStepNumber()
        .intValue()) {
      return;
    }
    if (token.isAlive() == false) {
      WorkflowProcess process = thisTaskInst.getWorkflowProcess();
      throw new EngineException(thisTaskInst.getProcessInstanceId(),
          process, thisTaskInst.getTaskId(), "与activityId="
              + thisTaskInst.getActivityId()
              + "对应的token.alive=false,因此无法完成complete操作");
    }
View Full Code Here

Examples of org.fireflow.model.WorkflowProcess

    }

    if (workItem.getTaskInstance().isSuspended()) {
      TaskInstance thisTaskInst = (TaskInstance) workItem
          .getTaskInstance();
      WorkflowProcess process = thisTaskInst.getWorkflowProcess();
      throw new EngineException(thisTaskInst.getProcessInstanceId(),
          process, thisTaskInst.getTaskId(),
          "Complete work item failed. The correspond task instance [id="
              + thisTaskInst.getId() + "] is suspended");
    }
View Full Code Here
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.