ECO Process =================== primaryBusinessObject cibComments auditComments submitDate approvalDate fastTrack ammendComments inInitialPhase ecoNumber ecoName ecoContainer ecoDescription =================== Rework_Comments isRework Set State Implementation primaryBusinessObject aState =================== Set State Implementation primaryBusinessObject aState =================== ECO Complete Notification subject message primaryBusinessObject =================== Set State Implementation primaryBusinessObject aState =================== Set State Under Review primaryBusinessObject aState =================== Set State Pending Approval primaryBusinessObject aState =================== ECO Rejected by CC subject message primaryBusinessObject =================== Set State Cancelled primaryBusinessObject aState =================== ECO Submitted subject message primaryBusinessObject =================== Set State Closed primaryBusinessObject aState =================== ECP Rejected by Govt subject message primaryBusinessObject =================== Set State Cancelled primaryBusinessObject aState =================== Set ECO Resolution Date primaryBusinessObject cibComments auditComments submitDate approvalDate fastTrack ammendComments inInitialPhase ecoNumber ecoName ecoContainer ecoDescription Rework_Comments isRework _ROBOT_EXPRESSION_ com.ptc.windchill.pdmlink.change.server.impl.WorkflowProcessHelper.setECNResolutionDate((wt.change2.WTChangeOrder2)primaryBusinessObject); =================== Set Submit Date, etc. primaryBusinessObject cibComments auditComments submitDate approvalDate fastTrack ammendComments inInitialPhase ecoNumber ecoName ecoContainer ecoDescription Rework_Comments isRework _ROBOT_EXPRESSION_ submitDate=new Timestamp(System.currentTimeMillis()); ecoName = ((wt.change2.WTChangeOrder2)primaryBusinessObject).getName(); ecoNumber = ((wt.change2.WTChangeOrder2)primaryBusinessObject).getNumber(); ecoDescription = ((wt.change2.WTChangeOrder2)primaryBusinessObject).getDescription(); ecoContainer = ((wt.change2.WTChangeOrder2)primaryBusinessObject).getContainerName(); java.lang.String role="wt.project.role.CHANGE ADMINISTRATOR I"; com.ptc.windchill.pdmlink.change.server.impl.WorkflowProcessHelper.setRoleToECN((wt.change2.WTChangeOrder2)primaryBusinessObject, role); role="wt.project.role.ECR AUTHOR"; com.ptc.windchill.pdmlink.change.server.impl.WorkflowProcessHelper.setRoleToECN((wt.change2.WTChangeOrder2)primaryBusinessObject, role); =================== Synch on CA Complete primaryBusinessObject cibComments auditComments submitDate approvalDate fastTrack ammendComments inInitialPhase ecoNumber ecoName ecoContainer ecoDescription Rework_Comments isRework _SYNCH_EXPRESSION_ // This code returns COMPLETED if at least one Change Activity is in state // "Completed" and the rest are in state "Completed" or "Cancelled". // It returns CANCELLED if all Change Activities are in state "Cancelled" or // NOT_FINISHED if at least one Change Activity is pending // (i.e. has not reached either state "Completed" or "Cancelled"). wt.fc.QueryResult qResult = wt.change2.ChangeHelper2.service.getChangeActivities( (wt.change2.ChangeOrder2) 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("COMPLETED")) ) { result_value = "COMPLETED"; } else if( life_cycle_managed.getLifeCycleState().equals(wt.lifecycle.State.toState("CANCELLED")) ) { if( result_value == "NO_SUBORDINATES" || !result_value.equals("COMPLETED") ) result_value = "CANCELLED"; } else { result_value = "NOT_FINISHED"; } } } if( (result_value.equals("COMPLETED") || result_value.equals("NO_SUBORDINATES")) && !isRework ) result = "Complete"; else if( result_value.equals("CANCELLED") ) result = "Cancelled"; else if( result_value.equals("NOT_FINISHED") ) result = null; _INITIAL_SYNCH_EXPRESSION_ // This code returns COMPLETED if at least one Change Activity is in state // "Completed" and the rest are in state "Completed" or "Cancelled". // It returns CANCELLED if all Change Activities are in state "Cancelled" or // NOT_FINISHED if at least one Change Activity is pending // (i.e. has not reached either state "Completed" or "Cancelled"). wt.fc.QueryResult qResult = wt.change2.ChangeHelper2.service.getChangeActivities( (wt.change2.ChangeOrder2) 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("COMPLETED")) ) { result_value = "COMPLETED"; } else if( life_cycle_managed.getLifeCycleState().equals(wt.lifecycle.State.toState("CANCELLED")) ) { if( result_value == "NO_SUBORDINATES" || !result_value.equals("COMPLETED") ) result_value = "CANCELLED"; } else { result_value = "NOT_FINISHED"; } } } if( (result_value.equals("COMPLETED") || result_value.equals("NO_SUBORDINATES")) && !isRework ) result = "Complete"; else if( result_value.equals("CANCELLED") ) result = "Cancelled"; else if( result_value.equals("NOT_FINISHED") ) result = null; =================== Synch on CA Complete primaryBusinessObject cibComments auditComments submitDate approvalDate fastTrack ammendComments inInitialPhase ecoNumber ecoName ecoContainer ecoDescription Rework_Comments isRework _SYNCH_EXPRESSION_ // This code returns COMPLETED if at least one Change Activity is in state // "Completed" and the rest are in state "Completed" or "Cancelled". // It returns CANCELLED if all Change Activities are in state "Cancelled" or // NOT_FINISHED if at least one Change Activity is pending // (i.e. has not reached either state "Completed" or "Cancelled"). wt.fc.QueryResult qResult = wt.change2.ChangeHelper2.service.getChangeActivities( (wt.change2.ChangeOrder2) 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("COMPLETED")) ) { result_value = "COMPLETED"; } else if( life_cycle_managed.getLifeCycleState().equals(wt.lifecycle.State.toState("CANCELLED")) ) { if( result_value == "NO_SUBORDINATES" || !result_value.equals("COMPLETED") ) result_value = "CANCELLED"; } else { result_value = "NOT_FINISHED"; } } } if( (result_value.equals("COMPLETED") || result_value.equals("NO_SUBORDINATES")) && !isRework ) result = "Complete"; else if( result_value.equals("CANCELLED") ) result = "Cancelled"; else if( result_value.equals("NOT_FINISHED") ) result = null; _INITIAL_SYNCH_EXPRESSION_ // This code returns COMPLETED if at least one Change Activity is in state // "Completed" and the rest are in state "Completed" or "Cancelled". // It returns CANCELLED if all Change Activities are in state "Cancelled" or // NOT_FINISHED if at least one Change Activity is pending // (i.e. has not reached either state "Completed" or "Cancelled"). wt.fc.QueryResult qResult = wt.change2.ChangeHelper2.service.getChangeActivities( (wt.change2.ChangeOrder2) 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("COMPLETED")) ) { result_value = "COMPLETED"; } else if( life_cycle_managed.getLifeCycleState().equals(wt.lifecycle.State.toState("CANCELLED")) ) { if( result_value == "NO_SUBORDINATES" || !result_value.equals("COMPLETED") ) result_value = "CANCELLED"; } else { result_value = "NOT_FINISHED"; } } } if( (result_value.equals("COMPLETED") || result_value.equals("NO_SUBORDINATES")) && !isRework ) result = "Complete"; else if( result_value.equals("CANCELLED") ) result = "Cancelled"; else if( result_value.equals("NOT_FINISHED") ) result = null; =================== Submit Now primaryBusinessObject cibComments auditComments submitDate approvalDate fastTrack ammendComments inInitialPhase ecoNumber ecoName ecoContainer ecoDescription Rework_Comments isRework _SYNCH_EXPRESSION_ // Continue if the primaryBusinessObject has progressed past the initial state // If the ECO is in state UNDERREVIEW, set to IMPLEMENTATION (Workaround for incedibly stupid OOTB implementation of AbstractUpdateChange2Delegate) wt.lifecycle.LifeCycleManaged lifecyclemanaged = (wt.lifecycle.LifeCycleManaged) primaryBusinessObject; inInitialPhase =wt.lifecycle.LifeCycleHelper.service.isInInitialPhase( lifecyclemanaged ) ; if( inInitialPhase != true ) { if( lifecyclemanaged.getLifeCycleState() == wt.lifecycle.State.toState("UNDERREVIEW") ) { wt.session.SessionContext sessioncontext = wt.session.SessionContext.getContext(); try { wt.session.SessionHelper.manager.setAdministrator(); primaryBusinessObject = (wt.fc.WTObject) wt.lifecycle.LifeCycleHelper.service.setLifeCycleState( lifecyclemanaged, wt.lifecycle.State.toState("IMPLEMENTATION") ); } finally { wt.session.SessionContext.setContext( sessioncontext ); } } result = "Go"; } else { result = null; } _INITIAL_SYNCH_EXPRESSION_ // Continue if the primaryBusinessObject has progressed past the initial state // If the ECO is in state UNDERREVIEW, set to IMPLEMENTATION (Workaround for incedibly stupid OOTB implementation of AbstractUpdateChange2Delegate) wt.lifecycle.LifeCycleManaged lifecyclemanaged = (wt.lifecycle.LifeCycleManaged) primaryBusinessObject; System.out.println("DEBUG, ECO Process, Submit Now; LifeCycleState = " + lifecyclemanaged.getLifeCycleState()); inInitialPhase =wt.lifecycle.LifeCycleHelper.service.isInInitialPhase( lifecyclemanaged ) ; if( inInitialPhase != true ) { if( lifecyclemanaged.getLifeCycleState() == wt.lifecycle.State.toState("UNDERREVIEW") ) { wt.session.SessionContext sessioncontext = wt.session.SessionContext.getContext(); try { wt.session.SessionHelper.manager.setAdministrator(); primaryBusinessObject = (wt.fc.WTObject) wt.lifecycle.LifeCycleHelper.service.setLifeCycleState( lifecyclemanaged, wt.lifecycle.State.toState("IMPLEMENTATION") ); } finally { wt.session.SessionContext.setContext( sessioncontext ); } } result = "Go"; } else { result = null; } =================== Update XXI primaryBusinessObject =================== Government Review primaryBusinessObject Comments approval_date Rework_Comments =================== Approve approval_date=new Timestamp(System.currentTimeMillis()); =================== Rework ECO primaryBusinessObject Comments Rework_Instructions isRework =================== START isRework=true; =================== COMPLETE isRework=false; =================== Rework ECO primaryBusinessObject Comments Rework_Instructions isRework =================== START isRework=true; =================== COMPLETE isRework=false; =================== Submit ECO primaryBusinessObject inInitialPhase =================== START result = inInitialPhase; =================== Verify ECO & Create ECN primaryBusinessObject Comments approval_date Rework_Comments =================== Approve approval_date=new Timestamp(System.currentTimeMillis());