Position's Fundamentals¶
When developing enterprise applications, the users of these applications are usually representing a function or an occupation in the hierarchical organization of the company they work for.
A Position is an occupation inside a hierarchy of Positions. The Position may have a Parent Position, which is its Higher Rank.
The Position has a Code and a Display Name in order to identify it.
Positions Rotation¶
During the normal lifetime of a company, employees are promoted, hired, or rotate in general. This is what we call the Position Rotation Log.
A Position usually has a User assigned. This effectively means that the user is fulfilling the Position's role at this given time.
When the user is unassigned from the Position, a log is kept including the time-frame that he was assigned to that position for auditing purposes.
Position's Purpose¶
The Purpose of the Position entity is that services relate their entities to a Position instead of a User. That way, current work or configurations do not need to be changed when personnel rotate.
For example, instead of assigning permissions to a User, we give the Position permissions to perform certain actions. That makes it so when personnel rotates, we don't need to configure permissions for the new and old users, we just need to rotate the assigned user in the position they cover.
The same thing applies to current active work: Inspections and Service Orders, for example, are assigned to a Position instead of a User. So when the user's rotate, the new user still sees the pending work the previous user left when he was working in that position.