An organization or a business can include hundreds to thousands of employees. Given the sheer number of employees and the various roles and positions within the organization or the business, the management of profiles of the employees can be cumbersome. As an example, creating a user profile for a new employee can be cumbersome and time-consuming, given the number of facets associated with the new employment, such as main job functions and derivatives thereof.
The following detailed description refers to the accompanying drawings. The same reference numbers in different drawings may identify the same or similar elements. Also, the following detailed description does not limit the invention.
An organization may create user profiles to assist in the management of the organization. For example, when a person joins the organization, a member of the organization creates a user profile for the new person. In addition to providing basic information (e.g., name, etc.), the creation of the user profile may include assigning numerous permissions or other facets of membership in the organization that enable certain capabilities or job functions. Thus, the creation of the user profile can become very cumbersome and time-consuming, especially as an application that manages user profiles evolves and includes new capabilities and control settings. Additionally, the relationship between one person's profile to another person's profile can be difficult to manage given the dynamic nature of roles within the organization on a day-to-day basis.
According to an exemplary embodiment, a profile manager provides for the creation and management of user profiles. According to an exemplary embodiment, the profile manager creates a user profile based on a profile model. The profile model includes properties attributable to a person. For example, a property identifies a facet or a dimension of the person. By way of further example, a user (e.g., an administrator) of the profile manager may configure the profile model so as to identify a person based on a basic property that includes a name of the person, a member identifier, and communication information (e.g., telephone number, e-mail address, etc.); a position property that indicates the person's position in the organization; a location property that indicates a geographic location where the person works; and a service area property that indicates a geographic area in which the person services. According to an exemplary embodiment, the profile manager allows the properties to be configurable. In this way, a user of the profile manager may, for example, add a property or delete a property to configure the profile model. As a result, the number of properties and the nature of the properties are configurable and may vary depending on the various factors (e.g., diversity of persons for whom the user profiles are created, user discretion, etc.).
According to an exemplary embodiment, each property has one or multiple property values that can be selected and correspond to a facet or dimension of the person for which the user profile is created. For example, a property value of the position property may be an executive secretary or a Chief Financial Officer (CFO). By way of another example, a property value of the location property may be New York, Texas, or California. In this way, when a user creates a user profile via the profile manager, the user selects property values associated with properties that correspond to the user. For example, if the user is creating a user profile of a person that is an executive secretary and works in California, the user would select the property value of executive secretary and the property value of California, which belong to the position property and the location property, respectively.
According to an exemplary embodiment, each property of the profile model is implemented by a tree structure (e.g., a tree hierarchy). For example, a position property tree may include a root node indicating the property (e.g., position), and then leaf nodes indicating various positions (e.g., secretary, manager, call center agent, line technician, etc.). The profile manager may be configured so that the user's selection of property values (e.g., leaf nodes) associated with the trees may define or are representative of the person. That is, the union of selected nodes of multiple trees identifies the person. Accordingly, the properties and the values of the properties may identify the person rather than the attributes (e.g., permissions, functions, etc.,) that are afforded to the person. As described further below, according to an exemplary embodiment, a person inherits attributes which stem from the properties and the values assigned to (e.g., selected by the user when creating the user profile on behalf of the person) the person.
According to an exemplary embodiment, the set of property trees of the profile model may have a hierarchy. For example, a type of employment property tree may have a hierarchical ranking over a location property tree. By way of further example, a type of employment property tree may have a hierarchical ranking over a role property tree, and in turn, the role property tree may have a hierarchical ranking over a location property tree. In this way, a user may create a hierarchy among the property trees themselves.
According to an exemplary embodiment, the profile manager maps the properties and the values of the properties of a person to attributes and its values. According to an exemplary implementation, the attributes include permissions (e.g., what the person can do and can't do) and any other facet associated with the organization (e.g., how much vacation time allotted to the person; the type of uniform worn by the person, etc.). According to an exemplary embodiment, the profile manager allows the attributes and the values of the attributes to be configurable. In this way, a user of the profile manager may, in an administrator role, for example, add an attribute, delete an attribute, add a value for an attribute, etc., and configure the attributes and the possible values of the attributes in a manner best suited for the creation of user profiles.
According to an exemplary embodiment, the profile manager links properties and its values to attributes and its values based on where the property values assigned to the person reside in each of the property trees. For example, the person inherits one or multiple attributes, which each has an attribute value, based on where the person resides in each property tree. The person may obtain all their attributes and values of the attributes based on the union of attributes associated with the node of each tree in which the property values are located. By way of example, assume that a role property tree includes a leaf node of “manager.” An attribute of whether the person can open a store may be linked to the leaf node. The attribute may have two possible values “yes” or “no.” By way of further example, assume, for persons that are managers, such persons inherit the attribute value of “yes” (i.e., a manager can open the store).
According to an exemplary embodiment, profile manager assigns the attributes and its values based on a bottom-to-top traversal of a property tree (i.e., from leaf nodes toward a root node). For example, based on a property tree traversal path, the person inherits attributes and the values of the attributes. Additionally, in the event that a higher node (e.g., a node closer to the root node) includes a same attribute as a lower node (e.g., a node farther from the root node) and has different values, the person is assigned (e.g., inherits) the attribute value of the lower node. Conversely, from a top-to-bottom traversal of a property tree, when no conflict exists between an attribute and a value in relation to a higher node and a lower node, the person inherits the attribute and the value from the higher node, as described further below.
The number of devices and configuration in environment 100 is exemplary and provided for simplicity. According to other embodiments, environment 100 may include additional devices, fewer devices, different devices, and/or differently arranged devices than those illustrated in
Network 105 may include one or multiple networks of one or multiple types. For example, network 105 may include the Internet, a wide area network, a private network, a public network, an intranet, a local area network, a packet-switched network, a wired network (e.g., an optical network, a cable network, etc.), a wireless network (e.g., a mobile network, a cellular network, a non-cellular network, etc.), etc. Although not illustrated, network 105 may include various other network devices, such as, one or multiple security devices, routing devices, gateways, access points, etc.
Network device 110 may include a computing device that is capable of hosting profile manager 115. For example, network device 110 may correspond to a server device when implementing an embodiment having a client-server architecture. The server device may take the form of a web server, an application server, a virtual server, or some other type of network server.
Profile manager 115 creates and manages user profiles. According to an exemplary embodiment, profile manager 115 is implemented by software. Profile manager 115 includes a graphical user interface that allows a user to create and manage user profiles. As previously described, according to an exemplary embodiment, profile manager 115 uses configurable properties, configurable property values, and configurable attributes to build a user profile. Profile manager 115 is described further below.
User device 120 includes a device to access and use profile manager 115. For example, user device 120 may be implemented as a computer (e.g., a desktop computer, a laptop computer, a tablet, etc.), a mobile device (e.g., a smartphone, etc.), a Web or Internet user device (e.g., a terminal, etc.) or some other communicative device.
Referring to
Referring to
Referring to
Referring to
Referring to
Additionally, referring to property tree 305-7, the property (location) is hierarchical in nature. For example, the nodes of property tree 305-7 include national, east region, west region, New Jersey, New York, Washington, and California. The property of “location” can assume any value (e.g., location=west region or location=California).
As illustrated in
According to an exemplary process, the generating of the user profile is based on a bottom-to-top traversal of the property tree. For example, assume that the person has an employment type of “production support.” A bottom-to-top traversal path 330 includes a traversal of the property tree from the leaf node of “production support” to the root node of “employment type.” Profile manager 115 collects the attributes of nodes along the bottom-to-top traversal path 330. For example, a person identified as “production support” would be assigned the attribute of “minimum hours” and the attribute value of “60. Continuing with the bottom-to-top traversal 330, the person would be assigned the attribute of “allow overtime” and the attribute value of “yes.” Additionally, the attribute of “at minimum hours” of the root node has already been assigned, so the attribute value of “40” would be overridden by the leaf node of “production support.”
Additionally, the exemplary process includes a top-to-bottom attribute and attribute value assignment based on inheritance. For example, profile manager 115 collects attributes of nodes along a top-to-bottom traversal path 330. For example, assume a person is identified as a “consultant.” The person would be assigned the attribute of “at minimum hours” and the attribute value of “40.” Additionally, the “consultant” is linked to the attribute of “allow overtime” and the attribute value of “no.”
According to an exemplary embodiment, the overriding of an attribute and an attribute value assigned to a lower level node of a property tree relative to a higher level node, as previously described, may extend between property trees. For example, an attribute and an attribute value associated with a node of location property tree 355-3 overrides the same attribute and a different attribute value associated with a node of role property tree 355-2 and a node of employment type property tree 355-1. According to another embodiment, the reverse may be true in which the node of a property tree 355 that is higher in the hierarchical ranking of property trees 355 may override the attribute value of the node of a property tree 355 that is lower in the hierarchical ranking.
For purposes of illustration,
The task of who can assign a property value to a property versus who can map attributes to properties and assign attribute values to attributes for certain property values are usually assigned different user roles. For example, an administrator of the system may be expected to create a one-time mapping of attributes to properties. A supervisor or a manager (e.g., an end user of the system) may be expected to create user profiles and assign property values to the limited properties set. According to this example, the role of the end user (e.g., the supervisor or the manager) would be to define the identity of the user while the role of the administrator, through the attribute mapping process, would be to define what the identity definition would allow its users to have as capabilities.
Although not illustrated, profile manager 115 includes other graphical user interfaces pertaining to hierarchy tab 220, model tab 225, reports tab 230, administrator tab 235, and logout tab 240. For example, when hierarchy tab 220 is selected, profile manager 115 provides a graphical user interface that allows an administrator to configure multiple hierarchies that pertain to relationships between members of the organization. For example, an individual may have a supervisor that has the authority to decide an issue or govern the individual with respect to one facet of employment while another supervisor has authority to decide an issue or govern the individual with respect to another facet of employment. By way of further example, an individual may have one supervisor that approves vacation time and another supervisor that can approve a credit to a customer account. In an organization, additional complexities can be introduced if, for example, the individual's supervisor for a given facet changes on a day-to-day basis and/or on a shift-by-shift basis. According to an exemplary embodiment, profile manager 115 allows an administrator to map a user profile to other user profiles for a given context (e.g., facet). In this regard, an individual (e.g., a manager, etc.) may be assigned certain attributes that correspond to roles, powers, etc., pertaining to other individuals. According to an exemplary embodiment, profile manager 115 creates trees between user profiles in which each tree may be context specific. Profile manager 115 allows an administrator or any other type of user to query or search for another individual in the given context.
When model tab 225 is selected, profile manager 115 provides a graphical user interface that allows an administrator to create properties, the property values, and any dependency between properties. For example, a dependency or a linking between properties may take the form of the example previously described and illustrated in relation to
According to an exemplary embodiment, profile manager 115 includes various usage levels. For example, profile manager 115 may allow some users to create and delete user profiles, while other users may be only able to view user profiles. By way of further example, profile manager 115 may allow some users to create properties, property values, and attributes. According to an exemplary implementation, the scope of usage of profile manager 115 may be based on an individual's user profile. In this way, profile manager 115 provides security features that are built on profile manager 115.
Processor 505 includes one or multiple processors, microprocessors, data processors, co-processors, multi-core processors, application specific integrated circuits (ASICs), controllers, programmable logic devices, chipsets, field programmable gate arrays (FPGAs), system on chips (SoCs), programmable logic devices (PLSs), microcontrollers, application specific instruction-set processors (ASIPs), central processing units (CPUs), or some other component that interprets and/or executes instructions and/or data. Processor 505 may be implemented as hardware (e.g., a microprocessor, etc.) or a combination of hardware and software (e.g., a SoC, an ASIC, etc.). Processor 505 may include one or multiple memories (e.g., memory/storage 510), etc.
Processor 505 may control the overall operation, or a portion of operation(s) performed by device 500. Processor 505 may perform one or multiple operations based on an operating system and/or various applications or programs (e.g., software 515). Processor 505 may access instructions from memory/storage 510, from other components of device 500, and/or from a source external to device 500 (e.g., another device, a network, etc.).
Memory/storage 510 includes one or multiple memories and/or one or multiple other types of storage mediums. For example, memory/storage 510 may include one or multiple types of memories, such as, random access memory (RAM), dynamic random access memory (DRAM), cache, read only memory (ROM), a programmable read only memory (PROM), a static random access memory (SRAM), a single in-line memory module (SIMM), a dual in-line memory module (DIMM), a flash memory, and/or some other type of memory. Memory/storage 510 may include a hard disk (e.g., a magnetic disk, an optical disk, a magneto-optic disk, a solid state disk, etc.) and a corresponding drive. Memory/storage 510 may include a hard disk (e.g., a magnetic disk, an optical disk, a magneto-optic disk, a solid state disk, etc.), a Micro-Electromechanical System (MEMS)-based storage medium, and/or a nanotechnology-based storage medium. Memory/storage 510 may include drives for reading from and writing to the storage medium.
Memory/storage 510 may be external to and/or removable from device 500, such as, for example, a Universal Serial Bus (USB) memory stick, a dongle, a hard disk, mass storage, off-line storage, or some other type of storage medium (e.g., a compact disk (CD), a digital versatile disk (DVD), a Blu-Ray® disk (BD), etc.). Memory/storage 510 may store data, software, and/or instructions related to the operation of device 500
Software 515 includes an application or a program that provides a function and/or a process. Software 515 may include firmware. For example, with reference to user device 120, software 515 may include an application that, when executed by processor 505, provides the functions of profile manager 115, as described herein.
Communication interface 520 permits device 500 to communicate with other devices, networks, systems and/or the like. Communication interface 520 includes one or multiple wireless interface(s) and/or wired interface(s). For example, communication interface 520 may include one or multiple transmitter(s) and receiver(s), or transceiver(s).
Input 525 provides an input into device 500. For example, input 525 may include a keyboard, a keypad, a touchscreen, a touch pad, a touchless screen, a mouse, an input port, a button, a switch, a microphone, a knob, and/or some other type of input.
Output 530 provides an output from device 500. For example, output 530 may include a display, a speaker, a light (e.g., light emitting diode(s), etc.), an output port, a vibratory mechanism, and/or some other type of output.
Device 500 may perform a function or a process in response to processor 505 executing software instructions stored by memory/storage 510. For example, the software instructions may be read into memory/storage 510 from another memory/storage 510 or read from another device via communication interface 520. The software instructions stored in memory/storage 510 may cause processor 505 to perform processes described herein. Alternatively, according to another implementation, device 500 may perform a process or a function based on the execution of hardware (e.g., processor 505, etc.).
Process 600 may begin, in block 605, with defining properties that identify individuals. For example, profile manager 115 receives properties that identify individuals of an organization. For example, a property may include a shared characteristic among individuals. By way of example, as previously described, a property may include an employment type, a position, a location, etc.
In block 610, a property value for each property is defined. For example, profile manager 115 receives one or multiple property values pertaining to a property. By way of example, a location property may include property values corresponding to various locations of a business (e.g., Pittsfield, Ma; New Haven, Conn., a street address, a building number, a room, etc.).
In block 615, properties are linked. For example, profile manager 115 receives a link between a property/property value pair and another property/property value pair. By way of example, the position of an individual may be dependent on the location at which an individual works. This allows creating cross-properties/property values validation in which a property can only assume specific values if another property has a specific value selected. This process is referred to as property linking.
In block 620, attributes are defined. For example, profile manager 115 receives attributes. As previously described, an attribute may be a facet of an organization, such as a permission or other variable pertaining to the organization. Attributes mapping is a function, which may be handled by a user with an administrator role, and may be done a single time for any given profile model.
In block 625, attributes are mapped to properties and property values. For example, profile manager 115 receives a mapping of attributes to the properties and property values. By way of example, an individual, whose “job” property value is a “security guard,” may be assigned an attribute that has full access to any room in a building or a facility. According to another example, an individual, whose “job” property value is a “full-time manager” at a facility in Irving, Tex. has two free meals per week in a cafeteria. In this latter example, the identity of the user is defined through three properties, namely, Job Type, Job Role, and Location (e.g., Job Type=full-time, Job Role=Manager, Location=Irving, Tex.). The attribute of “free meals per week” will assume (e.g., through mapping) the value three for this set of properties/properties values.
In block 630, a user profile for an individual is created based on an aggregation of the properties, property values, and attributes pertaining to the individual. For example, profile manager 115 receives a selection of property values associated with the properties, as previously described in relation to
In block 635, the user profile is applied to govern the employment of the individual. For example, assume that the individual is a customer service representative, the individual's computer may operate (e.g., access to particular applications, functions available within the applications, etc.) based on the user profile. Additionally, for example, other facets of the individual's employment may be governed based on the user profile (e.g., pay, sick time, vacation time, etc.), which may be used by various other departments (e.g., human resources, accounting, etc.), systems (e.g., a security system that governs access to a room using a passkey), etc.
Although
According to an exemplary embodiment, profile manager 115 provides for attributes and the values of the attributes associated with a user profile to be inherited by another user profile. This feature can be particularly useful when, for example, there are temporary re-assignments of personnel or when personnel may be handling multiple positions. In these cases, the administrator may be spared the task of recreating profiles by allowing the administrator to have a user profile simply “inherit” the attributes of another user profile.
According to an exemplary embodiment, one or multiple user profiles may be identified based on the selection of one or multiple properties. According to this example, assume the administrator wants to merge the attributes of a manager with the attributes of a field technician. While one property (e.g., a position property) is illustrated to identify a property of first user profile 705-1 (e.g., a manager) and a property of second user profile 705-2 (e.g., field technician), according to other implementations of graphical user interface 205-6, multiple properties may be selected (e.g., location and position; part-time, position, location; etc.). By way of example, a graphical user interface similar to graphical user interface 205-2 may be used to allow the administrator to select one or multiple properties and select one or multiple property values. Profile manager 115 may then retrieve user profiles possessing the selected property/property values. The administrator may be able to retrieve the user profiles for both first user profile 705-1 and second user profile 705-2 in this manner. In this way, the administrator has the utmost flexibility in selecting which user profiles to use.
Referring back to
As further illustrated, graphical user interface 205-6 includes an inheritance type 715. According to an exemplary implementation, there are two types of inheritance: a merge type and a replacement type. The merge type provides for the merging of attributes. For example, the individuals that are managers, their user profiles would keep their existing attributes and also inherit the attributes of a field technician. The replacement type provides for the overwriting of their attributes. For example, the individuals that are managers, their user profiles would lose their existing attributes and inherit the attributes of a field technician. Although not illustrated, according to other implementations, other elements may be added to graphical user interface 205-6. For example, instead of an all or nothing approach, graphical user interface 205-6 may allow the administrator to see and select the attributes to be inherited. Additionally, or alternatively, the administrator may be able to prevent certain attributes from being overwritten when a replacement type inheritance is selected. Graphical user interface 205-6 also includes an inherit button 720. When the administrator selects inherit button 720, the assignment of attributes is invoked.
According to exemplary an embodiment, a method, a device, a system, and a non-transitory storage medium is described that simplifies the provisioning and management of user profiles of any given system by indicating the identity of the user as a set of properties and properties values rather than indicating the identity of the user by the functions that the user can and cannot do. In other words, for example, it is “who” you are rather than “what” you can do. By defining the “who”—a configurable definition of properties-to-attributes mapping may establish the “what.” End users of the profile management system (e.g., managers, supervisors, etc.) may only have to worry about defining the “who,” while an administrator or an application developer may manage the “what” through the mapping of properties to attributes.
The foregoing description of implementations provides illustration, but is not intended to be exhaustive or to limit the implementations to the precise form disclosed. Accordingly, modifications to the implementations described herein may be possible. For example, the properties and attributes may be used to generate profiles pertaining to anything. For example, with respect to computers used by a business, properties could be directed to the type of computer (e.g., user terminal versus network device) and attributes and attribute values could be directed to the type of software stored on a computer, access rights by individuals, etc. In this regard, although embodiments have been described in relation to “user” profiles, according to other embodiments, the profiles, as described herein, may be generated and directed to any facet of a business, or for that matter, any facet (e.g., business or non-business-related) of which invokes some sort of management.
The terms “a,” “an,” and “the” are intended to be interpreted to include one or more items. Further, the phrase “based on” is intended to be interpreted as “based, at least in part, on,” unless explicitly stated otherwise. The term “and/or” is intended to be interpreted to include any and all combinations of one or more of the associated items.
In addition, while series of blocks are described with regard to the process illustrated in
The embodiments described herein may be implemented in many different forms of software and/or firmware executed by hardware. For example, a process or a function may be implemented as “logic” or as a “component.” The logic or the component may include, for example, hardware (e.g., processor 505, etc.), or a combination of hardware and software (e.g., software 515). The embodiments have been described without reference to the specific software code since software can be designed to implement the embodiments based on the description herein.
Additionally, embodiments described herein may be implemented as a non-transitory storage medium that stores data and/or information, such as instructions, program code, data structures, program modules, an application, etc. For example, a non-transitory storage medium includes one or more of the storage mediums described in relation to memory/storage 510. The data and/or information may be executed to perform processes or provide functions, as described herein.
In the preceding specification, various embodiments have been described with reference to the accompanying drawings. It will, however, be evident that various modifications and changes may be made thereto, and additional embodiments may be implemented, without departing from the broader scope of the invention as set forth in the claims that follow. The specification and drawings are accordingly to be regarded as illustrative rather than restrictive.
In the specification and illustrated by the drawings, reference is made to “an exemplary embodiment,” “an embodiment,” “embodiments,” etc., which may include a particular feature, structure or characteristic in connection with an embodiment(s). However, the use of the phrase or term “an embodiment,” “embodiments,” etc., in various places in the specification does not necessarily refer to all embodiments described, nor does it necessarily refer to the same embodiment, nor are separate or alternative embodiments necessarily mutually exclusive of other embodiment(s). The same applies to the term “implementation,” “implementations,” etc.
No element, act, operation, or instruction described in the present application should be construed as critical or essential to the embodiments described herein unless explicitly described as such.