Show all
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.
Process Commander provides an easily tuned set of facilities
that match users to open assignments. These facilities consider
user authority, skills, and urgency of the work object. 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, Process Commander performs the following internal
operations:
- A user clicks the Get Most
Urgent button.
Your application can record the skills of this operator in
skill fields on the Work Access
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
Access 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 Access
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 object. 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.
This processing ignores Error: assignments (problem
assignments); they are never selected as "most
urgent".
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 object 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 object 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 flow rules, 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 rule 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 Pega Developer Network article
PRKB-16210 A database stored
procedure can replace the GetNextWork activity.
Enabling back-to-back assignments
One work object may at any time
have multiple open assignments and multiple flow executions
in process. If a user completes an assignment for work object
W-22534 and others exist, it is usually natural and
productive for that user to work next on other assignments
for the same work object (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