Advanced Customization > Business Logic Customization > Customizing Life Cycle Administration > Defining Custom Life Cycle Transitions
  
Defining Custom Life Cycle Transitions
You can create custom life cycle transitions that you can then define between life cycle states using the Life Cycle Administration utility.
There are two methods to accomplish this:
Use the Enumerated Type Customization Utility
Create a custom TransitionRB.rbInfo file
* 
If you want to use the new transition as part of a change process, you must perform additional steps. For more information, see Custom Change Process Transitions.



Use the enumcustomize Utility
1. From a Windchill shell, run the following command:
enumcustomize
2. The Enumerated Type Customization Utility window opens.
3. Click Browse and navigate to the following file:
codebase\wt\lifecycle\TransitionRB.RB.ser
4. Click New to create a new transition:
5. Select the Selectable checkbox.
6. Click Save and Exit.
7. From the Windchill shell, execute the following command:
ant -f codebase\makejar.xml



Modify TransitionRB.rbInfo
The follow example creates a new transition called “Reject”:
1. Locate the following file (or create it if it does not exist):
<Windchill>/wtCustom/wt/lifecycle/TransitionRB.rbInfo
2. Add the following entry:
USER_REJECT.value=Reject
USER_REJECT.shortDescription=Reject transition
3. Build the runtime resource bundles for the customized packages by entering the following command from a Windchill shell:
ResourceBuild wt.lifecycle.TransitionRB



Results
As a result:
The new transition is added to the transitions that are available when you create or update life cycles using the Life Cycle Administration utility.
The new transition can be accessed programmatically.
You can invoke the navigate() method to find the valid transitions between states using that new transition:
WTKeyedMap rejectMap=new WTKeyedHashMap();
Set rejectSet = new HashSet();
State rejectState=State.toState("DESIGN");
rejectSet.add(rejectState);
rejectMap.put(<life_cycle_managed>, rejectSet);
WTKeyedHashMap returnMap =
(WTKeyedHashMap) LifeCycleHelper.service.navigate
(rejectMap,
Transition.toTransition("USER_REJECT"),
true);
The above call to navigate() returns the successor states to the DESIGN state on a life cycle managed object (<life_cycle_managed>), following valid USER_REJECT transitions.