Ignore:
Timestamp:
05/23/13 22:49:27 (12 years ago)
Author:
wojtekp
Message:
 
File:
1 edited

Legend:

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

    r493 r1049  
    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 
     
    117118                        if(task.getStatus() != (int)BrokerConstants.TASK_STATUS_UNSUBMITTED) 
    118119                                continue; 
    119                         try{             
     120                        //the following procedure supports only one nested structure 
     121                        Workflow w = task.getDescription().getWorkflow(); 
     122                        if (w == null){ 
     123                                availableTasks.add(task); 
     124                                continue; 
     125                        } 
     126                        if(w.getAnd() != null) { 
     127                                parCnt = w.getAnd().getParentOpTypeItemCount(); 
     128                                if(parCnt == 0) 
     129                                { 
     130                                        availableTasks.add(task); 
     131                                } 
     132                                else 
     133                                { 
     134                                        for(int j = 0; j < parCnt; j++){ 
     135                                                ParentType par = w.getAnd().getParentOpTypeItem(j).getParent(); 
     136                                                if(par.getTriggerState().compareTo(TaskStatesName.FINISHED) == 0){ 
     137                                                        if(!checkTaskCompletion(task.getJobId(), par.getContent())){ 
     138                                                                break; 
     139                                                        } 
     140                                                } 
     141                                                previousTaskSucceedCnt++; 
     142                                        } 
     143 
     144                                        if(previousTaskSucceedCnt == parCnt) 
     145                                                availableTasks.add(task); 
     146                                } 
     147                        }  
     148                        else if(w.getOr() != null) { 
     149                                parCnt = w.getOr().getParentOpTypeItemCount(); 
     150                                if(parCnt == 0) 
     151                                { 
     152                                        availableTasks.add(task); 
     153                                } 
     154                                else 
     155                                { 
     156                                        for(int j = 0; j < parCnt; j++){ 
     157                                                ParentType par = w.getOr().getParentOpTypeItem(j).getParent(); 
     158                                                if(par.getTriggerState().compareTo(TaskStatesName.FINISHED) == 0){ 
     159                                                        if(!checkTaskCompletion(task.getJobId(), par.getContent())){ 
     160                                                                continue; 
     161                                                        } 
     162                                                } 
     163                                                previousTaskSucceedCnt++; 
     164                                        } 
     165 
     166                                        if(previousTaskSucceedCnt > 0) 
     167                                                availableTasks.add(task); 
     168                                } 
     169                        } 
     170                         
     171                        else { 
     172                                parCnt = w.getParentCount(); 
     173                                if(parCnt == 0) 
     174                                { 
     175                                        availableTasks.add(task); 
     176                                } 
     177                                else 
     178                                { 
     179                                        for(int j = 0; j < parCnt; j++){ 
     180                                                ParentType par = w.getParent(j); 
     181                                                if(par.getTriggerState().compareTo(TaskStatesName.FINISHED) == 0){ 
     182                                                        if(!checkTaskCompletion(task.getJobId(), par.getContent())){ 
     183                                                                continue; 
     184                                                        } 
     185                                                } 
     186                                                previousTaskSucceedCnt++; 
     187                                        } 
     188 
     189                                        if(previousTaskSucceedCnt == parCnt) 
     190                                                availableTasks.add(task); 
     191                                } 
     192                        } 
     193                         
     194                        /*try{           
    120195                                parCnt = task.getDescription().getWorkflow().getParentCount(); 
    121196                        } catch(Exception e){ 
     
    142217                                else if (previousTaskSucceedCnt == parCnt) 
    143218                                        availableTasks.add(task); 
    144                         } 
     219                        }*/ 
    145220                }                
    146221                return availableTasks; 
Note: See TracChangeset for help on using the changeset viewer.