Package com.starflow.wf.engine.model

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


  /**
   * {@inheritDoc}
   */
  public List<FreeActElement> queryPossibleNextActsOfFreeActivity(long processDefId, String activityDefId) {
    ProcessDefine processDefine = this.procDefRep.findProcessDefine(processDefId);
    ActivityElement activityXml = processDefine.getProcessObject().getActivitys().get(activityDefId);
    String strategy = activityXml.getFreeRangeStrategy();
   
    //是否尽限为人工活动
    boolean isOnlyLimitedManualAct = activityXml.getIsOnlyLimitedManualActivity();
   
    List<FreeActElement> actEls = new ArrayList<FreeActElement>();
    if(Constants.Free_Act_strategy_three.equalsIgnoreCase(strategy)) {
      //在后继活动范围内自由
      List<TransitionElement> transitions = activityXml.getAfterTrans();
      for(TransitionElement tx : transitions) {
        String _actDefId = tx.getTo();
        ActivityElement ax = processDefine.getProcessObject().getActivitys().get(_actDefId);
        if(isOnlyLimitedManualAct && !Constants.ACT_TYPE_MANUL.equals(ax.getType())) {
          continue;
        }
        FreeActElement freeActXml = new FreeActElement();
        freeActXml.setId(ax.getId());
        freeActXml.setName(ax.getName());
        freeActXml.setType(ax.getType());
        actEls.add(freeActXml);
      }
    } else if(Constants.Free_Act_strategy_two.equalsIgnoreCase(strategy)) {
      //在指定活动列表范围内自由
      activityXml.getFreeActs();
    } else if(Constants.Free_Act_strategy_One.equalsIgnoreCase(strategy)) {
      //在流程范围内任意自由
      Collection<ActivityElement> collect = processDefine.getProcessObject().getActivitys().values();
      for(ActivityElement ax : collect) {
        if(isOnlyLimitedManualAct && !Constants.ACT_TYPE_MANUL.equals(ax.getType())) {
          continue;
        }
        FreeActElement freeActXml = new FreeActElement();
View Full Code Here


  private ProcessInstance innercreateProcess(String processDefName, final String userId,
      final long parentProcInstId, final long activityInstId, final String subFlow) {
    if(!StringUtils.hasText(userId))
      throw new IllegalArgumentException("创建流程时,必须指定用户 ID");
   
    final ProcessDefine processDefine = procDefRep.findPublishProcessDefine(processDefName);
    if(processDefine == null)
      throw new ProcessDefineNotFoundException("没有创建流程,或者流程定义版本没有发布");
   
    //流程启动前触发事件
    TriggerProcessEventUtil.beforeStart(processEngine, processDefine, null,
        processDefine.getProcessObject().getEvents());
   
    ProcessInstance processInstance = transactionTemplate.execute(new TransactionCallback<ProcessInstance>() {
      public ProcessInstance doInTransaction(TransactionStatus status) {
        ProcessInstance _processInstance = new ProcessInstance();
        _processInstance.setProcessDefId(processDefine.getProcessDefId());
        _processInstance.setProcessInstName(processDefine.getProcessDefName());
        _processInstance.setCreator(userId);
        _processInstance.setCurrentState(StarFlowState.PROCESS_INST_START);
        _processInstance.setSubFlow(subFlow);
        _processInstance.setCreateTime(new Date());
       
        _processInstance.setLimitNum(processDefine.getLimitTime());
        long _id = PrimaryKeyUtil.getPrimaryKey(Keys.PROCESSINSTID);
        _processInstance.setProcessInstId(_id);
        if(parentProcInstId == -1)
          _processInstance.setParentProcInstId(_id);
        else
View Full Code Here

        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

TOP

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

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.