Thursday, September 23, 2010

PeopleTools Tips Sample Chapter Available

Are you still trying to decide whether or not to buy my new PeopleTools book? Would a sample chapter help? The McGraw Hill page for this book allows you to download chapter 3 for free. Chapter 3 contains step by step instructions for workflow enabling a transaction using the relatively new Approval Workflow Engine (new in PeopleTools 8.48). If you have ever had trouble configuring AWE and wondered if it was possible to trace the stage, step, path, approver selection information, you will want to take a look at the Tracing AWE sidebar on page 125 (page 35 of the PDF).

166 comments:

Praj Basnet said...

Thanks Jim. I've worked my way through Chapter 3 in your book and it is very informative!

Just a point though, there are some definitions that are created in Chapter 2 as part of web assets that are subsequently used in Chapter 3.

Jim Marion said...

@Praj, I am glad you find the information useful. You are exactly right about the chapter dependencies. Both chapters require a custom component. I wrote the component for chapter 2 and reused it for chapter 3. Many of the chapters build on each other. I included the source projects for each chapter so a reader can skip a chapter and just import its source. For the most part, the sections are independent, but within a section you may find dependencies. Section 2 (Ajax) has the most dependencies. Sections 3 and 4 have fewer dependencies.

Andrew said...

Hi Jim,

I'm wondering if you can help. I've been going through the book (which is really cool btw) and am using the "Configurable User Interface" which is in Ch7. When I use it on Firefox (3.6.10) it works fine. But when I use it on IE (8) all I get is an alert (from part 5 in the APT_UI_LOADER_JS html object).

I'm not really sure what I can do to work out why this is occuring. I've tried adding my site to the intranet zone and trusted zone and changed various options relating to scripting and file downloads.

At first, if I used the IScript directly I'd get a popup prompting me to download the IScript file (unknown file type). But I've resolved this by using the %Response.SetHeader() method, so I can now see the results of the IScript. But I still get the error, so I guess that isn't the problem.

Any hints or clues? All I've been able to do so far is comment out the alert, so at least I don't get the parser error message. But that isn't ideal..

Cheers,

Andrew

Jim Marion said...

@Andrew, What error are you getting? Is it "parser error"? Firefox has a built in JSON.parse, whereas IE requires a custom library. I am guessing that you are missing the JSON2 library. In the chapter 7 iteration of the custom scripts code, JSON2 is imported in PT_COPYURL:

if (!window.JSON) {
// Native JSON not available, so import it
apt.files.importScript({
id: "json2",
url: apt.files.generateScriptContentUrl({
record: "WEBLIB_APT_JSL",
field: "ISCRIPT1",
event: "FieldFormula",
script: "IScript_JSON2"})
});
}

Anonymous said...

Hi Jim,
We bought a copy of your book which has been very helpful as I am working on a PeopleSoft Bolt-On app that has AWE embedded into it as the workflow engine.

I extended our ApprovalEventHandler using the sample code in your book as a guide and it works fine to set our transaction’s status when a transaction is fully approved. However, our app is using the LaunchManger DoRestart method, and when the OnHeaderApprove event is extended, the DoRestart doesn't work correctly (the DoRestart seems to be executing the extended OnHeaderApprove logic, but it shouldn't, since when the DoRestart is executed the transaction does not meet header approval conditions). In any event, the end result is that the transaction isn’t restarted successfully and our transaction’s header record is inaccurately set to ‘approved’. Even if I extend the OnHeaderApprove event and don’t include any code in the method, the DoRestart still doesn’t work.
I think this is a bug a
nd I put in a case with Oracle Support but I haven't gotten anywhere with them so far since the rep seems to consider this a customization no matter how I try to explain the issue (even though no delivered code was modified).

Would you be able to confirm whether this is a bug or not? And if it is, maybe you could use your influence to get it fixed. Since our app is component driven, I was able to work around the issue, but I reported the issue because I want to help Oracle improve the AWE framework which overall I think is quite impressive!

Thanks,
Frank

Jim Marion said...

@Frank, I'll forward your comments to the common components team.

Jim Marion said...

@Frank, I did run your information by development. They would like to see a trace file. The developer said to go back to support again, but this time bring a trace file. I suggest you ask for an escalation if the support analyst insists this is a modification. Let me know if you still don't get anywhere.

Anonymous said...

Hi Jim,

Thanks for your help in trying to get this resolved. Like I said, I am able to work around the issue for my app since it is component based, but the main reason I put in the case was to try to help Oracle improve the AWE product.

I should be able to put together a trace file, but I balked when the rep mentioned recreating the issue in demo which obviously would not be feasible!

I'll keep you posted!

Thanks again,
Frank

Anonymous said...

Hi Jim,

FYI: When I went back and set up a trace for the issue I was having, I discovered that the issue is no longer happening! I had changed some of my code in both the PostBuild and SavePostChange events since coming across this issue, but at this point, I can't really pinpoint exactly what caused the problem in the first place.

Anyway, I assume it must have been something I was doing wrong, but thanks for your help!

Frank

Arvin said...

Hello Jim. Your chapter on AWE is very useful when we created a custom approval functionality in HCM 9/Tools 8.49. But our application will now be migrated to HCM 9.1/Tools 8.5 and initial analysis showed that the AWE in PT 8.5 uses an entirely different set of objects starting with EOAW. Does this mean that we would need to re-code and use EOAW objects rather than PTAF? Thanks!

Jim Marion said...

@Arvin, yes, the only difference is that the 8.48/49 version uses the PTAF prefix and the 8.50+ version uses the EOAW prefix. You will need to find/replace anywhere the PTAF prefix is used. Unfortunately, the PTAF code is still in 8.50, so it will compile even though it is no longer used (at least, that is how it is in my 8.50 server that was upgraded from 8.49).

kevin weaver said...

I am trying to write an approver user list that will return one to many approvers based on the appover's supervisor chain and their supervisor's signing authority. I thought I would just use an application package to return an array of appovers but it is generating an error message. I am afraid I don't quite understand if I can configure one step in a path to have multiple approvers?

Jim Marion said...

@Kevin, yes, absolutely you can do that. In the sample chapter, I show exactly what you are trying to accomplish. In fact, the most simple approval process uses a role for a user list, and a role usually has multiple members.

kevin weaver said...

I was using the wrong Application Package. I used the example from you book as a base and added the logic we needed to determine who needed to approve the transaction. After I got some misconceptions out of my head it was simple. We have two copies of your book here, one for the team and one just for me. Thanks

Jim Marion said...

@Kevin, thank you for the update. Are you using Apps 9.1? The book was written using apps 9.0. In 9.1, all of the AWE classes and tables were renamed with the prefix EOAW. It appears that the developers left the PTAF classes and tables, but they no longer use them. I know this has caused some confusion for my readers. Was this your situation?

Aniruddha said...

Hi JIm The sample chapter on AWE is excellent and we have implemented GL workflow in 9 PT 8.49. The only thing that I see is that the URL that is available on the worklist page takes users to the component. Is there any way that will take users directly to the transaction from worklist page? I was able to concatenate the search parameters to the URL that I am sending in email and that URL takes to the transaction directly. Looking forward to your comments.Thanks

Jim Marion said...

@Aniruddha, the link in the e-mail should take you directly to the transaction without any additional effort. AWE uses the header record's keys to determine the URL. Do your header record's keys match your component's keys?

Aniruddha said...

Yes.
The Component's keys match to those of header record.Component search record has some additional alternate keys.Do you think providing alternate keys will make difference?
For testing i replaced the search record of component with my AWE header record and I see that it is still not taking users to the transaction from worklist directly. The URL in the email also just lists the component and not the search parameters.

I'll keep playing around it and will keep posted.

Thanks

Jim Marion said...

@Aniruddha, interesting. No, the alternate search keys don't matter. I'm not sure why you are seeing this.

Aniruddha said...

The fields in AWE header records were also keys in XREF record. This was causing the worklist issue.(This happened because while adding the fields to XREF record I simply drag-dropped fields from AWE header record)As soon as i fixed it the worklist url started working :)

Thanks to Google:)

Jim Marion said...

@Aniruddha, that makes sense. Thank you for the update!

Raj said...

Hi Jim,
I have a requirement wherein if I do not have a min. of 2 approvers in a approval chain, I have to push it to the Approval Admin. How do I do this?
For checking no.of approvers, I thought of adding a counter during onStepApprove and onHeaderApprove check if the counter in < 2.
If not, I need to error the transaction and send it to admin.
How do I code this in OnHeaderApprove?
Thanks
Raj

Jim Marion said...

@Raj, When you say 2 approvers, do you mean just in the approval user list or 2 people have to approve the transaction?

Raj said...

Two people have to approve the transaction. (not 2 people in the userlist)
I have defined 4 steps (approvers). There is some step criteria also. But at the end, if there is only one valid approver (or only one step is true) then I need to send it to Approver admin.

Jim Marion said...

@Raj, your approach seems reasonable. Also, there is meta-data for how many steps have been approved, etc, so you could dig around and find either the AWE properties for it or the actual meta-data and SQL test it.

Raj said...

But I am not able to figure out how to direct the transaction to the Admin in case the approver condition is not met.

The AWE send the transaction to the Admin when it does not find any approvers. Is there any event out there which can be leveraged?

Jim Marion said...

@Raj, dig around in the PTAF or EOAW (depending on your release) app classes and see if you can find a way to cancel the approval and then add a new addhoc approver or something. There should be existing methods for both of those. Work backwards from EOAW_CORE:ENGINE:AppInst.

Unknown said...

Jim

Chapter 3 is very helpful as we are building custom promotion process.

We are facing problem in inserting adhoc approvers to our process. by using piece of code mentioned in book "+" sign appears on status monitor page.

But on selecting adhoc approver userid and returning back to approval confirmatin page, adhoc approver disappear.

Helping People Succeed said...

Is it possible to generate a AWE transaction from one portal (e.g. External) and then generate the link for approval from a another portal (EMPLOYEE)?

For e.g. - our users are in external portal (EXTERNAL), but the approvers are in EMPLOYEE portal. So when the email is generated for approval, we want to the use the EMPLOYEE portal. But the URL defaults to the EXTERNAL portal..

Using of the Internal URL definition also did not work..

Any ideas...

Jim Marion said...

@Helping, take a look at PS_EOAW_TXN. In there you will find EOAW_EXT_URL, EOAW_INT_URL, NODE, and PORTAL. Likewise, look at the EMP_SERVLET URL definition. Often these values are not populated. I don't believe any of these are used when you execute a transaction online (only from web services, app engine, etc), so it probably won't help you, but this is all I can think of.

You should put in a ticket with Oracle Support to see how they recommend resolving this.

prashant gupta said...

does tools have any table which stores the list of all approvers for a particuar request?

Jim Marion said...

@prashant gupta, PSWORKLIST stores all the approval information for both traditional and AWE approvals. You can see multiple approvers for a particular transaction ID by querying for that transaction ID.

Sapna said...

Hi Jim,

I am working on thr AWE set up for PO change order.
In Financials, on the PO and eProcurement Approval setup, the Transaction Registry only really takes Header and Line level, but the trouble is a lot of the workflow decisions need to be based on the lowest level ie distribution, where the chartfields are. for example, routing by department, project, account.my client want the routing to be sent out based on the diff department on distribution level for a single PO line .THis is what i would expect to be able to configure.

So, for example PO - the Transaction Registry expects two views PO_HDR_AW_VW and PO_LINE_AW_VW. If you put a dist level view on the 2nd level the system crashes down the line in an approvers worklist. If i modify the line view adding in the PO_LINE_DIST table you also run into problems and you can see from the peoplecode that its only populating the PO_LINE_AW_VW from the PO_LINE table
.
Is there a way my requirement is achiveable.Please suggest.

Jim Marion said...

@Sapna, couldn't you create an approval user list that is either a query or an app class? The approval user list would take the header/line info as parameters and look up the distribution department from the header/line details. It would then determine the appropriate approvers and return them as either query results or as an array.

Tom Williams Jr. said...

Hi Jim.

I wanted to thank you for your very informative blog. I have been reviewing it for months now and have finally sined up so I can leave comments.

As a result of this blog entry I will buy your book as I am currently configuring AWE on HCM 9.1.

Could you provide a blog entry on troubleshooting delivered AWE processes? We are exeriencing some strange errors that I have not found documented and figure if I had a good review to follow it might help. We are currently configuring AWE on Recruiting and JobOpening is the Process ID.

Thanks again...

Tom

Jim Marion said...

@Tom, thank you for the compliments. As for the AWE troubleshooting, did you see the AWE log configuration sidebar in the sample chapter attached to this post?

Sapna said...

Tom,Yes correct i am able to do that with the query and App package but the problem with this is If there are three distribtuion line in one PO line then it will combine the department approvers from all the three distribtuion line into one path (Line)and route it.My requirement is to somehow create paths for each distribution line for a single PO line.This is the part i am not able to work with.Please suggest if there is any way to do so.

Raj said...

Sapna,
Can you not create 3 paths with different path criteria's such that the logic will follow only one of the paths? This way you can have different set of approvers for each path.
The criteria can be coded in app.class which will return true or false.

Sapna said...

@Raj,thanks for replying.
I appreciate it..yes i could have done this if the number of distribution lines are fixed for a PO line.I can setup paths criteria on the basis of distribution number only for a fixed number.but there can be any number of distribution line number for a PO so i have to dynamically generate as many paths as many the distribution lines are.I took the three distrbtuion line as an example.

Thanks!!

Tom Williams Jr. said...

@Jim. I don't think I understand what you are asking me to look at. Sorry if it seem so obvious. I do not have the ability to customize any of the delivered packages to do this analysis at this point. They are pretty restrictive here and I cannot change delivered processes for some of the logging items you pointed out in the attached article.

Raj said...

Sapna,the other way to try this is to have one path and create the approval defn. with max. no of approvers. Then use an app.class in the step criteria to determine whether to use that step approver based on the data from distribution line. So based on some criteria you can turn on or off executing any of the step. This will finally leave you with the required no. of approvers.

Jim Marion said...

@Tom, yes, that is correct. You would have to make a modification to enable the logging discussed in my book. Other than that, I'm not aware of any techniques for debugging workflow rules.

Unknown said...

Sapna, Can u tell me how u have implemented it .. I am also in same issue ...
Jim , can u please pore some ideas on it

Sapna said...

Hi Suma,

We changes the AWE base tables to include the key fields from the distribution level to achieve this.We modified the PO_AW along with the line level record used in the AWE transaction registry.It required many other changes in the AWE approval component to include the extra fields we added in the Configuration records but It worked:)

Kevin Weaver said...

Hi Jim, I have an intresting issue with AWE delegation. We are applying bundles and our batch delegation is failing on some old time cards that got stuck due to some bugs in the TL process that would not let the manager approve them. Now these outstanding transactions are being assigned to delegates and then reassigned back during the batch delegation process and are failing. Needless to say they are from last year and have been manually entered into the time card and I would be helpful to just mass deny all these transaction, since they have already been paid. I looked at the admin component and have determined that the best way to get rid of these transactions would be to write a batch process to deny these old transactions. Is there way to go against the core application package to acheive this? Thanks Kevin

Jim Marion said...

@Kevin, good question. It has been a long time since I've looked at the EOAW (or PTAF depending on your release) tables, but I would be tempted to just SQL update the status flag on those items you want to remove.

Yes, you can use the ApprovalManager to Deny transactions. The ApprovalManager constructor requires an Operator ID, so you may be able to pass in the OPRID's of the users owning the offending workflow items. But this approach should run the same code that is failing and should respond the same as if you ran it online.

Krish said...

Hi Jim, I have a strange requirement from one of the clients to cancel the transaction post approval due to exceptional reasons. Can we terminate or suspend a transaction once the approval process is complete. i.e all the steps are approved but, post all the approvals can the transaction be cancelled. Currently i have defined a process and definition for approvals and to cancel the transaction post approvals i have defined another process. i.e post approval i would resubmit the transaction and then terminate it immediately.


But to maintain consistancy in the approval monitor for the user this is not the right solution.

Could you suggest a solution or any other work around.

Jim Marion said...

@Krish, I'm having some trouble with the concept. If I understand correctly, you would like to cancel a transaction that was approved. I am not aware of a good way to do this. The point of approval is to confirm a transaction. Once confirmed, it should not need canceling. If it does, then someone should question why it was approved. The reason you don't cancel an approval is because of the transaction associated with that approval. An approval is like a dam on a river. The dam holds back the water. An approval holds back the transaction. Once you approve the transaction, that is like opening the flood gate for the dam. The transaction flows out to the other side. Trying to unravel the transaction and all other business processes linked to the transaction may be just as dangerous as standing in front of the flood gate to push flooding waters back behind the dam.

I understand that circumstances change and a previously approved transaction may no longer be acceptable, but that should be so infrequent that you would forget how to handle it if you didn't write it down in policy form.

If you find that canceling an approval is becoming a common business practice, then perhaps your workflow needs to be redesigned so that it has another level of approval, and that level of approval involves whomever or whatever is later deciding to cancel the approval.

PeopleSoftOracleFusion said...

Hello Jim, We are implementing AWE for 'Adhoc Salary Change' in 9.1/8.5 and my question is around selection of HDR record.

Can we choose HDR record at any level other than zero? We believe we should keep 'SS_KEYS' at level 1 as header record and populate the value of status into SS_STAT_INDICATOR as this is the field value workflow looks at to invoke CI to update database one all approvals are met. In that way, we don't need to add any exclusive field to keep track of approval/submit status.

Also, can we use a combination of HMAF_AWE application package and HCSC_MON_SBP rather than EOAW_CORE and EOAW_MON_SBP for HCM 9.1/8.5 application as both application package differs the way they are implementing AWE engine. To start with, we are trying to implement the basic AWE functionality in 'Adhoc Salary Change' and once we have a proof of concept working, then will expand to meet customer requirements.

Thanks in advance.

Jim Marion said...

@PeopleSoftOracleFusion, yes, use the HMAF classes, not the EOAW classes.

As far as the HDR record... the header identifies a unique row for the approval. AWE knows about headers and lines based on configuration, but doesn't really care about level 0, level 1, level 2, etc, the way the component processor cares about them. AWE is all PeopleCode, so you can pass it a stand alone rowset, etc. Where the fields exist on the page is irrelevant. What matters is that you initialize it with the same header record that is identified in the meta data as the header record. And, if you use line level approvals, that you use the same line record.

PeopleSoftOracleFusion said...

Thank you, Jim. I got another question. In reference to Chapter 3 of your book, In ApprovalEventHandler, we are updating the value of APT_WA_APPR.APPR_STATUS = 'A'. By updating this APT_WA_APPR.APPR_STATUS to 'A' is not updating AWE record statues to 'A' for the below fields or any ohter record.fields specific to AWE. How should be invoked so that underlying AWE records also gets updated.

PS_GMCR_SALCHG_XRF.EOAWTHREAD_STATUS
EOAWSTEP_STATUS.EOAWSTEP_STATUS
PS_EOAW_USERINSTEOAWSTEP_STATUS

Jim Marion said...

@PeopleSoftOracleFusion, you should not have to update the EOAW tables directly. You just call the ApprovalManager.DoApprove or ApprovalManager.DoDeny methods. AWE takes care of updating the EOAW tables and calls your Approval Event Handler.

You might turn on an SQL trace to see if it is updating the tables and then rolling back or something. You might also turn on the AWE specific trace as described in the Chapter 3 sidebar on page 125.

Unknown said...

I have a scenario in which I have to create an AWE workflow with dynamic paths. I have set up the trace. The trace works fine when the process is initiated and the request is assigned to the first approver but after the first approver approves, the trace doesn't show anything.

I am using worklist for notification. The item does get removed from the first approver's work-list but is not added in the second approver's worklist. I have tried to debug and see that whether the user-list method is called again and found out that it doesn't get called twice.

I am using an application engine class for userlist.

Please let me know what I am missing.

Jim Marion said...

@Omar, I saw your question in the OTN Forum here. Perhaps another reader of this blog has a recommendation for you?

Unknown said...

If you could refer me to a generic step-by-step guide for configuring a dynamic work-flow it would be great as I wasn't able to find anything regarding dynamic work flow. The red-paper that I read also focused on static work-flow.

Let me add some more information about my scenario:
1 - Create a single step+single path process with source set to dynamic and all criteria set to always true.
2 - As it is a single step I will use the same user list based on an application class as the user list for the step.
3 - I have added a field in the transaction record which helps me store the approval step number i.e. how many approvers have already approved this request. In the user list class, I use this field to join with a custom table to determine the user id of the approver to which the transaction next has to be routed. For example
current-seq-id = 1 - approver = test1
current-seq-id - 2, approver = test2

I have created 3 events for the transaction with one being route for approval and the participants were the approvers from the drop-down.

I hope this additional information helps you in identifying the issue and helping me. :)

Thanks!

Raj said...

I don't think the dynamic feature works. Check with oracle support.

Raj

Praveen said...

Hi Jim
Do you have anything on line level approval implementation?

Jim Marion said...

@Praveen, I do not.

das said...

Hi Jim, Thanks for all sharing all the knowledge.
I have a question in userlists.
I am writing App Package to get a list of users. The users have multiple roles and each user from the list should Approve the voucher..ie., the multiple oprids fetched by the userlist should be in different boxes...but for me all the users are coming in a single box. Can you please help me how to make this multi-tier approval instead of multiple approvers. FYI, I am using almost the same logic you used in the book to get the userlist.

Jim Marion said...

@das, I believe what you want is multiple steps instead of a list of approvers for a single step. Are you able to configure a static number of steps or is that variable by user? It has been a few years since I looked into AWE, so I can't remember how to make a dynamic path.

das said...

Thanks for reply Jim. My basic problem I am fetching the approvers from a custom table and incase for a particular role if the approver doesn't exist it has to fetch the next level supervisor. If we do this by delivered configiration there will be box as SKIPPED which is not acceptable by the client. So we are getting approvers with multiple roles and if we use this the same role might come in different step and this again can come as SKIPPED.

Prakash said...

Hi Jim, I purchased your book and currently I'm working chapter 3. Followed your instructions and receiving 'No approval process of id APT_WebAssets is registered with the system.' message when I tried to launch component. Verified in Register Transaction page and APT_WebAssets exist.

Please can you help me?

Thanks,
Prakash

Jim Marion said...

@Prakash, are you on PeopleTools 8.48/49 and apps 9.0 or are you using apps 9.1+ with PT 8.50+? The chapter for the book was written using 8.49 with 9.0 apps. In 9.1, the common components team renamed all of the App Designer objects to be EOAW instead of PTAF. If you followed my steps on a newer version of PeopleSoft, then you may have updated the wrong tables and used the wrong app classes. Depending on your tools release, be sure to use EOAW or PTAF accordingly. EOAW on newer versions, PTAF on older versions.

Mktablet said...

Hi Jim,
Thanks for your help on AWE.My question is more specific to the delegation piece. I have created the custom transaction as per your book and now I am planning to use delegation on top of it. After defined the delegation setups the transaction still does not flow to the new proxy and still stays with old approver. so
1) Do I have to write a custom code in userlist to replace this? The delegation process as such works fine.
2) Where would u suggest to call CI after all approvals are done? In our case lets say if all approvals are approved by monitor approval process. I should be able to call CI on final approval. Is there a delivered class I can use?

Jim Marion said...

@Mktablet, For question #1, I'm actually not familiar with delegation. I know it exists, I know what it does, but I haven't looked into configuration or design. You may want to post that question on the PeopleSoft General Discussion OTN Forum. For #2, what you need to create is an Approval Event Handler as described in this chapter, but use the OnFinalApproval event. I'm suspecting you already knew that though... Let me know if I misunderstood the question.

Jim Marion said...

I believe this is the answer to the question raised by @Mktablet: OTN Forum Thread: Delegation Framework -- AWE

Mathumitha said...

Hi Jim,

I have a requirement in which the awe has 2 paths and each path is independent of the other(approving/denying path 1 should not affect path2). The approval is header level. Can this be done through peoplesoft AWE and how can this be implemented.

Thank you

Jim Marion said...

@Mathumitha, in parallel? Yes, this can be done. Just add a new path in the "Setup Process Definitions" component.

Unknown said...

I have enabled Ad-hoc approval.
But once I modify the approval & add some approvers manually it does not save the changes.

Do I need to write any peoplecode to save ad-hoc approvers ?

Jim Marion said...

@Rahul, no you just have to change the "A" to a "D" as you probably did.

Kevin Weaver said...

I saw mktablet's Question out here and thought, what a great idea for a blog. I just added Delegation Framework to approve my custom AWE transaction, so I documented the steps here...

http://pskcw.blogspot.com/2013/05/delegation-frame-work-for-approving.html

Jim Marion said...

@Kevin, thanks for sharing!

Allen Kuruvilla said...

Hi Jim,

I am bit confused with the concept of Include Users as Input and Transaction Keys as Input in the User List definition which is used, if your User list is a sql definition

Can you throw some light on this topic?

Thanks & Regards,
Allen

Jim Marion said...

@Allen, you may want your user list to return different users based on transaction keys and the OPRID of the prior approver (or the originator). If you check one or both of these boxes, then the values from the transaction are used as bind variables for the SQL statement. You only need these values if the transaction affects the user list. If so, then you would join a table like PSOPRDEFN or PSOPRALIAS to a transaction table and then add bind variables to the transaction table fields that match the keys you expect. I believe the keys are based on the header record registered in the AWE meta-data, and follow the order of the header record. These also match the AWE xref record.

Mktablet said...

@Kevin Weaver @Jim Marion . Thanks for the info.

Thanks,
Manoz

Deepak Ray said...

Hi Jim.. The chapter 3 is really very much helpful to have an understanding and insight of AWE. I have gone through the Oracle Red Paper also and found that they have used HSCS app packages / classes but in the chapter you have used PTAF app packages / classes..

Could you please clarify if the app packages have specific purpose or we can use any one of them..

Thanks,
Deepak Ray

Jim Marion said...

@Deepak, in PeopleTools 8.48 and 8.49, the core AWE objects were prefixed with PTAF. HCM created their own abstractions of AWE that use the prefix you identified. These were sub classes of the PTAF app classes. HCM recommends that you use their abstractions. Just FYI, in PT 8.50, AWE was moved to common components/enterprise components and all of the object prefixes were changed to EOAW.

Deepak Ray said...

Thank you Jim for the information. I am using peopletools 8.51 and was able to carry out the example by you by changing the PTAF Packages to EOAW. I would now try out with HSCS packages.

Could you please suggest how can we invoke a CI once the workflow is approved.. do we need to put the ci code in the onFinalApprove method? its just my guess.. or is there any setup in AWE like we have in Integration Broker --> Service Operation --> Implementation

Jim Marion said...

@Deepak, you do not need to use the HSCS. If you have it working with EOAW, that is good enough. This is what PeopleTools and common components intended for you to use. HCM has an abstraction layer, but you don't need to use it.

Yes, use the onFinalApprove method for your CI. Just create and use the CI in that method of your event handler. No, there is no Integration Broker setup. Integration Broker is only involved if you are communicating with an external system. Using an HCM CI from HCM does not involve Integration Broker.

Mathumitha said...

Hi Jim,

I am doing an AWE configuration. There are 3 steps in which step 2 and step 3 have some criteria. For few transaction, the step 1 is skipped as there are no approvers. But the step 2 even though the criteria is not satisfied is included in the approval process. What may be the reason for this

Jim Marion said...

@Mathumitha, I don't see any logical reason it should behave like that. You should open a support case for this issue.

Unknown said...

Jim,
In the above comments I see that you suggested using the CI in OnFinalApproval method of the event handler. I see that there is only OnHeaderApprove method delivered within the app packages. Do we need to instantiate the CI in OnHeaderApprove method of our custom event handler class.

Jim Marion said...

@Kirthi, it depends on what you are trying to accomplish. OnFinalApprove is the method that is called when all approvals are complete. If that is what you want, then you can create the method. If you just want to call the CI in the same place as the delivered code, then, yes, use the OnHeaderApprove.

Unknown said...

Thanks Jim. I was able to create a new class for CI within the custom app package and called the ci methods from OnHeaderApprove .until now there are no issues.

Thanks,
Kirthi

Kevin Weaver said...

Jim,

I am trying to add reviewers to an approval step and it works great if the transaction only goes through that stage.

So to clarify, I have an AWE approval process that contains multiple stages, one is for Compensation Team to approve if the Job Requisition is over a certain dollar amount and the other stage is for the manager's approval. What I am seeing is the reviewer user list is working fine if the transaction does not require approval from the compensation team, but if it does require the compensation team's approval then the review list is totally ignored. I even put code in the reviewer user list to email me when it gets called and it is not even getting called when the transaction requires multiple stages of approval. I have a case open with Oracle, but I thought I would ask you if you have ever seen this behavior before?

Thanks!

Kevin

Jim Marion said...

@Kevin, can you set it up as two separate stages, but repeat the manager's approval step in both stages? Then if the Compensation team criteria is met, then it will choose that stage. Otherwise, it will just use the manager stage. I really can't remember if it is supposed to execute all stages that match or just pick the first one that matches.

Kevin Weaver said...

That is how I first attempted to configure the approvals, but I also wanted to skip prior steps for Requester and if the requester was a manager of someone within the compensation team it would skip their approval. So I moved them to their own stage and that worked for approvals, but is is not working for the reviewer list. We are really using the Compensation team's approval to clean up the jobcode description so that the job is ready to post, based on the transaction.

Chandra said...

Jim,
We have a need to change the email link in the emails generated by AWE code (EOAW_Txn) or something else. Is there a way to change the email only where we need not altering the system wide changes ? I prefer not to change the code EOAW_CORE packages.

appreciate your suggestion.

I met at you HIUG conference at Phoenix, Thanks again for supporting me on PSUNIT presentation.



Jim Marion said...

@Chandra, what types of changes do you want to make?

Vish..... said...

Hi Jim,

This is the first time I am trying to implement AWE. I have done everything as per the steps you have mentioned in your book. It works fine for email notifications. But as soon as I enable the Worklist and try and save the component it gives me the following error:

at Approval process instance (Id = 'UC_TREMISSION', Definition ID = 'UC_TREMISSION', Effective date '2014-02-03', Thread id '513') (236,1056):10:1, Step nbr 1 (236,1058) PTAF_CORE.ENGINE.DefStepInst.OnExecute Name:Activate PCPC:8036 Statement:114
Called from:PTAF_CORE.ENGINE.PathInst.OnExecute Name:Launch Statement:68

I have researched on this error but I am not sure what is causing this. Is there any configuration I am missing? The users to whom the worklist is routed has worklist enabled in their user profile.

Jim Marion said...

@Vish, are you on apps 9.0 or 9.1+? 9.0 used PTAF_% whereas 9.1+ uses EOAW+. If you are on a newer release, then redo all the steps you did before, but instead of using PTAF App Classes and record definitions, use EOAW app classes and record definitions.

Vish..... said...

Hi Jim,

We are still on HCM/CS 9.0 and PT 8.51.

Thanks

Ank's Blog said...

Hi Jim,

I have a peculiar issue with AWE. We have around 4 steps in our workflow. There are few approvers who are same in step 3 and step 4. Our requirement is that if A approves at step 3, A should not be able to approve at Step 4. I have created a Query for populating userlist on who has already approved, and the userlist is fine at database end but userlist is not updated accordingly.

Thanks,
Ank

Jim Marion said...

@Ank, like you said, it should be based on your approval user list. If it is not working that way, then you should file a support request, because I believe that is the way it is supposed to work.

Vish..... said...

Hi Ank,

The userlist is decided as soon as the transaction is submitted. So while submitting the transaction, the approval status is pending, so your user list query will always pull the same user list at level 3 and level 4. You can have auto approval checked so that when user approves at level 3 it is auto approved at level 4. The other way is to determine the userlist from the code and not from the query. If somehow you can determine the user at level 3 and the user at level 4, then u can return null if user at level 3 is same as user at level 4. If level 4 is the final step then in this case information will be routed to Admin Role defined while setting up the process definitions. If step 4 is not the final level then it will just skip the step and it will show Skipped in the approval status monitor.

Krish said...

Hi Ank,

I think your requirement is if A approves at 3 then at 4 other than A has to approve the transaction. If so you can have the dynamic step checked. In Dynamic step the next approver is decided after the current step is approved. Even in the monitor until step 3 is approved you cannot see the step 4 approver name. I guess this should solve your issue. Refer Peoplebooks for more info on Dynamic steps.

Unknown said...

Hi Jim,

I have implemented a custom AWE by following chapter 3 of your book. My approval process contains multiple stages and I think I may have a similar issue as Kevin Weaver where Reviewers are not being recognized. The funny thing is if I restart the process from the Monitor Approvals page, it does recognize the approvers. If I approve from this page it also fires emails appropriately. Any ideas how the ApprovalManager and LaunchManager may function differently from the Monitor Approvals page than what is listed in your book? I'm running 9.1/8.51.

Jim Marion said...

@John, no I don't. That is interesting.

Viswa said...

Hi jim

This viswa and i had interaction with you long back on base64 conversion issue in sql server.

I got one more issue now and need your suggestion on this.

Can we extend html email approval for custom process ... I know oracle delivered for some of them.but we wanted to make this work for custom modules as well?

If yes do we need any additional coding or just config is enough?

Please help me.

Viswa

Jim Marion said...

@Viswa, Yes it is possible to create your own. I haven't dug into them to know exactly what you need. I thought the expenses one had its own App Engine for processing expense approvals? I am not certain though.

Anonymous said...

Hi Jim,
I am wanting to add a couple of fields to the worklist row on the worklist page. I want to show the voucher id, vendor name, and voucher amount. How do I add the fields to the worklist record and have them display on the worklist page.
Thanks

Jim Marion said...

@pjgmes, I believe the worklist page only shows transaction keys.

pavan polum said...

Hi Jim,

I purchased your Book tips and techniques.It is a wonderful book its been of great help to me for referencing AWE,ATTACHMENTS and APP Packages.I did Many AWE customizations usin your book as reference.

I am currently doing a AWE work where I would need to get the value of Approver selected in the
ADhOC step.Can you guide me on how i could get the approver value in onADhOC insert method?

I appreciate your help and i hope you write more books and provide more tips and tricks on you rblog for developers like me.

Thanks!!

Jim Marion said...

@Pavan, I am thankful that you find the book useful. I will take your advice and keep blogging ;)

I actually don't know how to get the value of the selected approver when inserting an adhoc approver step. I suggest you post this question on the PeopleSoft general discussion OTN forum

rajps said...

Thanks Jim, I read your book even before reading PeopleBooks for AWE implementation.After chapter3,I am able to implement AWE for Journal Approval and its working great.
After 3 months of go-live, now business came back with a question can a level2 or Level3 approve Journal without Level1 approval without receiving a notification. Level 2 user cannot have same Level role, that is SOX Audit issue. Any thoughts would be helpful.

Jim Marion said...

@Rajps, I suggest you test it out and see what happens.

Unknown said...

Hi Jim,
your books is very informative. Thank you!

My scenario has submit component different from Approval component. And I have configured the metadata with two components, in the configuration page. The problem is, its not triggering the emails to approver, from On Process Launch Event. Also the approving component shows all pending transactions, created using a view from the base record. Is that the reason for this? Somehow, I am able to see the AWE entries in STEPINST and USERINST tables.

Jim Marion said...

@Tom, enable logging as described in the chapter and see if that shows you an error.

Tom Mannanchery said...

Hi Jim,

Do you have any tips to find the original requester or initiator of a worklist item in the PSWORKLIST table? The ORIGINATORID field gives the OPRID of the last approver, I guess; so the original requester is not available on the PSWORKLIST table.

Tom

Jim Marion said...

@Tom, I could be completely wrong with the information I am about to provide, so please check it out and then post back whether I am right or wrong. PSWORKLIST contains INSTANCEID and TRANSACTIONID. If I remember right, TRANSACTIONID is unique for a particular workflow, and INSTANCEID unique for a routing. So theoretically you could use the MIN(INSTANCEID) for TRANSACTIONID to find the originator.

Tom Mannanchery said...

Cool.. This is really helpful. I will do some research based on your input. Will this be true for non-AWE workflow items as well?

Tom

Jim Marion said...

@Tom, yes.

Neeraj said...

Hi Jim,

Thank you for such a informative blog.I have purchased your Book tips and techniques. It's simply awesome.

I have a requirement to have 2 paths with one having several steps and the other path with only 1 step. I want that if any one path completes the stage should complete without waiting for other path.

My approach to this is write a code in event handler class method onstepcomplete. I would check if the current step is last step of any of the 2 paths( I hope this is possible somehow) and using the ApprovalManager class method Takenoaction to advance the other path which is still pending.(Can I call ApprovalManager class inside Event Handler Class )

Is this approach reasonable. Or is there any simple solution to this I am missing out?

Please help me

Jim Marion said...

@Neeraj, your question and requirement is very reasonable. Unfortunately, I don't have experience satisfying that requirement. Give it a try and let me know how it turns out.

Saeem said...

Hi Jim,

I have configured the AWE and it is working fine. I have a problem , when I click on the expand/collapse button in the AWE monitor the monitor is not expanding or collapsing and , also the view/hide comments link in the monitor is also not providing any result on clicking on it.

Can you please help me out on this?
Am I missing any particular coding.

Unknown said...

Jim

Chapter 3 is very helpful as we are building custom promotion process.

We are facing problem in inserting adhoc approvers to our process. by using piece of code mentioned in book "+" sign appears on status monitor page.

But on selecting adhoc approver userid and returning back to approval confirmatin page, adhoc approver disappear

Jim Marion said...

@Ashwin, that is not normal. You may need to file a support case for that issue.

Prathap said...

Hi Jim,

I have 8 levels of approvals like Manager, HR, IT dept, Asset protection team, CRE team...etc.
I have AWE which triggers mail to all levels correctly when transaction is approved in each level.
But my problem is i need to use different email templates for each level. In the Transaction Configuration 'Route for approval' event is allowed only once where i have 2 generic templates attached with participants as approvers and requesters.

Is there a way to configure unique template for each level of approvers? I am not able to enter more than one 'Route for approval' event.

Tom Mannanchery said...

Hi Jim,

Normally when a user is on LOA, they set something up for Alternate User in their System Profile so that their worklist items are transferred to the alternate user. Is there a way to have multiple alternate users?

Thanks,
Tom

Anonymous said...

Hi Jim, Thanks for such an informative blog.

Is it possible to have multiple submissions in one session for AWE.
Our requirement is that manager can submit multiple rows for approval (for any selected employee), and all the rows should be inserted to cross reference record, and for each row seperate approval transactions should be there. I tried to put the Do submit code in for loop but it didnt work.

Any suggestions.

Jim Marion said...

@Madhur, as long as you have a unique header record for each transaction, you can call Do Submit once for each. Each one will be a different approval.

Unknown said...

Jim, Does your book address anything like customizing the delivered PSWORKLIST page? Or duplicating it and modifying or is it less explanative than that level. Also does it go into creating rest services and the steps involved?

Jim Marion said...

It addresses AWE and creating new workflows, but not psworklist.

It does not address rest because that was not available when I wrote this book. I have a new book that will release in October that contains lots of REST examples and related PeopleCode.

Ankur said...

@JIM

Hi,

I have 2 doubts regarding AWE :

1. if a transaction have only 1 level of approval and approver want to push back the transaction to requester means want some modification into data by requester then how can we do it ? does delivered push back functionality provide this . As per my understanding, delivered push back only works if 2nd level approver want to push back transaction to 1st level approver but not requestor. Kindly confirm ?

2. If requestor want to choose approver at the time of submission then how can we achieve this ?

Jim Marion said...

@Ankur, #1, yes pushback allows the transaction creator to modify the transaction.

#2, Approvers come from approval user lists, which can be queries or PeopleCode. If you want to choose the approver in advance, then have the user select the approver and make your approval user list choose the approver from the user's selection.

Ankur said...

@jim :

Thanks for clarify but still i have some doubt regarding first query.As i know that pushback won't work for first level of approver to requester . It's mentioned in red paper of AWE.
Can you confirm on this ?

Jim Marion said...

@Ankur, I have pushed back on a single level approval, modified the transaction, and resubmitted. I suggest you create a test application in a development environment following the instructions in this guide and try it.

JosephR said...

Jim, I don't think Pushback functionality from first level exists. Here is the peoplecode comment from AWE app package that says the feature will be added soon.

EOAW_CORE.ApprovalManager.OnExecute
/** Can the approver "Pushback" the pending work to the prior approval step? In the current implementation of the AWE, pushbacks are only permitted within a path instance, so if this approver has pending work as the first step in a path instance, pushback will be disabled. This is incomplete functionality, since the question should more properly be predicated upon the thread in question. This will be fixed in the coming weeks. */

We are at tools 8.53.12 and HCM 9.2 application. Can you confirm if this feature is currently missing and will be added soon?

Jim Marion said...

@Joseph, I checking... will let you know.

Jim Marion said...

@Joseph, I confirmed with development that functionality has not changed. It still only pushes back to the first approver.

Unknown said...

Hi Jim, I have a Stranger Scenario happening where in a Approval Path for a Step is getting skipped despite of Approvers avaliable for that particular Stage > Path > Step. Do u have any idea on this?

Neeraj said...

Hi Jim,

We are facing a weird issue with Approval Framework. We have implemented a Voucher Workflow where we have 1 Stage (Header), 1 Path and 10 steps defined. We have a custom record created with Transaction Keys as keys i.e. Business Unit and Voucher ID and additional non key field 'MAX_LENGTH'.

The logic is when Voucher is saved, custom peoplecode written in savepostchange (which triggers before AWE is triggered)inserts row in this table and populate the MAX_LENGTH field. And this record is used in Step criteria's for all 10 steps like MAX<=some value(step no.). This is similar to dynamic path but we could use delivered dynamic path for our complex requirement.

The issue we are facing is even though savepostchange code correctly inserts value in this record for particular transaction, the AWE is ignoring the criteria i.e. if MAX_LENGTH <=5 at step 6 and database correctly has value 5, AWE still evaluates all Steps from 6 to 10 ignoring the criteria. This issue occurs intermittently or rather I would say rarely...with 1 in 1000 vouchers and works perfectly for others.

As this is rare and random we are not able to replicate this in any Non Prod Env and generate traces for it.

Any thoughts on this will be gratefully accepted....

Regards,
Neeraj Naik

Neeraj said...

@Ankur,

Yes you are correct AWE does not allow pushback on 1st Step as there is no prior approver available. You can achieve this by Deny the transaction which will go back to Requestor who can Resubmit it. However, some delivered Workflows like Expense Workflow have functionality like Send Back which works for Step 1 as well, but it is governed by some different rules and internally AWE actually terminates the Approval Thread.

@Sourabh,

I have come across one such scenario where the approver was requestor and Route to Requestor and Self Approval is turned off. In such case it skips the approver. Does this apply to your case?

Regards,
Neeraj

Andytest2221 said...
This comment has been removed by the author.
Andytest2221 said...

@Jim,
Question about alternate approvers - Is there a way to route to/add as reviewer both the alternate and the approver?

If the SQL in my userlist returns me and the alternate, it just returns the alternate.

Unknown said...

Hello Jim,

Is it possible to reroute an request to more than one approver? I see that there's a Reassign method on AppInst to reassign to another approver but what if i want to reassign it to more than one?

Thanks!

vivek said...

Hello Jim,

I want to use notifications option in AWE,( i want to send an email to the user). If the user has 5 pending vouchers, the notification should be sent to the user which includes all the 5 vouchers in one email. How to do that?

Jim Marion said...

@Vivek, it sounds like a custom App Engine paired with some custom AWE metadata would do it. The AWE would identify the people to notify and trigger the AWE process.

Unknown said...

Hello Jim,

We have requirement to configure the AWE in such a way, transaction needs to be routed for approval to two different users.
this is not sequential and in order to get the approval both.

Could you please suggest.

Thanks

Jim Marion said...

@Unknown, you may want to post that question in the PeopleSoft OTN forum where it will be visible to a broader audience.

Unknown said...

Hello Jim,

Have posted the question in the following link

https://community.oracle.com/message/13858385#13858385

Thanks

Andytest2221 said...

Hello Jim,
Is there an easy way to exclude duplicate approvers?

Example -

Path A is a dynamic department chain approval defined using an app class. It returns USER1.
Path B is a static approval for something else. It also returns USER1.

Is there an easy way to exclude USER1 in Path B when USER1 exists in Path A?

Unknown said...

Hi Jim,
I have a question on AWE picking the approvers list. I have used delivered GetApproverby SupervisorID userlist and I see that if both Manager and Employee belong to same country, right approver is getting picked. But if Manager is in a different country than that of his reportee, I get AWE approver skipped error. I am not sure where I am going wrong here. Can you pl suggest.

Thanks
Ramky

Jim Marion said...

@ramky007in, that is really strange. I would not expect that. You might want to post this question on the PeopleSoft General Discussion OTN forum.

Unknown said...

Thanks Jim for your response.
Adding to my above statement, I tried using a custom SQL in the Approver List to pick the right approver and surprisingly that is working. I feel I would have gone wrong some where.

Biswa The Real Resolver....... said...

Hi Jim,

The approval process GSSTransferEmployee is setup correctly on our environment, and the transactions are getting submitted correctly. But when an approver is trying to approve the request an error message is showing up "This transaction cannot be approved." and then I can see the step where the approver tried to approve, is actually approved but the control didn't flow to next step. I checked the approver is having correct role as "Approvals Fluid" to his user profile. What could be the possible reason behind this situation?

Awaiting your response.... :)

Will said...

How can you split a Step to have 2 groups...

I would like to create a wf that has 3 steps But the middle one could be 1 to many Groups that all need at least one approver per group to go to next Step

Step2 (2 UserID's for CFA)
Step1 (Main) --> Step2 (3 UserID's for CFB) ----> Step 3 (Admin)
Step2 (4 UserID's for CFC)

I am sure I accidentally did it once But not sure the coding

Will said...

sorry looks like spaces were removed

---------------> Step2 (4 UserID's for CFC)
Step1 (Main) --> Step2 (3 UserID's for CFB) ----> Step 3 (Admin)
---------------> Step2 (2 UserID's for CFA)


basically in the middle step (2), I want to create Multiple Groups and be able to to have 1 approve r from each group before it goes to step 3

Satya said...

Jim,
I am working on a requirement.
A ( Comp ben mgr) > B Reports to of new position > C Approval chain up to CEO > D.Staffing
Is it possible to do as dynamic step?
I created 4 stages. A,B,D Aapprovals are working. The approval path C is starting every time with the submitter manager. The requirement is that the C path needs to start from the B reports ..

Please advise.

Satya said...

In Generic templates %1 is used for URL.
How can I add the approval component search key fields to this URL?. Please advise.
Email notification shows the URL but the key fields are not showing..

Vivek Tyagi said...

Hi Jim,

Need you advise on this.

I have 4 levels of approvals in my Workflow 1,RSC Using User List, 2.Co-Advisor Using User List 3. Advisor Using User List 4.Dean using Role
If Co Advisor is absent in the User List. Then the Status monitor Will Show RSC -->Skipped(COAD)-->Advisor-->Dean
My question is if Co- advisor is absent how to hide the skipped step in the status monitor?

Unknown said...

Hi Jim

Question regarding T&L AWE Reported time Approval, I am having multiple issues.

1) The delivered TLReportedTime / TLBySupervisorID is not working
when the Manager tries to approve time, I get the below error

First operand of . is NULL, so cannot access member path. (180,236) HCSC_USERLIST_UTILS.GetApproversBase.OnExecute Name:GetUsers PCPC:546 Statement:38



2) I set the new effective dated definition for TLReportedTime/ TLBySupervisorID
with custom worklist making use of Direct reports to table and I so have 2 approvers returning out of this User List Query which I have attached to the new effective dated transaction.

When I enter 1 weeks Timesheet, the routings are not happening,.
On Timesheet when I click "Approval in Process" hyper link I see 1 Monday time says Pending and rest of the rest 4 days says not routed.

next when I log in a manager to check , there are no approval lines going to the manager even for Monday.


regards
Som

Will said...

Jim Quick Question ....
I have a Stage with 1 step by it is by Line.....

It works great
I see the Stage and Stage description
I see Step for each line
Step Header Is Step Descrtion and the Item Description is Under that
There is the User List desciption
And the Users that are selected for the Line and the Step

But I want to add or change the UserList description.
Is there a way to adjust the description perline somewhere based on User List description

Vikas Bhartiya said...

Hi Jim,
thanks for the post - resolved my doubts regarding PTAF and EOAW (at one point I thought my Admin screwed up during upgrade initial pass).

My issue is - PeopleSoft doesn't seem to convert setup data that was there in PTAF to corresponding entries in EOAW records? Is this by design or we are missing something? We are on HCM 9.0 and moving to 9.2 (all our AWE data currently resides in PTAF while 9.2 upgraded copy of production seems to be using EOAW. none of the data is converted automatically (setup data or transactional data - all are still residing in PTAF records only).

Thanks in Advance,
Vikas

Unknown said...

Jim,
Questions about LaunchManager and ApprovalManager (I hope this wasn't already answered in other posts or the chapter) -
You initialize the Approval manager in PostBuild to create the Status Monitor. But why does the LaunchManager need to be initialized there? Could it be initialized in SavePostChange instead?

For example, if I want to allow the current user to submit on behalf of another user (header record field populated on the request page) I wouldn't have that value until after PostBuild. So instead of this in Postbuild:

&c_aweLaunchManager = create PTAF_CORE:LaunchManager(&PROCESS_ID,
&headerRec, %OperatorId);


Could I do this in SavePostChange (before calling the DoXXX methods):

&c_aweLaunchManager = create PTAF_CORE:LaunchManager(&PROCESS_ID,
&headerRec, XXX_HDR.REQUESTOR_ID.Value);

Jim Marion said...

@Andy, great question. You can initialize either almost anywhere. I believe the reason I initialize it early is to set the state of the submit button: &launchManager.submitEnabled.

Just FYI, I have initialized everything in FieldChange to save and submit a stand alone record that wasn't even part of the current component buffer. Likewise, you can use it from Integration Broker or App Engine as well.

Unknown said...

I have to enable Ad-hoc approval workflow, Please guide me how to do that in detail

Unknown said...

I have to enable Ad-hoc Approver, Please help/guide me to do so.

Jim Marion said...

@Bharat, there are two steps to enabling Ad-hoc approver:

1. Adhoc Access Logic: make sure the approval transaction add-hoc access logic app class allows for ad-hoc approval.

2. If #1 doesn't allow ad-hoc, then you will need to locate the CreateStatusMonitor of CreateFluidStatusMonitor function call for your component. These functions have an ad-hoc flag with valid values of "A" and "D". Change this flag value.

Unknown said...

Hi Jim,
I'm trying to implement a line level approval.Launchmanager class will take only header record as the input so when we call DoResubmit() method, both approved and denied lines are submitted again for approval.Is there any way to Re-Submit only denied lines??

Thanks,
Raghavendra

Tom Williams Jr. said...

@Raghavendra

Try this.

&headerRec = GetRecord(Record.Z_HeaderRecordName);
&line = &line_rws(CurrentRowNumber()).GetRecord(Record.Z_LineRecordName);
&c_aweApprovalManager.DoDeny(&headerRec);
&c_aweApprovalManager.DoDeny(&line);

I'm still learning about Line Level Approval and have made a lot of headway in this area but still have more to learn as well :)

Tom

Tom Williams Jr. said...

Hi Jim.

I was wondering if you or anybody else might know how to test that the current user is the the approver for a line level approval item.

Scenario.

My request has 3 line items (bat, ball, glove).
The current user is only allowed to approve bats in this request.
My approval button is on each line since I want the approvers to specifically approve each line they have assigned to them as a means to indicate they reviewed each line.
I'd like to hide the approve/deny button on lines that they are not approvers for.

I've looked at ApprovalManager hasAppInst and isReviewer but those seem to not function as granularly as I'd like. Maybe I've misused them. Maybe there's a better way.

Any suggestions?

PS. It was nice to meet you at 2018 HIUG. Look forward to chatting with you more at the 2019 HIUG in Florida.

Thanks in advance...

Tom

Tom Williams Jr. said...

Since I asked I thought I'd share what I have found for the benefit of others and I am still hoping there is a better way to find the current approvers required line actions using App Package Properties/Methods :)

Here is the SQL that I have to use to test the status of each line during RowInit() which will allow me to show/hide line detail action buttons. I used the field translate for EOAWSTEP_STATUS to determine what each status was that is pertinent to my process. Please note that I only needed the most current EOAWPARENT_THREAD so I used the max select to determine this. If others need to see the history they can modify the SQL accordingly.

select a.key1, d.oprid, d.eoawstep_status
from line_detail_table a,
custom_exref_table b,
ps_eoaw_stepinst c,
ps_eoaw_userinst d
where a.key1 = b.key1
and a.key2 = b.key2
and a.key1 = :bind1
and a.key2 = :bind2
and b.eoawthread_id = c.eoawthread_id
and b.eoawprcs_id = c.eoawprcs_id
and b.eoawdefn_id = c.eoawdefn_id
and c.eoawstep_instance = d.eoawstep_instance
and b.eoawparent_thread = (select max(eoawparent_thread) from custom_exref_table where eoawprcs_id = b.eoawprcs_id and eoawdefn_id = b.eoawdefn_id);

Thanks...

Tom

Sharan said...

Hi Jim

How do i reorder the stages in a sequence in AWE?

Thanks
Sharan

Will said...

I have a quick Question .... I have multiple stages with a couple of steps...
But it is Line Level Approval...

This works greatish , Since the system automatically uses OnLineApprove or OnLineDeny

If All Approved or All denied , Fine !

But Problem with Deny, When I deny a few lines , I want to Deny the lines and then the entire Document and stop Approvals.

What I have done now is OnAllLinesProcessed I check all lines and if any lines are Denied I can reset Doc to be sent back to User, and Status for work xref line 0 is C instead of A or D .

How can I deny it at the header if any lines are approved. Ie Set Some Flag so OnFinalDeny is triggered (And still be able to resubmit later)

W

Anshu said...

Hi Jim,

I have a requirement where i need to Auto Approve the PO based on below criteria:

1. If the PO Amount, Category & few fields are same as the Requisition field values from which the PO is created.
2. If the AWE approver has some xyz role

If the criteria is satisfied, then Auto approve the PO for that particular approver.

Any help is appreciated.

Thank You,
Anshu