You are here: Building applications > Creating the User Experience > Maximizing user productivity with GetNextWork
Maximizing user productivity with GetNextWork
|
|
Each time a user completes an assignment, your application can select and provide another assignment for that user to work on next. By choosing the best, most appropriate assignment to work on next, your application can promote user productivity, timeliness of processing, and customer satisfaction.
If your application does not provide automated support for this choice, a user can arbitrarily or intentionally choose an assignment to work on next that does not contribute as directly to organizational objectives. While every assignment needs to be completed eventually, the order that users process work is an important factor in the management of service operations.
A set of facilities can match users to open assignments. These facilities consider user authority, skills, and urgency of the work item. Much of the sorting and selection occurs through efficient SQL operations on the PegaRULES database.
Default behavior
In most situations, users are directed to click the Get Most Urgent button on the navigation panel of the Process Work workspace. This button starts an activity that can examine the contents of worklists, workbaskets, and other factors to retrieve an assignment. (The button may also appear on a confirmation form, and may have a different text label.)
If you have implemented no customizations or parameter settings, the following internal operations happen:
- A user clicks the Get Most Urgent button. Your application can record the skills of this operator in skill fields on the Work Settings tab of the Operator ID form.
- The button click starts the standard activity Work-.GetNextWork. This simple activity calls the final standard activity Work-.GetNextWorkObject.
- The GetNextWorkObject examines a property pyWorkBasketFirst for the user. This corresponds to the Get from workbaskets first? check box on the Work Settings tab. If true, it calls the standard activity Work.findAssignmentinWorkbasket. Otherwise, it calls the standard activity Work-.findAssignmentinWorklist.
- The Work-.findAssignmentInWorkbasket activity considers as candidates the assignments in workbaskets listed on this tab for this operator. If the Merge workbaskets? check box is not checked, workbaskets are searched in the order they appear on the Work Settings tab. (The standard list view rule Assign-Workbasket.GetNextWork.ALL returns up to 500 assignments, sorted in decreasing order by assignment urgency — property Assign-.pxUrgencyAssign.)
- If the Merge workbaskets? check box is checked, the algorithm changes. All assignments in all listed workbaskets are assembled into a single list that is then sorted by declining pxUrgencyAssign. If the Use all workbasket assignments in user's work group check box is selected, the list of candidates is all assignments in any workbasket for which the Work Group field (on the Workbasket tab of the Workbasket form) is the same as the Work Group field of this operator (as set on the Operator tab)
- The standard decision tree Assign-.GetNextWorkCriteria is applied to each assignment found, highest urgency first. Any assignments that have a pyActionTime in the future, those that require skills (pxSkillsRequired) that the current operator does not hold, assignments already worked on by this operator today (a local action), and those that cannot be locked (and so may be in use by others) are dropped as candidates.
- Searching ends when it finds the first surviving assignment if any that meets all the criteria. The GetNextWork activity creates and populates the
newAssignPage
page, moves the assignments to the user's worklist and locks the work item. If the System Setting rule GetNextWork_
MoveAssignmentToWorklist is true, the selected assignment is moved to the user's worklist.
- If none is found, Steps 4 to 7 above are repeated but using the Work-.findAssignmentinWorklist activity and the standard list view Assign-Worklist.GetNextWork.All.
If the property pyWorkBasketFirst is false for this operator, the search examines the worklist before workbaskets.
The standard activities described above are part of the Process Engine API.
Tuning the default behavior
Several settings can be adjusted to adapt the above processing to specific needs of your application and your business operations, without creating new activities. If you create or override standard rules, place the new rules in a RuleSet and version that is available to all appropriate users.
- Finding the "best" assignment to work on next requires a balance between examining and scoring many assignments from many sources while avoiding unnecessary processing that can affect system performance. Through settings and design, making the Get Next Work process examine only dozens of candidate assignments with varying property values is far better than examining thousands of nearly identical candidate assignments.
- Ensure that the assignment urgency (pyUrgencyAssign) is set to a meaningful value, as this is a basis for sorting and prioritization. By default, a standard Declare Expression rule computes this value based on work item urgency and other criteria. For example, you can override this to base the assignment urgency also on dollar amounts, customer categories, specific assignments that are often on the critical path, work item age, work types, and so on.
- If a user can access assignments from multiple applications and work types, check that the computation of assignment urgency is appropriate across the applications and work types. Comparability — not fairness — is the objective; in some business settings it may be appropriate to complete every assignment in the CustomerOrder application before any assignments in the ResearchingVeryOldRocks application.
- Confirm the settings of the Get from workbaskets first? check box for affected operators.
- If some or all the assignments have skills that are designated as required, ensure that the skills values in Operator ID instances are correct for operators who do hold these skills. Confirm that the skills are truly necessary to complete the assignment. (In flows, you can use the standard routing activity ToSkilledWorkBasket to send an assignment with required or desired skills to a workbasket.)
- If workbaskets are searched, review the workbaskets for operators and the order that they are listed. An assignment with urgency 5 in the first-listed workbasket, if it meets all the criteria, may be found and returned before an assignment with urgency 99 in the second-listed workbasket.
- Override the System Settings rule GetNextWork_WorkBasketUrgencyThreshold to identify a minimum cutoff value for assignment urgency. This can speed the entire operation by changing the order that candidates are examined. First, it causes searches of only those assignments in a workbasket that equal or exceed an urgency threshold; if none is found that meet all the criteria, the next workbasket is searched. Only after all the workbaskets are searched with no qualifying assignment found are the workbaskets revisited to look for assignments with lower urgency.(To simplify testing, you can supply different cutoffs for different production levels.)
- Review and override the decision tree Assign-.GetNextWorkCriteria to add or modify criteria appropriate to your operations. For example, your criteria may take into account daily or weekly cutoff events.
- Copy and override the list value rules to change the 500 limit on assignments examined, or to add additional selection criteria.
- During testing and in production, note those situations in which the algorithm you have implemented returns no assignments. Where and how does the human operator look next for assignments.
Overriding GetNextWork activities
If your algorithm for finding open assignments differs in major ways from those provided by standard rules, you can override these standard activities with others specific to each work pool or work type:
- Work-.findAssignmentInWorkBasket
- Work-.findAssignmentInWorklist
- Work-.GetNextWorkObject — To bypass or extend the entire capability described above
Use care to ensure that this feature continues to operate quickly, returns only assignments that a user can complete, and are good choices.
When required, your GetNextWork activity can call a database stored procedure to locate the best assignment for the worker to work on next. Set the Applies To key part of your GetNextWork activity to match the container class of a class group. See PDN article A database stored procedure can replace the GetNextWork activity.
Enabling back-to-back assignments
At any time, one work item might have multiple open assignments and multiple flow executions in process. If a user completes an assignment for work item W-22534 and others exist, it is usually natural and productive for that user to work next on other assignments for the same work item (or for the cover) if there are any.
If your application may produce such multiple open assignments, consider whether they can be performed by the same operators. To promote such back-to-back assignments, select these fields on the Action tab of the Flow Action form when feasible:
- After this action Look for an assignment to perform?
- If not found, look in other flows on this work object?
- If not found, look in flows on the cover object?
When enabled, this searching occurs automatically upon the completion of the flow action, so GetNextWork processing does not occur.
Integrated work management
When you install and operate the optional Integrated Work Manager product, GetNextWork processing occurs across all the work source systems. This ensures that the user receives the most appropriate assignment to work on next across multiple applications.
Concepts
Open topic with navigation