Ignore:
Timestamp:
06/10/13 09:16:34 (12 years ago)
Author:
wojtekp
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • DCWoRMS/branches/coolemall/src/schedframe/scheduling/manager/tasks/JobRegistryImpl.java

    r493 r1083  
    1010import org.apache.commons.logging.LogFactory; 
    1111import org.qcg.broker.schemas.resreqs.ParentType; 
     12import org.qcg.broker.schemas.resreqs.Workflow; 
    1213import org.qcg.broker.schemas.resreqs.types.TaskStatesName; 
    1314 
     
    104105                return availableTasks; 
    105106        } 
    106  
    107107 
    108108        private List<Task> getPrecedenceConstrainedAvailableTasks(List<Task> tasks){ 
     
    117117                        if(task.getStatus() != (int)BrokerConstants.TASK_STATUS_UNSUBMITTED) 
    118118                                continue; 
    119                         try{             
     119                        //the following procedure supports only one nested structure 
     120                        Workflow w = task.getDescription().getWorkflow(); 
     121                        if (w == null){ 
     122                                availableTasks.add(task); 
     123                                continue; 
     124                        } 
     125                        if(w.getAnd() != null) { 
     126                                parCnt = w.getAnd().getParentOpTypeItemCount(); 
     127                                if(parCnt == 0) 
     128                                { 
     129                                        availableTasks.add(task); 
     130                                } 
     131                                else 
     132                                { 
     133                                        for(int j = 0; j < parCnt; j++){ 
     134                                                ParentType par = w.getAnd().getParentOpTypeItem(j).getParent(); 
     135                                                if(par.getTriggerState().compareTo(TaskStatesName.FINISHED) == 0){ 
     136                                                        if(!checkTaskCompletion(task.getJobId(), par.getContent())){ 
     137                                                                break; 
     138                                                        } 
     139                                                } 
     140                                                previousTaskSucceedCnt++; 
     141                                        } 
     142 
     143                                        if(previousTaskSucceedCnt == parCnt) 
     144                                                availableTasks.add(task); 
     145                                } 
     146                        }  
     147                        else if(w.getOr() != null) { 
     148                                parCnt = w.getOr().getParentOpTypeItemCount(); 
     149                                if(parCnt == 0) 
     150                                { 
     151                                        availableTasks.add(task); 
     152                                } 
     153                                else 
     154                                { 
     155                                        for(int j = 0; j < parCnt; j++){ 
     156                                                ParentType par = w.getOr().getParentOpTypeItem(j).getParent(); 
     157                                                if(par.getTriggerState().compareTo(TaskStatesName.FINISHED) == 0){ 
     158                                                        if(!checkTaskCompletion(task.getJobId(), par.getContent())){ 
     159                                                                continue; 
     160                                                        } 
     161                                                } 
     162                                                previousTaskSucceedCnt++; 
     163                                        } 
     164 
     165                                        if(previousTaskSucceedCnt > 0) 
     166                                                availableTasks.add(task); 
     167                                } 
     168                        } 
     169                        else { 
     170                                parCnt = w.getParentCount(); 
     171                                if(parCnt == 0) 
     172                                { 
     173                                        availableTasks.add(task); 
     174                                } 
     175                                else 
     176                                { 
     177                                        for(int j = 0; j < parCnt; j++){ 
     178                                                ParentType par = w.getParent(j); 
     179                                                if(par.getTriggerState().compareTo(TaskStatesName.FINISHED) == 0){ 
     180                                                        if(!checkTaskCompletion(task.getJobId(), par.getContent())){ 
     181                                                                continue; 
     182                                                        } 
     183                                                } 
     184                                                previousTaskSucceedCnt++; 
     185                                        } 
     186 
     187                                        if(previousTaskSucceedCnt == parCnt) 
     188                                                availableTasks.add(task); 
     189                                } 
     190                        } 
     191                         
     192                        /*try{           
    120193                                parCnt = task.getDescription().getWorkflow().getParentCount(); 
    121194                        } catch(Exception e){ 
     
    142215                                else if (previousTaskSucceedCnt == parCnt) 
    143216                                        availableTasks.add(task); 
    144                         } 
     217                        }*/ 
    145218                }                
    146219                return availableTasks; 
Note: See TracChangeset for help on using the changeset viewer.