Sun Identity Manager Deployment Guide

Adding a Task to the Repository

After you set up task authorization, you can add the task to the repository. The task is a typical TaskDefinition that can be defined through the Sun Identity Manager Integrated Development Environment or imported as XML. For example, a task to change the organization for multiple users would resemble the following example (which is included in the samples directory).


Example 6–2 Changing the Organization for Multiple Users


<?xml version=’1.0’ encoding=’UTF-8’?> 
<!DOCTYPE TaskDefinition PUBLIC ’waveset.dtd’ ’waveset.dtd’> 
<!-- MemberObjectGroups="#ID#Top" authType="Move User" name="Change Organizations" 
taskType="Workflow" visibility="runschedule"--> 
<TaskDefinition authType=’MoveUser’ name=’Change Organizations’ taskType=’Workflow’ 
executor=’com.waveset.workflow.WorkflowExecutor’ suspendable=’true’ syncControlAllowed=’true’ execMode=’sync’ 
execLimit=’0’ resultLimit=’0’ resultOption=’delete’ visibility=’runschedule’ progressInterval=’0’> 
   <Form name=’Change Organization Form’ title=’Change Organization Form’> 
      <Display class=’EditForm’/> 
      <Include>
         <ObjectRef type=’UserForm’ name=’User Library’/> 
         <ObjectRef type=’UserForm’ name=’Organization Library’/> 
      </Include> 
      <FieldRef name=’namesList’/> 
      <FieldRef name=’orgsList’/> 
      <FieldRef name=’waveset.organization’/> 
   </Form> 
   <Extension> 
      <WFProcess name=’Change Organizations’ title=’Change Organizations’> 
         <Variable name=’waveset.organization’/> 
         <Variable name=’userObjectIds’ input=’true’> 
            <Comments>The names of the accounts to change the organization on.</Comments> 
         </Variable> 
         <Activity id=’0’ name=’start’> 
            <ReportTitle> 
               <s>start</s> 
            </ReportTitle> 
            <Transition to=’Process Org Moves’/> 
         </Activity> 
         <Activity id=’1’ name=’Process Org Moves’> 
            <Action id=’0’ process=’Move User’> 
               <Iterate for=’currentAccount’ in=’userObjectIds’/> 
               <Argument name=’userId’ value=’$(currentAccount)’/> 
               <Argument name=’organizationId’ value=’$(waveset.organization)’/> 
             </Action> 
             <Transition to=’end’/> 
         </Activity> 
         <Activity id=’2’ name=’end’/> 
      </WFProcess> 
   </Extension> 
   <MemberObjectGroups> 
      <ObjectRef type=’ObjectGroup’ id=’#ID#Top’ name=’Top’/> 
   </MemberObjectGroups> 
</TaskDefinition>

Note these features of the preceding example:

The following table lists the variables that are available for input to the task.

Table 6–1 Task Variables

Variable 

Description  

userObjectIds

List of IDs of the selected users. Available from the User Account Search Results and Accounts pages. When invoked from the User Account Search Results page, this list contains the names of the selected users. 

userNames

List of names of the selected users. Available from the User Account Search Results and Accounts pages. 

orgObjectIds

A List of IDs of the selected organizations. Available only from the Accounts page. 

orgNames

A List of names of the selected organizations. Available only from the Accounts page. 

To enable this workflow, you must also add to the repository a sub-process to change a user’s organization, as shown in the following example.


Example 6–3 Changing a User’s Organization


<?xml version=’1.0’ encoding=’UTF-8’?> 
<!DOCTYPE Configuration PUBLIC ’waveset.dtd’ ’waveset.dtd’> 
<!-- MemberObjectGroups="#ID#Top" configType="WFProcess" name="Move User"--> 
<Configuration name=’Move User’ createDate=’1083353996807’> 
   <Extension> 
      <WFProcess name=’Move User’ title=’Move User’> 
         <Variable name=’userId’ input=’true’> 
            <Comments>The accountId of the user to move.</Comments> 
         </Variable> 
         <Variable name=’organizationId’ input=’true’> 
            <Comments>The ID of the organization to move the user into.</Comments> 
         </Variable> 
         <Activity id=’0’ name=’Start’> 
            <Transition to=’Update Organization’/> 
         </Activity> 
         <Activity id=’1’ name=’Update Organization’> 
            <Action id=’0’ process=’Update User View’> 
               <Argument name=’accountId’ value=’$(userId)’/> 
               <Argument name=’updates’> 
                  <map> 
                     <s>waveset.organization</s> 
                     <ref>organizationId</ref> 
                  </map> 
               </Argument> 
            </Action> 
            <Transition to=’End’/> 
         </Activity> 
         <Activity id=’2’ name=’End’/> 
      </WFProcess> 
   </Extension> 
   <MemberObjectGroups> 
      <ObjectRef type=’ObjectGroup’ id=’#ID#Top’ name=’Top’/> 
   </MemberObjectGroups> 
</Configuration>