Package com.starflow.wf.engine.model

Examples of com.starflow.wf.engine.model.ActivityInst


      throw new InterruptStrategyException();
    } else if(Constants.ACT_EXCEPTIONSTRATEGY_APPLICATION.equals(exceptionStrategy)) {
      String beanName = activityXml.getExceptionAction();
      ProcessInstance cloneProcessInstance = new ProcessInstance();
      BeanUtils.copyProperties(event.getProcessInstance(), cloneProcessInstance);
      ActivityInst cloneActivityInst = new ActivityInst();
      BeanUtils.copyProperties(event.getActivityInst(), cloneActivityInst);
      executeExceptionAction(beanName, e, cloneProcessInstance, cloneActivityInst)
    } else if(Constants.ACT_EXCEPTIONSTRATEGY_STEPROLLBACK.equals(exceptionStrategy)) {
      throw new UnsupportedOperationException("单步回退功能没有实现");
      } else {
View Full Code Here


  /* (non-Javadoc)
   * @see com.starit.wf.engine.domain.service.IActivityInstService#finishActivity(long)
   */
  public void finishActivity(long activityInstId) {
    final ActivityInst activityInst = this.actInstRep.findActivityInst(activityInstId);
    //判断环节是否处于运行状态,才可完成该工作项
    if(StarFlowState.ACT_INST_RUNING != activityInst.getCurrentState())
      throw new ProcessEngineException("当前环节(activityInstId="+activityInst.getActivityInstId()+")不处于状态,"+
          "无法完成环节的运行!");
   
    final ProcessInstance processInstance = this.procInstRep.findProcessInstance(activityInst.getProcessInstId());
    final ProcessDefine processDefine = this.procDefRep.findProcessDefine(processInstance.getProcessDefId());
    final ActivityElement activityXml = processDefine.getProcessObject().getActivitys().get(activityInst.getActivityDefId());
   
    transactionTemplate.execute(new TransactionCallbackWithoutResult() {
      @Override
      protected void doInTransactionWithoutResult(TransactionStatus status) {
        //发布环节结束事件
View Full Code Here

        ActivityType type = ActivityTypeFactory.buildActivityType(actType);
       
        //创建环节
        ActivityCreateEvent event = new ActivityCreateEvent(processEngine);
        event.setProcessInstance(processInstance);
        ActivityInst activityInst = type.createActivity(event, activityXml);
       
        //启动环节
        EventUtil.publishActivityStartEvent(event, activityInst, activityXml);
      }
    });
View Full Code Here

   */
  public void terminateActivity(final long activityInstId) {
    transactionTemplate.execute(new TransactionCallbackWithoutResult() {
      @Override
      protected void doInTransactionWithoutResult(TransactionStatus status) {
        ActivityInst activityInst = actInstRep.findActivityInst(activityInstId);
        ProcessInstance processInstance = procInstRep.findProcessInstance(activityInst.getProcessInstId());
        EventUtil.publishActivityTerminalEvent(processEngine, processInstance, activityInst);
      }
    });
  }
View Full Code Here

  public void restartActivity(long processInstId, long activityInstId) {
    ProcessInstance processInstance = procInstRep.findProcessInstance(processInstId);
    if(StarFlowState.PROCESS_INST_RUNNING != processInstance.getCurrentState())
      throw new ProcessEngineException("流程不处于运行状态,不能重启环节!");
   
    ActivityInst activityInst = actInstRep.findActivityInst(activityInstId);
    if(activityInst == null || activityInst.getCurrentState() == StarFlowState.ACT_INST_RUNING
        || activityInst.getCurrentState() == StarFlowState.ACT_INST_WAITING
        || activityInst.getCurrentState() == StarFlowState.ACT_APP_EXCEPTION) {
      throw new ProcessEngineException("环节只有处在完成、终止、应用异常状态,才可以重启环节");
    }
   
//    if(!Constants.ACT_TYPE_MANUL.equals(activityInst.getActivityType())) {
//      throw new ProcessEngineException("只有人工环节才可以重启环节,当前环节类型为:"+activityInst.getActivityType());
//    }
   
    ProcessDefine processDefine = this.procDefRep.findProcessDefine(processInstance.getProcessDefId());
    ActivityElement activityXml = processDefine.getProcessObject().getActivitys().get(activityInst.getActivityDefId());
   
    EventUtil.publishActivityRestartEvent(processEngine, processInstance, activityInst, activityXml);
  }
View Full Code Here

   
    EventUtil.publishActivityRestartEvent(processEngine, processInstance, activityInst, activityXml);
  }
 
  public void activateActivity(final long activityInstId) {
    final ActivityInst activityInst = actInstRep.findActivityInst(activityInstId);
    final ProcessInstance processInstance = procInstRep.findProcessInstance(activityInst.getProcessInstId());
    final ProcessDefine processDefine = this.procDefRep.findProcessDefine(processInstance.getProcessDefId());
    final ActivityElement activityXml = processDefine.getProcessObject().getActivitys().get(activityInst.getActivityDefId());
   
    transactionTemplate.execute(new TransactionCallbackWithoutResult() {
      @Override
      protected void doInTransactionWithoutResult(TransactionStatus status) {
       
        //判断环节是否处于运行状态,才可完成该工作项
        if(StarFlowState.ACT_INST_WAITING != activityInst.getCurrentState())
          throw new ProcessEngineException("当前环节(activityInstId="+activityInst.getActivityInstId()+")不处于待激活状态,"+
              "无法激活该环节!");
       
        //创建环节
        ActivityCreateEvent event = new ActivityCreateEvent(processEngine);
        event.setProcessInstance(processInstance);
       
        //启动环节
        EventUtil.publishActivityStartEvent(event, activityInst, activityXml);
       
        if(logger.isDebugEnabled())
          logger.debug("环节【{}】人工激活", activityInst.getActivityInstName());
      }
    });
  }
View Full Code Here

  /* (non-Javadoc)
   * @see com.starit.wf.engine.domain.service.IActivityInstService#rollbackToActivityFroRecentManual(long)
   */
  public void rollbackToActivityFroRecentManual(final long currentActInstID) {
    final ActivityInst activityInst = this.actInstRep.findActivityInst(currentActInstID);
    //判断环节是否处于运行状态,才可执行回退
    if(StarFlowState.ACT_INST_RUNING != activityInst.getCurrentState())
      throw new ProcessEngineException("当前环节(activityInstId="+activityInst.getActivityInstId()+")不处于运行状态,"+
          "不能执行回退。");
   
    final ProcessInstance processInstance = this.procInstRep.findProcessInstance(activityInst.getProcessInstId());
    List<TransCtrl> trans = this.actInstRep.findTransCtrls(activityInst.getProcessInstId());
   
    String recentActDefId = null;
    String destActId = activityInst.getActivityDefId();
    for(TransCtrl transCtrl : trans) {
      if(transCtrl.getDestActDefId().equalsIgnoreCase(destActId) //如果不是人工环节,继续向前循环
          && !Constants.ACT_TYPE_MANUL.equalsIgnoreCase(transCtrl.getSrcActType())) {
        destActId = transCtrl.getSrcActDefId();
      } else if(transCtrl.getDestActDefId().equalsIgnoreCase(destActId)
View Full Code Here

  /* (non-Javadoc)
   * @see com.starflow.wf.engine.service.IWorkItemService#finishWorkItem(long, java.lang.String)
   */
  public void finishWorkItem(long workItemId, final String userId) {
    final WorkItem workItem = this.workItemRep.findWorkItem(workItemId);
    final ActivityInst activityInst = this.actInstRep.findActivityInst(workItem.getActivityInstId());
   
    //判断环节是否处于运行状态,才可完成该工作项
    if(StarFlowState.ACT_INST_RUNING != activityInst.getCurrentState())
      throw new ProcessEngineException("当前环节(activityInstId="+activityInst.getActivityInstId()+")不处于状态,"+
          "无法完成环节的运行!");
   
    //判断工作项是否处于待接收或运行状态,才可完成该工作项
    if(workItem.getCurrentState() != StarFlowState.WORKITEM_WAITING_RECEIVE &&
        workItem.getCurrentState() != StarFlowState.WORKITEM_RUNNING)
      throw new ProcessEngineException("当前工作项(workitemid="+workItemId+")不处于状态,"+
          "无法完成工作项的运行!");
   
    final ProcessInstance processInstance = this.procInstRep.findProcessInstance(workItem.getProcessInstId());
    final ProcessDefine processDefine = this.procDefRep.findProcessDefine(processInstance.getProcessDefId());
    final ActivityElement activityXml = processDefine.getProcessObject().getActivitys().get(activityInst.getActivityDefId());
   
    transactionTemplate.execute(new TransactionCallbackWithoutResult() {
      @Override
      protected void doInTransactionWithoutResult(TransactionStatus status) {
        workItemRep.updateWorkItemStateAndEndTime(workItem.getWorkItemId(), userId, StarFlowState.WORKITEM_COMPLETED, new Date());
View Full Code Here

public class StartActivityType implements ActivityType {

  public ActivityInst createActivity(AbstractFlowEvent event, ActivityElement activityXml) {
    ProcessInstance procInst = event.getProcessInstance();
   
    ActivityInst activityInst = new ActivityInst();
    activityInst.setActivityDefId(activityXml.getId());
    activityInst.setActivityType(activityXml.getType());
    activityInst.setCurrentState(StarFlowState.ACT_INST_WAITING);
    activityInst.setCreateTime(new Date());
    activityInst.setActivityInstName(activityXml.getName());
    activityInst.setProcessInstId(procInst.getProcessInstId());
   
    long actInstId = PrimaryKeyUtil.getPrimaryKey(Keys.ACTIVITYINSTID);
    activityInst.setActivityInstId(actInstId);
   
    event.getActInstRep().inertActivityInst(activityInst);
    return activityInst;
  }
View Full Code Here

public class SubFlowActivityType extends AbstractActivityType {

  public ActivityInst createActivity(AbstractFlowEvent event, ActivityElement activityXml) {
    String activityDefId = activityXml.getId();
    long processInstId = event.getProcessInstance().getProcessInstId();
    ActivityInst activityInst = this.findWaitingActInst(event, processInstId, activityDefId);
    if(activityInst != null)
      return activityInst;
   
    ProcessInstance procInst = event.getProcessInstance();

    activityInst = new ActivityInst();
    activityInst.setActivityDefId(activityDefId);
    activityInst.setActivityType(Constants.ACT_TYPE_SUBPROCESS);
    activityInst.setActivityInstName(activityXml.getName());
    activityInst.setDescription(activityXml.getDescription());
    activityInst.setCurrentState(StarFlowState.ACT_INST_WAITING);
    activityInst.setCreateTime(new Date());
    activityInst.setProcessInstId(procInst.getProcessInstId());
   
    long actInstId = PrimaryKeyUtil.getPrimaryKey(Keys.ACTIVITYINSTID);
    activityInst.setActivityInstId(actInstId);
   
    event.getActInstRep().inertActivityInst(activityInst);
    return activityInst;
  }
View Full Code Here

TOP

Related Classes of com.starflow.wf.engine.model.ActivityInst

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.