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
***Updated by moderator: Marissa to close post***
This post has been archived for educational purposes. Contents and links will no longer be updated. If you have the same/similar question, please write a new post.
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
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.
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.
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:
* 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
* 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
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
>>> 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?
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
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
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
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...
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.
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:
- 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?
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.
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?
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?
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.
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.
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.
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.