Question
Centene
US
Last activity: 17 Jul 2017 15:42 EDT
Workbaskets
Hi all,
I've been searching PDN and my SAE I and II class PDFs. The Class PDF's only mention workbaskets in passing, but no detail. I have two questions, what seem like basic things
1) What is the preferred way to move a case to a workbasket? I tried updating pyWorkbasket but that doesn't seem to do anything. I know you can do routing with an assignment shape, but that brings up a new screen which I don't want to introduce in the UX.
2) When running things from Designer Studio, where in the Clipboard can I see the workbasket that a case is assigned to? I look in the pyWorkpage, and in the newassignPage, but am not really finding what I am looking for
Thanks in advance, these seem like simple things but when you can't find it in the help, it's not so simple
-
Like (0)
-
Share this page Facebook Twitter LinkedIn Email Copying... Copied!
Pegasystems
US
Hi Jim,
If you use prpc tracer and look at what activities and parameters are involved with routing a case to a workbasket, that can offer some guidance of what activities you would call to do it yourself. However, I admit it’s not the total answer, since it can often lead you to calling either too deep or too shallow an activity rather than calling the one that’s juuuuuust the right level. /Eric
Centene
US
Eric
That 'whoooshing' sound you heard was the jet running over my head. I still am not good with the Tracer, it just doesn't make any sense to me yet. Thanks, though.
Pegasystems
US
Jim, to get a feel for tracer, try turning on the checkmarks in the tracer settings screen for activities and activity steps shown near the top of the settings screen, and then trace an activity rule you have written already.
To get a sense of which activities you’d need to call to programmatically route a case from one worklist or basket to another, try this:
1) bring up the UI screen that lets you route a case, and get to the point where you know that the next click will do the actual routing. Before doing that click, bring up the tracer and enable only activity enters and exits.
2) do the click, and the tracer will reveal to you which activities were used. One of those is likely to be the right one for you to call from your own flow to route a case. For each activity, shown in the tracer, you can click its name in the tracer to automatically bring up the activity rule form in the developer portal.
3) From there, you can look at the history tab at the usage and description fields to see if the developer has given extra information about what context that activity should be called from, since some are designed for calling from a user flow and others are only supposed to be internal subroutines.
/Eric
Centene
US
Eric
I hate to be dense, but I did what you said. Since the only thing turned on is activity entry/exit, and the Routing being done is in the Assignment shape - it doesn't appear to be logging anything. Other flows where I am doing specific calls of Activities, shows up in the tracer - but I cannot make heads or tails of it, most of it looks like a big java exception dump.
Pegasystems Inc.
US
Hi Jim,
I'm not a SME for your questions, but -- always curious about PDN gaps -- I searched the PDN on "case assignments" and found this article:
https://pdn.pega.com/security/enabling-a-user-to-perform-other-users-assignments
This article does not specifically call out Workbaskets, but it might lead you to answers to your questions -- while you wait for a SME to respond.
I forget: Are you using Pega 7.1.x?
-Mary
Centene
US
Thanks Mary, and yes, I am on 7.1.7.
Here's where I see a gap. If you look in either of the PDF's for SAE I or II, and do a search on "Workbasket" here is all that you find:
SAE I
* Routing queues in PRPC are known as workbaskets, we will learn more about this in a little bit.
* A page on what the definition of a workbasket is
* p 481-487 an overview of routing - emphasis on "overview" not "how-to". It comes close to telling you how to do this, but the Demo section lacks some key points. It only shows how to do routing via Assignment shapes, which of course means you have to have yet another screen/section. If I want a particular flow action/section to change a workbasket, it seems like there should be a way to do this, without requiring another screen/section in the UX - And, no mention of where you can look in the clipboard to validate that your case has been moved to the designated workbasket.
* p 534-540 PUSH v PULL routing description
SAE II
* Workbaskets are not even mentioned until p 510 of the 561 page document.
So, what is missing - how to programmatically change case's workbasket, and where in the clipboard to "see" this workbasket value on a case
Thanks again!
Pegasystems
US
One place you’ll see evidence is in the actual pzInsKey of the assignment object. For ones in a work list, they say assign-worklist . . . and for ones in a work basket they say assign-workbasket . . . /Eric
Centene
US
Eric
So, when I look in the clipboard, I see approx 25 instances of "pzInsKey" doing a search. i don't know which one to look at? And none of them have "assign-..." as a value?
Pegasystems
US
>>> I see approx 25 instances of "pzInsKey" doing a search. i don't know which one to look at? And none of them have "assign-..." as a value?
Hi Jim,
When you bring up a case in the perform harness, look at the NewAssign page at its main pzInsKey. I would expect it to show either assign-workbasket . . . or assign-worklist . . . depending on who owns that assignment. /Eric
Centene
US
the pzInsKey of the "newAssignPage" (that's what you're referring to, correct?)
is
ASSIGN-WORKBASKET CENTE-SPECIALP-WORK P-258!DATAVERIFICATION
but it doesn't show *which* workbasket....
Pegasystems
US
Hi Jim,
One of the other properties shows whose work basket. On that newAssignPage, look for a property whose name says something like “assignedTo” or “owner” and whose contents contains the name of the operator or basket. If you can’t figure out which property, try actually routing something, and then compare the contents of the newAssignPage before and after the routing, and one of the differences that shows up should reveal which property’s contents changed from the old owner name to the new owner name.
As for tracing the routing, if discrete activity calls are not showing up in the tracer even though you have all rulesets enabled in the tracer settings and activity enters and exits enabled, then it may be because the generated java for the flow rule is doing it “inline”. That makes it harder to trace. We may need to think about that part some more. /Eric
Centene
US
Thanks again, Mary!
Centene
US
Eric
possibly? That seems to change from an actual operator ID to the workbasket, then back and forth between the two
BNY Mellon
US
That's correct.
One of the things that's confusing in Pega -- and we've been looking to evolve -- is that the same field stores both the workbasket *and* the assigned user. I'll write a followup on this.
Centene
US
Thank you Jon Garfunkel!
Pegasystems
US
Yes, pxAssignedOperatorID looks correct. However, if you’re checking documentation, I would expect it to tell you how to move a case from one operator to another (or between an operator’s work list and a work basket, but I would not expect the documentation to necessarily mentioned pxAssignedOperatorID since that may be considered an internal implementation detail that could be changed later.
Also, from the name of that property, I’m thinking maybe it only shows the operator name when the case is in the operator’s work list, and that you’ll see a different property used for bookkeeping which work basket a case is in, so you may want to do your experiment several ways and compare the page contents. /Eric
Centene
US
Eric - see Jon Garfunkel's reply above. mentioning that the same variable contains two different values. I am looking for documentation on how to perform the move, programmatically rather than via the assignment shape, but so far have come up empty. maybe my 'search-fu' needs improving...
Pegasystems Inc.
US
Jim,
Thanks very much for your detailed information that identifies missing info in the SAE I and SAE II courses: Very valuable!
I have relayed [by Mesh Share] your feedback to the appropriate contact on the Pega Academy curriculum development team.
All teams at Pega, particularly the product documentation team and the curriculum developers, strive for continuous improvement -- a core Pega value.
In my years at Pega, I have seen and experienced rapid response to customer feedback, including my own.
In addition to posting in this community [please continue your contributions here!], you can also take advantage of the PDN forum for Pega Academy, which has designated discussion threads for each course in the Pega Academy catalog. Posting your Pega Academy feedback to the forum topics gives you visibility directly with the curriculum developers and other customers who have Pega Academy issues and info to exchange.
https://collaborate.pega.com/discussion/pega-academy-down
https://collaborate.pega.com/discussion/pega-academy-down/system-architect-essentials-i-71
Jim,
Thanks very much for your detailed information that identifies missing info in the SAE I and SAE II courses: Very valuable!
I have relayed [by Mesh Share] your feedback to the appropriate contact on the Pega Academy curriculum development team.
All teams at Pega, particularly the product documentation team and the curriculum developers, strive for continuous improvement -- a core Pega value.
In my years at Pega, I have seen and experienced rapid response to customer feedback, including my own.
In addition to posting in this community [please continue your contributions here!], you can also take advantage of the PDN forum for Pega Academy, which has designated discussion threads for each course in the Pega Academy catalog. Posting your Pega Academy feedback to the forum topics gives you visibility directly with the curriculum developers and other customers who have Pega Academy issues and info to exchange.
https://collaborate.pega.com/discussion/pega-academy-down
https://collaborate.pega.com/discussion/pega-academy-down/system-architect-essentials-i-71
https://collaborate.pega.com/discussion/pega-academy-down/system-architect-essentials-ii-71
Again, thank you for your continuing contributions to our community,
-Mary
BNY Mellon
US
Who, I think we've lost track of the actual question here.
"What is the preferred way to move a case to a workbasket?"
You don't need to dive into Tracer to understand this.
What is your use case? Who is moving the case? Are you acting as an architect, a sysadmin, or a user?
I assume you are an architect building the application to grant a user -- as the assignee of a case -- to take an action to assign to a workbasket.
So, in your flow, you have a flow action which you connect to the next assignment.
re: "I know you can do routing with an assignment shape, but that brings up a new screen which I don't want to introduce in the UX."
What is the "new screen" you are referring to here?
"If I want a particular flow action/section to change a workbasket, it seems like there should be a way to do this, without requiring another screen/section in the UX"
Look up to the flow action TransferToWorkbasket.
Jon
Centene
US
Jon
Thanks much. My use case is this: as user #1 works on a case, and completes a particular screen (section/flow action), I want AT THE END OF the flow action when they hit "Submit", to move the case along to another workbasket.
When I try to do that by adding an assignment shape, the flow action coming out of that assignment HAS TO BE non-blank, according to the Pega Designer. That's the extra screen I'm talking about. In this flow below, after the "SpecialProjectCorporateApproval" section has been completed, I'd like to have the workbasket changed. I can't seem to do that AFTER the flow, so i have to add an assignment shape ("Send back to Claims Liaison"), which REQUIRES the ConfirmApproval screen/section/flow action thing:
BNY Mellon
US
re: " after [X], I'd like to have the workbasket changed. "
Why after? What is happening after this flow completes that you need the workbasket set?
This may be a another confusion in terminology. The "workbasket" would better be referred to the assigned workbasket. That is, for a given assignment.
So you would normally set it on the assignment, that is, on the assignment shape which contains the actions that a user with that workbasket privilege would do.
Centene
US
Jon
The "Why after" question is like this
- user A completes their work on a screen/flow action
- I want to then move that to user B's workbasket
If I do that with an assignment shape, then the next line coming out of the assignment shape requires a "flow action" - i.e. screen. I don't want there to be another screen involved, I just want to move it on to the next person in the chain of events. Does that make sense?
Pegasystems
US
Jon, can’t you use a router ticket shape on whichever assignment shape is the one whose flow action’s submission you want to trigger the transfer to another work list ? /Eric
Pegasystems Inc.
US
Jim,
I'm a little late to the party so apologies if this has all been covered. It sounds to me like there are some basic Pega concepts that aren't entirely clear to you and it's leading to confusion.
First, routing an object to a party (which for the sake of this discussion, a workbasket would be considered) requires an assignment. An assignment is not a work object, it lives in a separate table in the database and can potentially have a one work object to many assignments relationship. The pxFlow page on your work object is the call stack, so you'd see references to the assignment in there (although only on the page for the flows that actually have assignments). You can't route an object from one user to the next or from one user to a workbasket just by updating pyWorkPage. In fact, even if you figured out what properties to hack in both the work object and the assignment item, I would strongly caution you not to. Let the process engine handle that. While most of that architecture doesn't change, there's no way we can guarantee whatever custom code you build today will work after an upgrade or possibly even HFix install.
Jim,
I'm a little late to the party so apologies if this has all been covered. It sounds to me like there are some basic Pega concepts that aren't entirely clear to you and it's leading to confusion.
First, routing an object to a party (which for the sake of this discussion, a workbasket would be considered) requires an assignment. An assignment is not a work object, it lives in a separate table in the database and can potentially have a one work object to many assignments relationship. The pxFlow page on your work object is the call stack, so you'd see references to the assignment in there (although only on the page for the flows that actually have assignments). You can't route an object from one user to the next or from one user to a workbasket just by updating pyWorkPage. In fact, even if you figured out what properties to hack in both the work object and the assignment item, I would strongly caution you not to. Let the process engine handle that. While most of that architecture doesn't change, there's no way we can guarantee whatever custom code you build today will work after an upgrade or possibly even HFix install.
You do need a flow action coming out of the second assignment because as some point someone will open the assignment and need to do work. In your flow that work is the Confirm Approval flow action. What I think you want is for the first user to get a confirm harness when they finish SpecialProjectCorporateApproval. That is entirely doable. Where you might be tripping over things is if you are set to do back to back processing and the user has permission to do the work in the workbasket, they won't get a confirm harness, they will get the perform harness. Many customers want a single user to drive a case through as many assignments as possible, until either the case is resolved or they aren't allowed to do the work anymore. That doesn't sound like your business case. Or possibly, as a developer, you have permission to do everything, but if you tested with business users who's roles limited their ability to process the work, you would get the behavior you are looking for. I'm fairly certain that if you close the item once it gets to Send back to claims liaison, you would find the item in the workbasket (assuming the assignment is set up correctly).
Finally, there was some question about the term "Local Action." You can set up flow actions on a specific assignment where you can enter data and hit the submit button and not progress forward. They are actions that are done locally. Those are local actions. It is possible to configure one to call an activity to reach into the reassign API and move the item from one owner to another while staying on the same assignment. Of course then the new owner will see the exact same actions available when they open the item up. I'm not sure if that's exactly what you're looking for.
Centene
US
Mike
Thanks much for cutting through some of my confusion. On the second point, I've used the stages-and-steps designer to set up different work items to be done. For my simple example, let's say that i want the workbasket to change after all the steps in the first stage have been completed.
Let's say I have three steps in the first stage, and at the end of the third step I'd like to move the item to a different workbasket. Without presenting yet another screen to the user at the end of the first stage. Is that possible? Does that seem unreasonable?
Centene
US
For instance look at the third stage - "Complete Claim".
it's a simple step:
After that work is done in the "Complete Claim" flow action, I'd like to move the case on to a different workbasket for the steps listed in the fourth stage "Complete Project".
How can I do this? It seems like this should be simple...
BNY Mellon
US
Is there an assignment in the Complete Project / Data Validation step? This is where the workbasket assignment takes place.
This is what I was driving at earlier.
Centene
US
Jon
Thanks. But that really doesn't make sense to my limited understanding. I want the assignment to happen immediately after the person completes work in the step they're working on - "Complete Claim" of "Claim Processing" stage.
Waiting to do it until the Complete Project/Data Validation almost sounds like the assignment won't change until the second person picks up the work in the Complete Project / Data Validation step? Is that right?
BNY Mellon
US
After user A completes an assignment...
Pega's workflow engine makes all of the end-of-assignment calculation/updates, and then follows the process flow to the next step in the process.
If this is a new assignment, it (the workflow engine, applying your rules) will execute the assignment activity, router, the notify to set it up.
It does not wait for another user to pick up the work.
I agree that this is a little non-intuitive at first.
Centene
US
Jon
Perfect, I will just do the change-workbasket in the Routing part of the next step/stage. Thanks again!
Pegasystems Inc.
US
Jim, to Jon's point, the assignment step in the "Complete Claim" assignment is where you want to tell Pega to update the workbasket or owner. Thinking about this procedurally,you don't want the assignment to user B to take place immediately when user A completes the previous step. You want the assignment to user B to take place when the flow reaches the assignment step that user B is supposed to work. This assignment update happens when the work object reaches the assignment shape, irrespective of when the person actually acts on the assignment. One reason why this is helpful is if there is intermediate processing between the step user A completes and the assignment step of user B. Say for instance I complete my assignment step, and you are next to receive it. But in between us is some activity which updates data and uses the assignee's name to audit the change (perhaps we are updating the claim status code to mark is as completed (or triggering readj) and we want to track the user ID responsible for the change. Well, if this processing happened as a result of me completing my step, wouldn't it make sense for my name to appear in the audit logs, and not your name since you haven't actually taken receivership of the work object, or necessarily have any understanding of what is transpiring upstream? Set the new owner or workbasket on the assignment shape keeps this from occurring and ensures the audit integrity.
Centene
US
I think I've got it now, guys...
- don't set the workbasket in the activity after the flow in a step
- instead, set it in the assignment of the first step of the next stage
Is that right?
Pegasystems Inc.
US
Yes. In general, you set the individual user or group that is responsible for processing the work object at the assignment level - since the assignment shape is the only step involving human interactions.
BTW, I like your thinking in terms of changing the workbasket assignments when the case transitions from one Stage to the next. That's good practice.
Centene
US
Well, Jon,
I've progressed to a new error message. Trying to run the TransferToWorkbasket in my activity and I get
- ** Unable to open an instance using the given inputs: pxObjClass = "Data-Admin-WorkBasket", pyWorkBasket = "Cente-SpecialP-Work-ClaimsLiaison"
This workbasket is a custom one i've created, and have used in "assignment" shapes> just can't use it in the TransferToWorkbasket activity it appears
BNY Mellon
US
Your workbasket looks like a classname (with multiple dashes). Are you sure it's named correctly?
How did you "create" the workbasket?
Here's another confusion in Pega -- the basic workbasket assignment activity (ToWorkbasket) doesn't actually validate that it exists. But the TransferToWorkbasket does.
Which activity are you running it in? I'd assumed you just added the flow action.
Centene
US
i gave up on the TransferToWorkbasket activity. Couldn't ever figure out the proper name of the workbasket even though I can *see* it in the Data Admin Workbasket area.
Centene
US
again: What I'd LIKE to do
- present a user a screen/section/flow action
- once they hit submit, move the work object along to a different workbasket. WITHOUT another assignment shape that requires a screen/flow action/section to be presented to the user.
BNY Mellon
US
Ah, right, make sure you specify this as a local action (which stays in the same place in the flow) not a flow action.
Centene
US
hmm, Jon, sorry for my newbie-ness. I don't know what a "local action" is. In our SAE I document I find this
"Here it launches a local action which is a flow action rule"
Centene
US
Pega also indicated "TransferToWorkBasket" is deprecated, wants me to use "ReassignToWorkbasket" instead. Just an FYI
Centene
US
And I tried just giving the workbasket name - which I can see in the Process & Rules/Work Management / Workbasket menu - but it complained that it couldn't find the work basket, so i tried fully qualifying it.
This shouldn't be this hard!
Centene
US
Here's the other problem. The second screen that I'm forced to add - to put a screen up for the Assignment shape to do the routing? The routing occurs BEFORE the second screen appears, which kind of defeats the purpose of having a second screen to just confirm the moving of the work to a new workbasket.