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
}