USER DEVICE CONFIGURATION SPECIFICATION AND CONFLICT RESOLUTION MODULE
In some examples, a method involves rendering a graphical user interface having an Assignment Map canvas for specifying an Assignment Map, the Assignment Map graphically representing configuration data for a set of one or more user devices. User input specifies a set of conditional logic blocks at respective graphical positions within the Assignment Map canvas, each conditional logic block comprising one or more conditional logic nodes, each conditional logic node having a respective assignment rule and a respective set of Library Items. For each user device, the set of conditional logic blocks are evaluated in an order determined by a relative graphical position of each conditional logic block along a root line within the Assignment Map canvas. Each user device is then configured using respective configuration data generated based on an evaluation outcome of the plurality of conditional logic blocks.
1 . A method, comprising:
graphically rendering, by one or more processors, a graphical user interface having an Assignment Map canvas for specifying an Assignment Map, the Assignment Map graphically representing configuration data for a set of one or more user devices;
receiving, by the one or more processors, user input specifying a plurality of conditional logic blocks at respective graphical positions within the Assignment Map canvas, each conditional logic block comprising a set of one or more conditional logic nodes, each conditional logic node having a respective assignment rule and a respective set of one or more Library Items;
for each user device of the set of one or more user devices, evaluating, by the one or more processors, the plurality of conditional logic blocks in an order determined by relative graphical position of each conditional logic block along a root line within the Assignment Map canvas; and
configuring, by the one or more processors, each user device using respective configuration data generated based on an evaluation outcome of the plurality of conditional logic blocks.
2 . The method of claim 1 , further comprising:
determining, by the one or more processors, a priority hierarchy of the plurality of conditional logic blocks based on the relative graphical positions of the conditional blocks within the Assignment Map canvas.
3 . The method of claim 2 , further comprising:
resolving, by the one or more processors, conflicts between Library Items within the Assignment Map based on the determined priority hierarchy of the conditional logic blocks.
4 . The method of claim 1 , wherein evaluating the plurality of conditional logic blocks comprises:
identifying, by the one or more processors, the root line of the Assignment Map canvas, the root line defining a primary evaluation flow of the plurality of conditional logic blocks;
identifying, by the one or more processors, one or more nested conditional logic blocks having a secondary evaluation flow that diverges from the primary evaluation flow of the root line;
evaluating, by the one or more processors, the nested conditional logic blocks along the secondary evaluation flow; and
reconverging, by the one or more processors, the secondary evaluation flow with the primary evaluation flow of the root line after evaluation of the nested conditional logic blocks.
5 . The method of claim 4 , wherein:
the primary evaluation flow of the root line and the secondary evaluation flow of the nested conditional logic blocks are graphically distinguished within the Assignment Map canvas, and wherein the graphical distinctions include:
rendering, by the one or more processors, the root line as a continuous graphical path connecting a first set of conditional logic blocks of the plurality of conditional logic blocks;
graphically rendering, by the one or more processors, the nested conditional logic blocks as a second set of conditional logic blocks having a parallel graphical path diverging from the root line; and
visually indicating, by the one or more processors, a reconvergence point where the parallel graphical path of the nested conditional logic blocks reconnects with the root line.
6 . The method of claim 4 , further comprising:
determining, by the one or more processors, an evaluation priority for the nested conditional logic blocks based on their graphical positions within the Assignment Map canvas; and
resolving, by the one or more processors, conflicts between Library Items associated with the root line and Library Items associated with the nested conditional logic blocks based on the evaluation priority to generate the configuration data for each user device.
7 . The method of claim 1 , wherein the evaluating the plurality of conditional logic blocks comprises:
for each user device of the set of one or more user devices, iterating through each conditional logic block in the Assignment Map canvas in an order based on relative graphical positions therebetween;
for each conditional logic block, iterating through one or more conditional logic nodes in the conditional logic block;
determining, for each conditional logic node, whether attributes of the user device satisfy an assignment rule of that conditional logic node;
in response to determining that the assignment rule is satisfied, adding a respective set of one or more Library Items associated with that conditional logic node to the configuration data for that user device; and
ceasing evaluation of subsequent conditional logic nodes within that conditional logic block and proceeding to evaluate a next conditional logic block of the plurality of conditional logic blocks.
8 . The method of claim 7 , wherein:
the attributes of the user device comprise one or more of a user device type, an operating system version of the user device, a user profile of a user associated with the user device, and a group membership of a user associated with the user device.
9 . The method of claim 2 , wherein adding a respective set of one or more Library Items associated with the conditional logic node to a configuration data for the user device comprises:
identifying a conflict key associated with each Library Item of the respective set of Library Items;
determining whether Library Item data already exists at an index in the configuration data corresponding to the conflict key; and
in response to determining that Library Item data already exists at the index, flagging the respective Library Item as having a conflict.
10 . The method of claim 9 , further comprising:
storing the respective Library Item at the index in the configuration data, wherein the stored Library Item overwrites any previously existing Library Item data.
11 . The method of claim 9 , wherein:
the conflict key identifies one or both of i) mutually exclusive Library Items, and ii) variants of the same Library Item.
12 . The method of claim 1 , wherein:
the Assignment Map canvas further enables user input for adding text annotations to one or more of the conditional logic blocks, conditional logic nodes, and Library Items, the text annotations being visually rendered within the Assignment Map canvas.
13 . The method of claim 1 , further comprising:
identifying, by the one or more processors, differences between a first Assignment Map and a second Assignment Map; and
rendering, by the one or more processors, a graphical display depicting the differences between the first Assignment Map and the second Assignment Map.
14 . The method of claim 13 , further comprising:
identifying, by the one or more processors, a current configuration of a user device;
using, by the one or more processors, a committed configuration of the user device to generate the first Assignment Map; and
using, by the one or more processors, an uncommitted Assignment Map as the second Assignment Map.
15 . The method of claim 1 , further comprising:
graphically distinguishing, by the one or more processors, each conditional logic block and conditional logic node that was satisfied for a user device during the evaluation of the plurality of conditional logic blocks, in accordance with a first visual motif; and
graphically distinguishing, by the one or more processors, each conditional logic node that was not satisfied for the user device during the evaluation of the plurality of conditional logic blocks, in accordance with a second visual motif.
16 . The method of claim 1 , wherein configuring each user device based on an evaluation outcome of the plurality of conditional logic blocks comprises:
generating, by the one or more processors, the configuration data for the user device based on the evaluation outcome, the configuration data including one or more Library Items selected for the user device;
transmitting, by the one or more processors, the configuration data to the user device; and
applying, by a device agent on the user device, the one or more Library Items specified in the configuration data.
17 . The method of claim 1 , further comprising:
receiving user input specifying a particular user device; and
graphically displaying a logic evaluation flow of that user device through the Assignment Map within the Assignment Map canvas, the display including:
each conditional logic block and conditional logic node evaluated for that user device;
the respective Library Items assigned to or excluded from the user device; and
a graphical indication of the reasons that specific Library Items were excluded from being applied to that user device.
18 . The method of claim 1 , wherein:
the Assignment Map canvas provides a user interface for repositioning conditional logic blocks along the root line via drag-and-drop functionality.
19 . The method of claim 1 , wherein:
the graphical user interface provides a user interface for filtering Library Items by user device attributes.
20 . The method of claim 1 , further comprising:
generating, by the one or more processors, a graphical indication in the Assignment Map canvas for each Library Item that was excluded from being applied to a user device, wherein the graphical indication specifies the condition that caused the exclusion.