Apps To Fusion

.......Our Journey from Apps To Fusion

 
  • Increase font size
  • Default font size
  • Decrease font size



Parse the XML in HR_API_TRANSACTIONS via SQL in Self Service HRMS - SSHR

E-mail
User Rating: / 0
PoorBest 

In one of the previous articles linked here, we learnt how the state of the Self Service HRMS session is serialized in other words dumped into a table named HR_API_TRANSACTIONS. For example in talent management, during the objective setting process, when the user enters the objectives in the screen, the data is not stored in the base tables i.e PER_OBJECTIVES. Instead the objectives data entered by the user is dumped into a column CLOB named TRANSACTION_DOCUMENT within table HR_API_TRANSACTIONS. This CLOB column contains the data in XML format. The entered data remains in this XML CLOB until the objectives are approved by the manager. Until the approval happens, the data stays in XML format. However, what is more interesting is that subsequent updates or deletes to objective records are also captured within the XML column. The XML contents in transaction_document is nothing but the dump of the root application module of that page in XML format. The idea behind this XML dump is that, when user re-queries the data, XML is parsed by Self Service engine and presented to the user as if the data was queried from the base tables itself. Sometimes during implementation projects it becomes important to parse the values in this Self Service HRMS XML column. In this article, you will see the sample working code in SQL that parses the XML contents and prints the objective records from XML. You will also learn the life cycle of this data as to how this XML gets transferred to the base tables, i.e. PER_OBJECTIVES.

Even though talent management is being used in this example, the principles of this example can be applied to other kinds of transaction parsing in Self Service HRMS.



The image below shows how the two objectives appear in the screen, immediately after the data entry, prior to approval of objectives.

 





The image below shows how this data appears in the XML. Please make a note of transaction_id=66074 and Objective Names for the two records.

 


The image below shows that the data has been captured in ScoreCard table, which is the parent record for objectives. However the subsequent image shows that PER_OBJECTIVES is yet to be populated for this scorecard id. Effectively this means that data entered by the user has gone to XML

 



PER_OBJECTIVES still does not have the two objectives added by us


 

The next image shows the result of XML parsing. For reusability, you can copy paste the XML Parsing SQL code from below

 


SQL Code for Parsing in this example

SELECT extractvalue(VALUE(xx_row), '/ObjectiveEORow/Name') AS objective_name,

       extractvalue(VALUE(xx_row), '/ObjectiveEORow/StartDate') AS objective_start_date,
       decode(extractvalue(VALUE(xx_row),
                           '/ObjectiveEORow/WeightingPercent'),
              '(null)',
              0,
              '',
              0,
              extractvalue(VALUE(xx_row), '/ObjectiveEORow/WeightingPercent')) AS weightingpercent,
       extractvalue(VALUE(xx_row), '/ObjectiveEORow/GroupCode') AS groupcode,
       decode(extractvalue(VALUE(xx_row), '/ObjectiveEORow/ObjectiveId'),
              '(null)',
              0,
              extractvalue(VALUE(xx_row), '/ObjectiveEORow/ObjectiveId')) AS objectiveid
  FROM HR_API_TRANSACTIONS xx_api,
       TABLE(xmlsequence(extract(xmlparse(document transaction_document
                                          wellformed),
                                 '/Transaction/TransCache/AM/TXN/EO/ObjectiveEORow'))) xx_row
 WHERE xx_api.transaction_ref_id = 15791





Finally, lets see how the data moves from temporary XML location to base tables after approval.

As shown, after calling hr_transaction_swi.commit_transaction the data then becomes available in PER_OBJECTIVES. The HRSSA workflow calls this API after the transaction has been approved. Subsequent to this API call, the data from HR_API_TRANSACTIONS is removed. Therefore TRANSACTIONS is merely a temporary table. It must be noted that HR_TRANSACTION_SWI is a generic API that parses the XML against transaction_id, and populates the base table. 

 

Comments (22)add
XML DB Syntax
written by Talluri Ajay , February 13, 2010
Anil,

That was a wonderful Article. Thank you very much.

I would like to know more on the syntax

TABLE(xmlsequence(extract(xmlparse(document transaction_document
wellformed),
'/Transaction/TransCache/AM/TXN/EO/ObjectiveEORow')))

Even a reference on this will be of great help.

Thank you
Ajay
report abuse
vote down
vote up
Votes: +0
...
written by Anil Passi- , February 13, 2010
Hi Ajay

This was done to create an array of records. You see, CLOB is contained within a single row. However we want to return multiple rows within the results of SQL statement. Therefore we create one single record instance for objective row within the CLOB column

You can do further reading on http://download-uk.oracle.com/...ons226.htm

Thanks,
Anil Passi
report abuse
vote down
vote up
Votes: -1
XML DB
written by talluri Ajay , February 14, 2010
Hi Anil,

Thanks for your reference. It was quite useful.
I was getting an error while running the above query 'Missing right Parenthesis'

However after looking at your reference I happen to use the below syntax for building the XML table and it worked.

TABLE(xmlsequence(EXTRACT(XMLTYPE(transaction_document) ,
'/Transaction/TransCache/AM/TXN/EO/ObjectiveEORow')))


We have a column named 'STATUS' in HR_API_TRANSACTIONS having values of 'Y','D','W' does these values have any significance.

report abuse
vote down
vote up
Votes: +0
...
written by Anita Koukuntla , March 03, 2010
Hi Anil,

Any idea on equivalent api call for hr_transaction_swi.commit_transaction for 11.5.10 version .

Thanks
report abuse
vote down
vote up
Votes: +0
API in 11.5.10
written by Anil Passi- , March 04, 2010
Hi Anita, I have seen this API work in 11.5.10 as well, RUP 4
report abuse
vote down
vote up
Votes: +0
...
written by Bader , June 21, 2010
talluri Ajay,

You can use the following query to get the meaning of STATUS column in HR_API_TRANSACTIONS table:

SELECT * FROM HR_LOOKUPS WHERE LOOKUP_TYPE = 'PQH_SS_TRANSACTION_STATUS'

Regards,
report abuse
vote down
vote up
Votes: +0
Oracle Apps
written by Oracle Expert , July 06, 2010
For Real Life project codes and queries and technical help go to http://www.oracle-expert.co.cc

report abuse
vote down
vote up
Votes: +0
externalizing Talent management - Objective Creation/ Updation using webservices by calling - HR_TRANSACTIONS_API
written by Arunachalam , July 11, 2010
Dear Anil,

In one of our client place their is an requirement to externalize the Talent Management - Objective Creation/ Updation through web services. The idea is to bring the objective creation functionality into .Net Portal application (without compromising the functionality of Oracle Talent Management - Objective Creation/ Updation).

We did the painfull excercise of generation XML document as required by the TRANSACTION_DOCUMENT format. And by using HR_TRANSACTION_API to populate

HR_API_TRANSACTION.create_transaction and HR_API_TRANSACTION.create_transaction_step and I updated the column TRANSACTION_DOCUMENT (I populated all necessary elements as expected by the application), but even after this, when I login into application, the OAF - UI is not showing the objectives (it gives JDO error).

Any help will be useful.

Thanks and Regards
Arunachalam.C
Dubai.
report abuse
vote down
vote up
Votes: +0
Error
written by Anil Passi- , July 11, 2010
What is the error that you get? Please paste the complete JBO error.

By the way, you could simply use the API for loading records straight into PER_OBJECTIVES. You do not need to use HR_API_TRANSACTIONS route at all. I have myself created objectives straight into base tables via PL/SQL APIs
If you wish, I will send you source code

Thanks,
Anil Passi smilies/smiley.gif
report abuse
vote down
vote up
Votes: +0
externalizing Talent management - Objective Creation/ Updation using webservices by calling - HR_TRANSACTIONS_API
written by Arunachalam , July 12, 2010
Dear Anil,

Yes I agree with you, and sorry for not explaining the requirement in full.

Requirement is: Use .Net UI instead of Oracle UI for Objective creation, and facilitate review/ approval of objectives by the supervisor through service calls (Oracle BPEL).

So If I use HR_OBJECTIVES_API.CREATE_OBJECTIVE it directly put the transaction into PER_OBJECTIVES, by the way I am planning to use this API once the supervisor approves the objective.

So I created following services to achieve the same

1. createObjective - which calls a custom pkg. procedure inturn calls HR_TRANSACTION_API (create_transaction and create_transaction_steps)
2. retriveObjectives - which calls a custom pkg. procedure reads the records from table HR_API_TRANSACTIONS - column TRANSACTION_DOCUMENT
3. submitforReview - which calls a custom pkg. procedure which sets the status to 'APPROVAL' in PER_PERSONAL_SCORECARDS. And call notification using send_notification
4. requestFurtherAction - which call a custom pkg. procedure which sets status to 'WKR' in PER_PERSONAL_SCORECARDS. And call notification using send_notification
5. finalizeObjective - which calls the pkg. procedure to read the records from HR_API_TRANSACTIONS - column TRANSACTION_DOCUMENT and calls HR_OBJECTIVES_API.CREATE_OBJECTIVE to push the transaction into PER_OBJECTIVES. And it
sets status to 'PUBLISHED' in PER_PERSONAL_SCORECARDS. And call notification using send_notification and remove transaction from HR_API_TRANSACTIONS and HR_API_TRANSACTION_STEPS.

Thanks and Regards
Arunachalam.Chidambaram
Dubai.


report abuse
vote down
vote up
Votes: +0
externalizing Talent management - Objective Creation/ Updation using webservices by calling - HR_TRANSACTIONS_API
written by Arunachalam , July 12, 2010
Dear Anil,

Thank you for your response.

In addition to above, the .Net Client suppose to consume these series of BPEL services and to simulte workflow, this way the business logic/ notification logics remains in APPS, where in we could externalize the UI part (in the portal).


Thanks and Regards
Arunachalam.Chidambaram
report abuse
vote down
vote up
Votes: +0
The Error Stack
written by Arunachalam , July 12, 2010
Dear Anil,

Please find the error stack.

oracle.apps.fnd.framework.OAException: oracle.jbo.JboException: JBO-29000: Unexpected exception caught: java.io.EOFException, msg=null
at oracle.apps.fnd.framework.OAException.wrapperInvocationTargetException(OAException.java:975)
at oracle.apps.fnd.framework.server.OAUtility.invokeMethod(OAUtility.java:211)
at oracle.apps.fnd.framework.server.OAUtility.invokeMethod(OAUtility.java:153)
at oracle.apps.fnd.framework.server.OAApplicationModuleImpl.invokeMethod(OAApplicationModuleImpl.java:750)
at oracle.apps.per.common.webui.PerTransactionTopCOImpl.initTransaction(PerTransactionTopCOImpl.java:346)
at oracle.apps.per.common.webui.PerTransactionTopCOImpl.init(PerTransactionTopCOImpl.java:226)
at oracle.apps.per.common.webui.PerTransactionTopCOImpl.processRequest(PerTransactionTopCOImpl.java:279)
at oracle.apps.per.selfservice.arch.webui.PerOAControllerImpl.processRequest(PerOAControllerImpl.java:530)
at oracle.apps.per.wpm.objectives.webui.ObjectivesPageCO.processRequest(ObjectivesPageCO.java:69)
at oracle.apps.per.wpm.objectives.webui.SetObjectivesPageCO.processRequest(SetObjectivesPageCO.java:60)
at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processRequest(OAWebBeanHelper.java:587)
at oracle.apps.fnd.framework.webui.OAWebBeanContainerHelper.processRequest(OAWebBeanContainerHelper.java:247)
at oracle.apps.fnd.framework.webui.OAPageLayoutHelper.processRequest(OAPageLayoutHelper.java:1136)
at oracle.apps.fnd.framework.webui.beans.layout.OAPageLayoutBean.processRequest(OAPageLayoutBean.java:1569)
at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processRequestChildren(OAWebBeanHelper.java:959)
at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processRequestChildren(OAWebBeanHelper.java:926)
at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processRequest(OAWebBeanHelper.java:646)
at oracle.apps.fnd.framework.webui.OAWebBeanContainerHelper.processRequest(OAWebBeanContainerHelper.java:247)
at oracle.apps.fnd.framework.webui.beans.form.OAFormBean.processRequest(OAFormBean.java:385)
at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processRequestChildren(OAWebBeanHelper.java:959)
at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processRequestChildren(OAWebBeanHelper.java:926)
at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processRequest(OAWebBeanHelper.java:646)
at oracle.apps.fnd.framework.webui.OAWebBeanContainerHelper.processRequest(OAWebBeanContainerHelper.java:247)
at oracle.apps.fnd.framework.webui.beans.OABodyBean.processRequest(OABodyBean.java:353)
at oracle.apps.fnd.framework.webui.OAPageBean.processRequest(OAPageBean.java:2360)
at oracle.apps.fnd.framework.webui.OAPageBean.preparePage(OAPageBean.java:1759)
at oracle.apps.fnd.framework.webui.OAPageBean.preparePage(OAPageBean.java:511)
at oracle.apps.fnd.framework.webui.OAPageBean.preparePage(OAPageBean.java:432)
at _oa__html._OA._jspService(_OA.java:84)
at oracle.jsp.runtime.HttpJsp.service(HttpJsp.java:119)
at oracle.jsp.app.JspApplication.dispatchRequest(JspApplication.java:417)
at oracle.jsp.JspServlet.doDispatch(JspServlet.java:267)
at oracle.jsp.JspServlet.internalService(JspServlet.java:186)
at oracle.jsp.JspServlet.service(JspServlet.java:156)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:58smilies/cool.gif
at oracle.jsp.provider.Jsp20RequestDispatcher.forward(Jsp20RequestDispatcher.java:162)
at oracle.jsp.runtime.OraclePageContext.forward(OraclePageContext.java:187)
at _oa__html._OA._jspService(_OA.java:94)
at oracle.jsp.runtime.HttpJsp.service(HttpJsp.java:119)
at oracle.jsp.app.JspApplication.dispatchRequest(JspApplication.java:417)
at oracle.jsp.JspServlet.doDispatch(JspServlet.java:267)
at oracle.jsp.JspServlet.internalService(JspServlet.java:186)
at oracle.jsp.JspServlet.service(JspServlet.java:156)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:58smilies/cool.gif
at org.apache.jserv.JServConnection.processRequest(JServConnection.java:456)
at org.apache.jserv.JServConnection.run(JServConnection.java:294)
at java.lang.Thread.run(Thread.java:534)



Thanks and Regards
Arunachalam.Chidambaram.
report abuse
vote down
vote up
Votes: +0
error stack - continues
written by Arunachalam , July 12, 2010
Dear Anil,

## Detail 0 ##
java.io.EOFException
at java.io.DataInputStream.readInt(DataInputStream.java:44smilies/cool.gif
at oracle.jbo.Key.parseBytes(Key.java:436)
at oracle.jbo.Key.(Key.java:176)
at oracle.jbo.server.Serializer.activateEntity(Serializer.java:565)
at oracle.jbo.server.Serializer.activateTxn(Serializer.java:512)
at oracle.jbo.server.Serializer.activate(Serializer.java:256)
at oracle.jbo.server.DOMSerializer.activateRootAMFromDOM(DOMSerializer.java:49)
at oracle.apps.per.common.server.PerTransactionRootAMImpl.activatePerTxn(PerTransactionRootAMImpl.java:750)
at oracle.apps.per.common.server.PerTransactionRootAMImpl.initTransaction(PerTransactionRootAMImpl.java:704)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at oracle.apps.fnd.framework.server.OAUtility.invokeMethod(OAUtility.java:190)
at oracle.apps.fnd.framework.server.OAUtility.invokeMethod(OAUtility.java:153)
at oracle.apps.fnd.framework.server.OAApplicationModuleImpl.invokeMethod(OAApplicationModuleImpl.java:750)
at oracle.apps.per.common.webui.PerTransactionTopCOImpl.initTransaction(PerTransactionTopCOImpl.java:346)
at oracle.apps.per.common.webui.PerTransactionTopCOImpl.init(PerTransactionTopCOImpl.java:226)
at oracle.apps.per.common.webui.PerTransactionTopCOImpl.processRequest(PerTransactionTopCOImpl.java:279)
at oracle.apps.per.selfservice.arch.webui.PerOAControllerImpl.processRequest(PerOAControllerImpl.java:530)
at oracle.apps.per.wpm.objectives.webui.ObjectivesPageCO.processRequest(ObjectivesPageCO.java:69)
at oracle.apps.per.wpm.objectives.webui.SetObjectivesPageCO.processRequest(SetObjectivesPageCO.java:60)
at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processRequest(OAWebBeanHelper.java:587)
at oracle.apps.fnd.framework.webui.OAWebBeanContainerHelper.processRequest(OAWebBeanContainerHelper.java:247)
at oracle.apps.fnd.framework.webui.OAPageLayoutHelper.processRequest(OAPageLayoutHelper.java:1136)
at oracle.apps.fnd.framework.webui.beans.layout.OAPageLayoutBean.processRequest(OAPageLayoutBean.java:1569)
at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processRequestChildren(OAWebBeanHelper.java:959)
at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processRequestChildren(OAWebBeanHelper.java:926)
at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processRequest(OAWebBeanHelper.java:646)
at oracle.apps.fnd.framework.webui.OAWebBeanContainerHelper.processRequest(OAWebBeanContainerHelper.java:247)
at oracle.apps.fnd.framework.webui.beans.form.OAFormBean.processRequest(OAFormBean.java:385)
at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processRequestChildren(OAWebBeanHelper.java:959)
at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processRequestChildren(OAWebBeanHelper.java:926)
at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processRequest(OAWebBeanHelper.java:646)
at oracle.apps.fnd.framework.webui.OAWebBeanContainerHelper.processRequest(OAWebBeanContainerHelper.java:247)
at oracle.apps.fnd.framework.webui.beans.OABodyBean.processRequest(OABodyBean.java:353)
at oracle.apps.fnd.framework.webui.OAPageBean.processRequest(OAPageBean.java:2360)
at oracle.apps.fnd.framework.webui.OAPageBean.preparePage(OAPageBean.java:1759)
at oracle.apps.fnd.framework.webui.OAPageBean.preparePage(OAPageBean.java:511)
at oracle.apps.fnd.framework.webui.OAPageBean.preparePage(OAPageBean.java:432)

Thanks and Regards
Arunachalam.Chidambaram
report abuse
vote down
vote up
Votes: +0
error stack continues
written by Arunachalam , July 12, 2010
Dear anil,

continues.

at _oa__html._OA._jspService(_OA.java:84)
at oracle.jsp.runtime.HttpJsp.service(HttpJsp.java:119)
at oracle.jsp.app.JspApplication.dispatchRequest(JspApplication.java:417)
at oracle.jsp.JspServlet.doDispatch(JspServlet.java:267)
at oracle.jsp.JspServlet.internalService(JspServlet.java:186)
at oracle.jsp.JspServlet.service(JspServlet.java:156)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:58smilies/cool.gif
at oracle.jsp.provider.Jsp20RequestDispatcher.forward(Jsp20RequestDispatcher.java:162)
at oracle.jsp.runtime.OraclePageContext.forward(OraclePageContext.java:187)
at _oa__html._OA._jspService(_OA.java:94)
at oracle.jsp.runtime.HttpJsp.service(HttpJsp.java:119)
at oracle.jsp.app.JspApplication.dispatchRequest(JspApplication.java:417)
at oracle.jsp.JspServlet.doDispatch(JspServlet.java:267)
at oracle.jsp.JspServlet.internalService(JspServlet.java:186)
at oracle.jsp.JspServlet.service(JspServlet.java:156)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:58smilies/cool.gif
at org.apache.jserv.JServConnection.processRequest(JServConnection.java:456)
at org.apache.jserv.JServConnection.run(JServConnection.java:294)
at java.lang.Thread.run(Thread.java:534)
java.io.EOFException
at java.io.DataInputStream.readInt(DataInputStream.java:44smilies/cool.gif
at oracle.jbo.Key.parseBytes(Key.java:436)
at oracle.jbo.Key.(Key.java:176)
at oracle.jbo.server.Serializer.activateEntity(Serializer.java:565)
at oracle.jbo.server.Serializer.activateTxn(Serializer.java:512)
at oracle.jbo.server.Serializer.activate(Serializer.java:256)
at oracle.jbo.server.DOMSerializer.activateRootAMFromDOM(DOMSerializer.java:49)
at oracle.apps.per.common.server.PerTransactionRootAMImpl.activatePerTxn(PerTransactionRootAMImpl.java:750)
at oracle.apps.per.common.server.PerTransactionRootAMImpl.initTransaction(PerTransactionRootAMImpl.java:704)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at oracle.apps.fnd.framework.server.OAUtility.invokeMethod(OAUtility.java:190)
at oracle.apps.fnd.framework.server.OAUtility.invokeMethod(OAUtility.java:153)
at oracle.apps.fnd.framework.server.OAApplicationModuleImpl.invokeMethod(OAApplicationModuleImpl.java:750)
at oracle.apps.per.common.webui.PerTransactionTopCOImpl.initTransaction(PerTransactionTopCOImpl.java:346)
at oracle.apps.per.common.webui.PerTransactionTopCOImpl.init(PerTransactionTopCOImpl.java:226)
at oracle.apps.per.common.webui.PerTransactionTopCOImpl.processRequest(PerTransactionTopCOImpl.java:279)
at oracle.apps.per.selfservice.arch.webui.PerOAControllerImpl.processRequest(PerOAControllerImpl.java:530)
at oracle.apps.per.wpm.objectives.webui.ObjectivesPageCO.processRequest(ObjectivesPageCO.java:69)
at oracle.apps.per.wpm.objectives.webui.SetObjectivesPageCO.processRequest(SetObjectivesPageCO.java:60)
at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processRequest(OAWebBeanHelper.java:587)
at oracle.apps.fnd.framework.webui.OAWebBeanContainerHelper.processRequest(OAWebBeanContainerHelper.java:247)
at oracle.apps.fnd.framework.webui.OAPageLayoutHelper.processRequest(OAPageLayoutHelper.java:1136)
at oracle.apps.fnd.framework.webui.beans.layout.OAPageLayoutBean.processRequest(OAPageLayoutBean.java:1569)
at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processRequestChildren(OAWebBeanHelper.java:959)
at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processRequestChildren(OAWebBeanHelper.java:926)

Thanks and Regards
report abuse
vote down
vote up
Votes: +0
Error stack - final page
written by Arunachalam , July 12, 2010
Dear Anil,

The final page of error stack.

at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processRequest(OAWebBeanHelper.java:646)
at oracle.apps.fnd.framework.webui.OAWebBeanContainerHelper.processRequest(OAWebBeanContainerHelper.java:247)
at oracle.apps.fnd.framework.webui.beans.form.OAFormBean.processRequest(OAFormBean.java:385)
at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processRequestChildren(OAWebBeanHelper.java:959)
at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processRequestChildren(OAWebBeanHelper.java:926)
at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processRequest(OAWebBeanHelper.java:646)
at oracle.apps.fnd.framework.webui.OAWebBeanContainerHelper.processRequest(OAWebBeanContainerHelper.java:247)
at oracle.apps.fnd.framework.webui.beans.OABodyBean.processRequest(OABodyBean.java:353)
at oracle.apps.fnd.framework.webui.OAPageBean.processRequest(OAPageBean.java:2360)
at oracle.apps.fnd.framework.webui.OAPageBean.preparePage(OAPageBean.java:1759)
at oracle.apps.fnd.framework.webui.OAPageBean.preparePage(OAPageBean.java:511)
at oracle.apps.fnd.framework.webui.OAPageBean.preparePage(OAPageBean.java:432)
at _oa__html._OA._jspService(_OA.java:84)
at oracle.jsp.runtime.HttpJsp.service(HttpJsp.java:119)
at oracle.jsp.app.JspApplication.dispatchRequest(JspApplication.java:417)
at oracle.jsp.JspServlet.doDispatch(JspServlet.java:267)
at oracle.jsp.JspServlet.internalService(JspServlet.java:186)
at oracle.jsp.JspServlet.service(JspServlet.java:156)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:58smilies/cool.gif
at oracle.jsp.provider.Jsp20RequestDispatcher.forward(Jsp20RequestDispatcher.java:162)
at oracle.jsp.runtime.OraclePageContext.forward(OraclePageContext.java:187)
at _oa__html._OA._jspService(_OA.java:94)
at oracle.jsp.runtime.HttpJsp.service(HttpJsp.java:119)
at oracle.jsp.app.JspApplication.dispatchRequest(JspApplication.java:417)
at oracle.jsp.JspServlet.doDispatch(JspServlet.java:267)
at oracle.jsp.JspServlet.internalService(JspServlet.java:186)
at oracle.jsp.JspServlet.service(JspServlet.java:156)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:58smilies/cool.gif
at org.apache.jserv.JServConnection.processRequest(JServConnection.java:456)
at org.apache.jserv.JServConnection.run(JServConnection.java:294)
at java.lang.Thread.run(Thread.java:534)

Thanks and Regards
Arunachalam.Chidambaram
report abuse
vote down
vote up
Votes: +0
...
written by Anil Passi- , July 12, 2010
Hi Arunachalam

Ok, I got your requirement and I can see what you are doing.

Can you compare the XML that gets generated by standard application against your XML?
Your error is being generated from which means a string exists where a number was meant to be within the data.
at java.io.DataInputStream.readInt(DataInputStream.java:44

A comparison of standard transaction_document versus your XML will give you the insight of why your XML is not getting parsed

Alternately, consider the option of populating per_objectives via API, populate some attribute column to capture whether it is approved or not. Then using row level security, hide that record from the system unless approved. The Row level security however should show unapproved records from objective setting set objective screen. However the process that converts scorecard objectives into appraisal objectives must not see the objective records that are unapproved. This will need a lot of regression testing though. Therefore your first option should be to ensure that XML document created via your custom processes is well formed as per
Thanks,
Anil Passi

report abuse
vote down
vote up
Votes: +0
Problem - Resolved - externalizing Talent management - Objective Creation/ Updation using webservices by calling - HR_TRANSACTIONS_API
written by Arunachalam , July 14, 2010
Dear Anil,

Finally after a long fight the problem resolved.

The funny part is (for me it’s funny, but actually idea behind this not known); the CDATA value generated by the system is 20 characters long
For e.g. . Wherein when I generate it through API it was 15 characters long (of course running sequence as suffix).

So after suspecting all other attribute values, finally my friend suggest to try the CDATA value with similarly length, and once we do so; the error disappears; now it shows the data in Oracle UI properly.

Note: I am still not convenience on this; your thought on this will be of great help.

Thanks and Regards
Arunachalam.Chidambaram

report abuse
vote down
vote up
Votes: +0
externalizing Talent management - Objective Creation/ Updation using webservices by calling - HR_TRANSACTIONS_API - part 2
written by Arunachalam , October 15, 2010
Dear Anil,

Yes, the first cycle of Objective creation is done, but now we are facing some integrity issue once the (Objective) score card get reset.

As I explained above, we done with our API development to persist XML in TRANSACTION_DOCUMENT column of HR_API_TRANSACTIONS table and it goes well till it get approved (and it goes to PER_OBJECTIVES once approved by Manager).

But, for mid year review purpose if they reset the score card (in Plan setup), then the CDATA pattern which is being generated by our API is not working with Application module.

To elaborate where I struck, pls find below:

if we create/ update/ delete Objectives using API; it works fine, even through Application OAF page, we could see the change and it allows to change the values from Application screen (and the XML Document is perfect in Transaction_Doument column).

But once we reset scorecard, the change we do API is not working properly on the consistency side (as required by OAF page).

In short what I understand is the CDATA sequence being generated by the OAF page is being stored in one more table (other than HR_API_TRANSACTION_STEPS column OBJECT_IDENTIFIER and HR_API_TRANSACTIONS - part of XML CDATA tag).

How I am telling this is, when I do the entire flow through Application OAF page, the OBJECT_IDENTIFIER value generated by OAF for the Objective_id get retained back to HR_API_TRANSACTION_STEPS ; after doing change any of the previous approved objective; I mean after scorecard reset.

But we don't know where else this OBJECT_IDENTIFIER value being stored?
Because once you approve the objectives; the records from HR_API_TRANSACTIONS and HR_API_TRANSACTION_STEPS are being removed.
So on reset scorecard time, any amendment to the objective, retains the OBJECT_IDENTIFIER from some table.

Please help us on this to find the table where they store the OBJECT_IDENTIFIER value.

Thanks and Regards
Arunachalam.
Dubai

report abuse
vote down
vote up
Votes: +0
Part-2 solution found - externalizing Talent management - Objective Creation/ Updation using webservices by calling - HR_TRANSACTIONS_API
written by Arunachalam , October 16, 2010
Dear Anil,

Yes after a long struggle, we find the solution, in short the OBJECT_IDENTIFIER is not being stored elseware except (Transacation and transaction steps - XML),
but its basically being generated through below logic. i.e.

prefix: 000100000004 || RAWTOHEX(objective_id)

for example 000100000004+ RAWTOHEX(59113) = 000100000004C3065C0E

So what I did I used the same logic to my CDATA structure, then all goes fine


Thanks and Regards
Arunachalam.Chidambaram
report abuse
vote down
vote up
Votes: +0
Thanks Arunachalam
written by Anil Passi- , October 17, 2010
Thanks a ton Arunachalam for sharing this information


report abuse
vote down
vote up
Votes: +0
data is not deleted in transaction table hr_api_transactions when transaction has been moved to base table per_objectives table
written by Ramkumar_nov19 , August 18, 2011
Hi
i'm creating the objectives using hr _objectives_api and when the status has been changed to published in per_scorecards table.the data in transaction table is not deleted.

regards
ram
report abuse
vote down
vote up
Votes: +0
data is not deleted in transaction table hr_api_transactions when transaction has been moved to base table per_objectives table
written by Arunachalam , August 18, 2011
Dear Ram,

From my knowledge hr_objectives_api will move the data directly to per_objectives, pls check

Thanks
Arunachalam.C
report abuse
vote down
vote up
Votes: +0
Write comment
quote
bold
italicize
underline
strike
url
image
quote
quote
smile
wink
laugh
grin
angry
sad
shocked
cool
tongue
kiss
cry
smaller | bigger

security image
Write the displayed characters


busy
 

Search apps2fusion