ECR Process primaryBusinessObject Analysis_Comments PR_Group approvalDate submitDate proposedSolution businessDecisionSummary AnalyzeClarify_Comments inInitialPhase ecrDescription ecrName ecrNumber ecrContainer Set State Cancelled primaryBusinessObject aState Set State Closed primaryBusinessObject aState ECR Canceled subject message primaryBusinessObject Set State Under Review primaryBusinessObject aState Set State In Work primaryBusinessObject aState ECR Rejected by Change Coordinator subject message primaryBusinessObject ECR Closed subject message primaryBusinessObject Set State Approved primaryBusinessObject aState ECR Approved subject message primaryBusinessObject Set PRAuthors primaryBusinessObject Analysis_Comments PR_Group approvalDate submitDate proposedSolution businessDecisionSummary AnalyzeClarify_Comments inInitialPhase ecrDescription ecrName ecrNumber ecrContainer _ROBOT_EXPRESSION_ String role=new String("wt.project.role.PR AUTHOR"); com.ptc.windchill.pdmlink.change.server.impl.WorkflowProcessHelper.setRoleToECR((wt.change2.WTChangeRequest2)primaryBusinessObject,role); Set Submit Date, etc. primaryBusinessObject Analysis_Comments PR_Group approvalDate submitDate proposedSolution businessDecisionSummary AnalyzeClarify_Comments inInitialPhase ecrDescription ecrName ecrNumber ecrContainer _ROBOT_EXPRESSION_ submitDate=new java.sql.Timestamp(System.currentTimeMillis()); ecrName = ((wt.change2.WTChangeRequest2)primaryBusinessObject).getName(); ecrNumber = ((wt.change2.WTChangeRequest2)primaryBusinessObject).getNumber(); ecrDescription = ((wt.change2.WTChangeRequest2)primaryBusinessObject).getDescription(); ecrContainer = ((wt.change2.WTChangeRequest2)primaryBusinessObject).getContainerName(); Set PRAuthors primaryBusinessObject Analysis_Comments PR_Group approvalDate submitDate proposedSolution businessDecisionSummary AnalyzeClarify_Comments inInitialPhase ecrDescription ecrName ecrNumber ecrContainer _ROBOT_EXPRESSION_ String role=new String("wt.project.role.PR AUTHOR"); com.ptc.windchill.pdmlink.change.server.impl.WorkflowProcessHelper.setRoleToECR((wt.change2.WTChangeRequest2)primaryBusinessObject,role); Force PRs to Completion primaryBusinessObject Analysis_Comments PR_Group approvalDate submitDate proposedSolution businessDecisionSummary AnalyzeClarify_Comments inInitialPhase ecrDescription ecrName ecrNumber ecrContainer _ROBOT_EXPRESSION_ com.ptc.windchill.pdmlink.change.server.impl.WorkflowProcessHelper.forcePRsToResolved((wt.change2.WTChangeRequest2)primaryBusinessObject); Set PRAuthors primaryBusinessObject Analysis_Comments PR_Group approvalDate submitDate proposedSolution businessDecisionSummary AnalyzeClarify_Comments inInitialPhase ecrDescription ecrName ecrNumber ecrContainer _ROBOT_EXPRESSION_ String role=new String("wt.project.role.PR AUTHOR"); com.ptc.windchill.pdmlink.change.server.impl.WorkflowProcessHelper.setRoleToECR((wt.change2.WTChangeRequest2)primaryBusinessObject,role); Synch on ECO Completion primaryBusinessObject Analysis_Comments PR_Group approvalDate submitDate proposedSolution businessDecisionSummary AnalyzeClarify_Comments inInitialPhase ecrDescription ecrName ecrNumber ecrContainer _SYNCH_EXPRESSION_ // This code returns CLOSED if at least one Change Order is in state // "Closed" and the rest are in state "Closed" or "Cancelled". // It returns CANCELLED if all Change Orders are in state "Cancelled" or // NOT_FINISHED if at least one Change Order is pending // (i.e. has not reached either state "Closed" or "Cancelled"). wt.fc.QueryResult qResult = wt.change2.ChangeHelper2.service.getChangeOrders( (wt.change2.ChangeRequest2) primaryBusinessObject ); String result_value = "NO_SUBORDINATES"; while( qResult.hasMoreElements() ) { wt.fc.Persistable persistable = (wt.fc.Persistable) qResult.nextElement(); if( persistable instanceof wt.lifecycle.LifeCycleManaged ) { wt.lifecycle.LifeCycleManaged life_cycle_managed = (wt.lifecycle.LifeCycleManaged) persistable; if( life_cycle_managed.getLifeCycleState().equals(wt.lifecycle.State.toState("CLOSED")) ) { result_value = "CLOSED"; } else if( life_cycle_managed.getLifeCycleState().equals(wt.lifecycle.State.toState("CANCELLED")) ) { if( result_value == "NO_SUBORDINATES" || !result_value.equals("CLOSED") ) result_value = "CANCELLED"; } else { result_value = "NOT_FINISHED"; } } } if( result_value.equals("CLOSED") ) result = "Closed"; else if( result_value.equals("CANCELLED") ) result = "Cancelled"; else if( result_value.equals("NOT_FINISHED") ) result = null; _INITIAL_SYNCH_EXPRESSION_ System.out.println("DEBUG: ECO Process; Sync on ECO Completion, Initial expression"); Submit Now primaryBusinessObject Analysis_Comments PR_Group approvalDate submitDate proposedSolution businessDecisionSummary AnalyzeClarify_Comments inInitialPhase ecrDescription ecrName ecrNumber ecrContainer _SYNCH_EXPRESSION_ // Continue if the primaryBusinessObject has progressed past the initial state inInitialPhase =wt.lifecycle.LifeCycleHelper.service.isInInitialPhase((wt.lifecycle.LifeCycleManaged)primaryBusinessObject) ; if (inInitialPhase != true) result = "Go"; else result = null; _INITIAL_SYNCH_EXPRESSION_ // Continue if the primaryBusinessObject has progressed past the initial state inInitialPhase =wt.lifecycle.LifeCycleHelper.service.isInInitialPhase((wt.lifecycle.LifeCycleManaged)primaryBusinessObject) ; if (inInitialPhase != true) result = "Go"; else result = null; CRB Review primaryBusinessObject approval_date Comments Clarification_Comments Change_Coordinator_Comments Approve approval_date=new Timestamp(System.currentTimeMillis()); wt.session.SessionServerHelper.manager.setAccessEnforced( false ); com.ptc.windchill.pdmlink.change.server.impl.WorkflowProcessHelper.processBusinessDecision((wt.change2.WTChangeRequest2)primaryBusinessObject,wt.change2.BusinessDecisionCategory.APPROVED, "COMPLEX", Comments); wt.session.SessionServerHelper.manager.setAccessEnforced( true ); Submit ECR primaryBusinessObject approvalDate inInitialPhase START result = inInitialPhase; Clarify primaryBusinessObject Comments Change_Coordinator_Comments CRB_Comments Create ECO primaryBusinessObject Analyze ECR primaryBusinessObject Comments Clairification_Comments CRB_Comments Fast_Track wt.session.SessionServerHelper.manager.setAccessEnforced( false ); com.ptc.windchill.pdmlink.change.server.impl.WorkflowProcessHelper.setTrack((wt.change2.WTChangeRequest2)primaryBusinessObject, "SIMPLE"); wt.session.SessionServerHelper.manager.setAccessEnforced( true ); Full_Track wt.session.SessionServerHelper.manager.setAccessEnforced( false ); com.ptc.windchill.pdmlink.change.server.impl.WorkflowProcessHelper.setTrack((wt.change2.WTChangeRequest2)primaryBusinessObject, "COMPLEX"); wt.session.SessionServerHelper.manager.setAccessEnforced( true ); Reject wt.session.SessionServerHelper.manager.setAccessEnforced( false ); com.ptc.windchill.pdmlink.change.server.impl.WorkflowProcessHelper.setTrack((wt.change2.WTChangeRequest2)primaryBusinessObject, "SIMPLE"); wt.session.SessionServerHelper.manager.setAccessEnforced( true ); Verify ECR primaryBusinessObject Comments Clairification_Comments CRB_Comments Reject wt.session.SessionServerHelper.manager.setAccessEnforced( false ); com.ptc.windchill.pdmlink.change.server.impl.WorkflowProcessHelper.setTrack((wt.change2.WTChangeRequest2)primaryBusinessObject, "SIMPLE"); wt.session.SessionServerHelper.manager.setAccessEnforced( true );