- Timestamp:
- 07/31/13 13:50:56 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
DCWoRMS/branches/coolemall/src/schedframe/scheduling/tasks/Job.java
r490 r1150 4 4 import org.qcg.broker.schemas.resreqs.ParentType; 5 5 import org.qcg.broker.schemas.resreqs.ResourceRequirements; 6 import org.qcg.broker.schemas.resreqs.Workflow; 6 7 import org.qcg.broker.schemas.resreqs.types.TaskStatesName; 7 8 … … 31 32 protected boolean isRegistered; 32 33 34 private int status; 35 33 36 public Job(String id){ 34 37 tasks = new ArrayList<Task>(); … … 139 142 Task t = tasks.get(i); 140 143 isForAll = (t.getStatus() == baseStatus); 141 switch(t.getStatus()){142 case (int)BrokerConstants.TASK_STATUS_QUEUED:143 return (int)BrokerConstants.TASK_STATUS_QUEUED;144 case (int)BrokerConstants.TASK_STATUS_UNSUBMITTED:145 return (int)BrokerConstants.TASK_STATUS_UNSUBMITTED;146 }147 144 } 148 145 … … 150 147 return (int)BrokerConstants.JOB_STATUS_FINISHED; 151 148 152 return -1;149 return status; 153 150 } 154 151 … … 182 179 } 183 180 184 public void setStatus(int status) throws Exception{185 181 public void setStatus(int status){ 182 this.status = status; 186 183 } 187 184 … … 192 189 public void register(JobRegistryImpl jobRegistry) { 193 190 isRegistered = jobRegistry.addJob(this); 194 195 191 } 196 192 … … 200 196 } 201 197 202 private List<Task> getReadyTasks() {203 204 List<Task> readyTasks = new ArrayList<Task>();198 private List<Task> getReadyTasks() throws NoSuchFieldException{ 199 200 List<Task> availableTasks = new ArrayList<Task>(); 205 201 int size = tasks.size(); 206 202 207 203 for(int i = 0; i < size; i++){ 208 204 int parCnt; 209 int previousTask ReadyCnt = 0;205 int previousTaskSucceedCnt = 0; 210 206 Task task = tasks.get(i); 211 207 if(task.getStatus() != (int)BrokerConstants.TASK_STATUS_UNSUBMITTED) 212 208 continue; 213 try{ 214 parCnt = task.getDescription().getWorkflow().getParentCount(); 215 } catch(Exception e){ 216 parCnt = 0; 217 } 218 if(parCnt == 0) { 219 readyTasks.add(task); 220 } 221 else { 222 for(int j = 0; j < parCnt; j++){ 223 ParentType par = task.getDescription().getWorkflow().getParent(j); 224 if(par.getTriggerState().compareTo(TaskStatesName.FINISHED) == 0){ 225 try { 209 //the following procedure supports only one nested structure 210 Workflow w = task.getDescription().getWorkflow(); 211 if (w == null){ 212 availableTasks.add(task); 213 continue; 214 } 215 if(w.getAnd() != null) { 216 parCnt = w.getAnd().getParentOpTypeItemCount(); 217 if(parCnt == 0) 218 { 219 availableTasks.add(task); 220 } 221 else 222 { 223 for(int j = 0; j < parCnt; j++){ 224 ParentType par = w.getAnd().getParentOpTypeItem(j).getParent(); 225 if(par.getTriggerState().compareTo(TaskStatesName.FINISHED) == 0){ 226 226 if(!getTask(par.getContent()).isFinished()){ 227 227 break; 228 228 } 229 } catch (NoSuchFieldException e) {230 // TODO Auto-generated catch block231 e.printStackTrace();232 229 } 230 previousTaskSucceedCnt++; 233 231 } 234 previousTaskReadyCnt++; 235 } 236 237 if(previousTaskReadyCnt == parCnt && task.getDescription().getWorkflow().getAnd() != null) 238 readyTasks.add(task); 239 else if(previousTaskReadyCnt > 0 && task.getDescription().getWorkflow().getOr() != null) 240 readyTasks.add(task); 232 233 if(previousTaskSucceedCnt == parCnt) 234 availableTasks.add(task); 235 } 236 } 237 else if(w.getOr() != null) { 238 parCnt = w.getOr().getParentOpTypeItemCount(); 239 if(parCnt == 0) 240 { 241 availableTasks.add(task); 242 } 243 else 244 { 245 for(int j = 0; j < parCnt; j++){ 246 ParentType par = w.getOr().getParentOpTypeItem(j).getParent(); 247 if(par.getTriggerState().compareTo(TaskStatesName.FINISHED) == 0){ 248 if(!getTask(par.getContent()).isFinished()){ 249 continue; 250 } 251 } 252 previousTaskSucceedCnt++; 253 } 254 255 if(previousTaskSucceedCnt > 0) 256 availableTasks.add(task); 257 } 258 } 259 else { 260 parCnt = w.getParentCount(); 261 if(parCnt == 0) 262 { 263 availableTasks.add(task); 264 } 265 else 266 { 267 for(int j = 0; j < parCnt; j++){ 268 ParentType par = w.getParent(j); 269 if(par.getTriggerState().compareTo(TaskStatesName.FINISHED) == 0){ 270 if(!getTask(par.getContent()).isFinished()){ 271 continue; 272 } 273 } 274 previousTaskSucceedCnt++; 275 } 276 277 if(previousTaskSucceedCnt == parCnt) 278 availableTasks.add(task); 279 } 241 280 } 242 281 } 243 return readyTasks;282 return availableTasks; 244 283 } 245 284
Note: See TracChangeset
for help on using the changeset viewer.