Basic Customization > User Interface Customization > Constructing Wizards > Building Wizards to Create a Single Object > Solution > Procedure — Creating Your Wizard
  
Procedure — Creating Your Wizard
You will need to perform the following tasks to create your wizard:
Create an Action for the wizard
Create a main jsp file for your wizard
Create your first custom step
Select Reusable Steps
Create an Action for the wizard
You will need an action to launch your new wizard. For more details on the options available for this action see the Wizard Processing. A simple action could look like this:
<objecttype name="Novel">
<action name="create">
<command class="com.ptc.core.components.forms.CreateObjectFormProcessor"
method="execute"
url="netmarkets/jsp/carambola/customization/examples/wizard/
wizardExampleTwo.jsp"
windowType="popup"/>
</action>
</objecttype>
* 
If you follow the standard naming convention for actions and place your jsp in the <objecttype>\<actionname>.jsp location you do not need the url parameter. The pretend object types for the examples do not follow that in order to avoid cluttering your system.
We recommend that you name your action (and main wizard jsp file) “create.” If you will have more than one create action for your objecttype based on launch point or other criteria, you can add a suffix to the action name to qualify it, as shown below:
createFrom<launch point>
Example: createFromWorkspace
create<type of object>
Example: createSharedDocument
Add this action to an action model so that you can access it on your system.
Create a main jsp file for your wizard
You will need to create a jsp which describes your create wizard. To start with we will put in just the wizard tag. This does not specify enough information for the wizard to work but at this point you can click the action and see the wizard open.
<%@ taglib prefix="jca" uri="http://www.ptc.com/windchill/taglib/components"%>
<%@ taglib uri="http://www.ptc.com/windchill/taglib/fmt" prefix="fmt"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<%@ include file="/netmarkets/jsp/components/beginWizard.jspf"%>
<%@ include file="/netmarkets/jsp/components/includeWizBean.jspf"%>

<jca:wizard title="Create Literature">
</jca:wizard>

<%@include file="/netmarkets/jsp/util/end.jspf"%>
At this point, if you launch your wizard, you should see the message “No Valid Actions to Display” as we have not yet defined any steps.
For additional information on the customizations you can make to your main wizard jsp see the Wizard Processing and Sample Code.
Create your first custom step
A custom wizard step is also made up of an action and a jsp.
Action:
<action name="createNovelStep">
<label>Welcome to your Create Novel Wizard</label>
<command url="netmarkets/jsp/carambola/customization/examples/wizard/createNovelStep.jsp"
windowType="wizard_step"/>
</action>
Initial JSP content: Hello World.
Update the WizardTag to include your step:
<jca:wizard title="Create Literature">
<jca:wizardStep action="createLiteratureStep" type="fakeLiterature"/>
</jca:wizard>
At this point you have created a simple wizard and when you launch it you should see:
You can now develop your own jsp files for your unique steps using the same table, property panel, and javascript components used in the jsp files for common steps.
Select Reusable Steps
When you are unable to use one of the out of the box wizards for you object type, you can still reuse some of the out of the box steps.
For this example, we will add the defineItemAttributesWizStep and the attachments step. For full details on all the options available for these steps see Attachments and Customizing Reusable Wizard Steps.
Update the create.jsp to include these steps:
<%@ taglib prefix="jca" uri="http://www.ptc.com/windchill/taglib/components"%>
<%@ taglib uri="http://www.ptc.com/windchill/taglib/fmt" prefix="fmt"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<%@ include file="/netmarkets/jsp/components/beginWizard.jspf"%>
<%@ include file="/netmarkets/jsp/components/includeWizBean.jspf"%>

<jca:initializeItem operation="${createBean.create}" baseTypeName=
"wt.doc.WTDocument|org.example.FakeLiterature"/>
<jca:wizard buttonList="DefaultWizardButtons" helpSelectorKey="AssignView_help"
title="Create Literature">
<jca:wizardStep action="createLiteratureStep" type="fakeLiterature"/>
<jca:wizardStep action="defineItemAttributesWizStep" type="object"/>
<jca:wizardStep action="attachments_step" type="attachments" />
</jca:wizard>

<%@include file="/netmarkets/jsp/util/end.jspf"%>
* 
For the defineItemAttributesWizStep we also had to include the initializeItem tag to setup the type we are creating. For more details on this tag and on the other options available when using this step see Customizing Reusable Wizard Steps.
At this point your wizard can create FakeLiterature objects. There are many variations on this basic setup. For more information see the customizations below, the sample code below, the Wizard Processing and Customizing Reusable Wizard Steps.