UserPickList

Node Action:

This node action presents a list of users associated with a tenant as seen from the Access service. The result variable captures the selected user's ID so that it can be used in additional operations, such as assigning tasks.

Parameters:

se_type

UserPickList

se_type = UserPickList

se_roles

Collection of roles by which to filter the picklist.

The Assignment ID string is parsed into a Guid and used to search for a valid assignment.

se_resultVariable

Name of the result variable to store the data from the node action.

Example:

Reassign Selected Session(s): This example illustrates using the UserPickList node action to prompt the user to select a person to whom the session needs to be reassigned.

digraph workflow {
  
  entry[
    label = "Reassign Button"
    se_type0 = MultiSessionOperationTrigger
    se_displayName0 = "Reassign"
    se_sortOrder0 = 10
    se_visibilityCondition0 = "(ctx, log) => {
      return ((IEnumerable<dynamic>)ctx.Event.assignments).All(a => a.assignedTo == ctx.User.UserId) && ctx.Event.isSessionOpen == false;
    }"
    
    se_type1 = SessionOperationTrigger
    se_displayName1 = "Reassign"
    se_sortOrder1 = 50
    se_visibilityCondition1 = "(ctx, log) => {
      return ctx.Event.assignment.assignedTo == ctx.User.UserId && ctx.Event.isSessionOpen == false;
    }"
     
    
    se_type2 = Action,
    se_action2 = "(ctx, log) => {
      if(ctx.Event.assignments != null)
      {
        ctx.State.Assignments = ctx.Event.assignments;
      }
      else
      {
        ctx.State.Assignments = new[] {ctx.Event.assignment};
      }
    }",

  ]
  
  selectUser[
    se_type0 = UserPickList,
    se_resultVariable0 = SelectedUser
  ]
  
  confirmSelectedUser[
    se_type0 = PromptUser,
    se_resultVariable0 = ConfirmedSelectedUser,
    se_promptCaption0 = "Reassign Confirmation",
    se_cardTemplate0 = "{          
        \"$schema\": \"http://adaptivecards.io/schemas/adaptive-card.json\",
        \"type\": \"AdaptiveCard\",
        \"version\": \"1.3\",
        \"body\": [         
           {
                \"type\": \"TextBlock\",
                \"style\":\"heading\",
                \"size\": \"large\",
                \"text\": \"Confirm Selection: ${selection}\"
          },        
          {
                \"type\": \"TextBlock\",
                \"style\":\"heading\",                
                \"text\": \"Are you sure?\"
          },      
          {
              \"type\": \"ActionSet\",
              \"actions\": [
                {
                    \"type\": \"Action.Submit\",
                    \"title\": \"Yes\",
                    \"style\": \"positive\",
                    \"role\": \"Button\"
                },
                 {
                  \"type\": \"Action.Submit\",
                  \"title\": \"No\",
                  \"style\": \"positive\",
                  \"role\": \"Button\"
                }
             ]               
           },
         ]
      }",
      
    se_determineCardData0 = "(ctx, log) => {       
       var selection = ctx.State.SelectedUser != Guid.Empty.ToString() ? ctx.State.SelectedUser : \"Unassign\";
       return JToken.FromObject(new Dictionary<string, object>{{\"selection\", selection}});
    }"
  ]
  
  reassign[
    se_executionOrder = ForEach
    se_forEachEnumerable = Assignments
  
    se_type0 = Api,
    se_method0 = POST
    se_modifyRequest0 = "(request, ctx, log) => {
      request.RequestUri = new Uri($\"api/v1/assignments/{ctx.State.__currentForEachItem.id}/assign?to={ctx.State.SelectedUser}\", UriKind.RelativeOrAbsolute);
    }",
    se_resultVariable0 = newAssignment
    se_service0 = Editor

  ]
  
  unassign[
    se_executionOrder = ForEach
    se_forEachEnumerable = Assignments
  
    se_type0 = Api,
    se_method0 = POST
    se_modifyRequest0 = "(request, ctx, log) => {
       request.RequestUri = new Uri($\"api/v1/assignments/{ctx.State.__currentForEachItem.id}/unassign\", UriKind.RelativeOrAbsolute);       
    
    }",
    se_resultVariable0 = newAssignment
    se_service0 = Editor

  ]
  
  
  notifyUser[
    label = "Notify user"
  
    se_type0 = NotifyUser,
    se_determineMessage0 = "(ctx, log) => {
      return ctx.State.NotifyUserText;
    }",
    se_notificationType0 = "Information",
    se_showToast0 = true
    
    
    se_type1 = RefreshMyJobsList,
    
    se_type2 = RefreshAvailableJobsList,
  ]

  exit[
    shape=invhouse, 
    color="#22FF44", 
    style=filled
 ]   
   
  entry->selectUser;  
 
  
  confirmSelectedUser->reassign[
     se_type = Condition,
     se_condition = "(ctx, log) => {
      var result = ctx.State.SelectedUser != null && ctx.State.SelectedUser != Guid.Empty.ToString() && ctx.State.ConfirmedSelectedUser.submittedAction.title == \"Yes\"; 
      if(result)
      {
        ctx.State.NotifyUserText = $\"All the selected sessions now belong to {ctx.State.SelectedUser}.\";
      }
      return result;
    }"
  ]
  
  confirmSelectedUser->unassign[
      se_type = Condition,
      se_condition = "(ctx, log) => {
      var result = ctx.State.SelectedUser != null && ctx.State.SelectedUser == Guid.Empty.ToString() && ctx.State.ConfirmedSelectedUser.submittedAction.title == \"Yes\";
      if(result)
      {
        ctx.State.NotifyUserText = $\"All the selected sessions are now unassigned.\";
      }
      return result;
        
    }"  
  ]
  
  confirmSelectedUser->selectUser[
    se_type = Condition,
    se_condition = "(ctx, log) => {
      return ctx.State.ConfirmedSelectedUser.submittedAction.title == \"No\" || ctx.State.ConfirmedSelectedUser.submittedAction.title == \"Cancel\";
    }"
  ]
  
  selectUser->confirmSelectedUser[
    se_type = Condition,
    se_condition = "(ctx, log) => {
      return ctx.State.SelectedUser != null; 
    }"
  ];
  
  selectUser->exit[
    se_type = Condition,
    se_condition = "(ctx, log) => {
      return ctx.State.SelectedUser == null; 
    }"
  ]
  unassign->notifyUser;
  reassign->notifyUser;
  notifyUser->exit
} 
QR Code is a registered trademark of DENSO WAVE INCORPORATED in Japan and other countries.

Was this helpful?