API call to alter the flow (11g)
I am doing a POC to figure out if i can alter the flow of a bpm process instance programmatically using the API. I found the API methods to alter a flow by calling setTargetActivity(IActivityInfo targetActivity) on the IFlowChangeItem
However, mostly when we alter the flow, we will also need to set the data object values manually to reflect the instance state that would have been if the instance was in that state. But after sifting through the API methods here http://docs.oracle.com/cd/E23943_01/apirefs.1111/e25378/toc.htm , I couldn't find anything to do this.
Could anyone please help me with any pointers to do this ? [Googling didn't help]
thanks,
Jaseer
I was doing the same POC, I used queryTask to get a instance but when I tried to use grab it returns an error. I didn't find examples or documentation about how to use the API to implement this feature.
My code is:
cf = ProcessUtils.getServiceClientFactory(CLIENT_CONFIG);
ProcessUtils processUtils = new ProcessUtils(cf);
try {
ctx =
(IBPMContext)processUtils.getHwfServiceClient().getTaskQueryService().authenticate(null,
null,
null);
} catch (WorkflowException e) {
IBPMServiceClient bPMServiceClient = cf.getBPMServiceClient();
IInstanceManagementService instManSer = bPMServiceClient.getInstanceManagementService();
GrabInstanceRequest grab = new GrabInstanceRequest();
//id and name for acitivities in bpmn file
IFlowChangeItem change = FlowChangeItem.create(ActivityInfo.create("ABSTRACT_ACTIVITY3688569746588", "Cadastrar Briefing"), ActivityInfo.create("ABSTRACT_ACTIVITY3690017028690","Validar Briefing"));
IProcessInstance instance = null;
IInstanceQueryService query = bPMServiceClient.getInstanceQueryService();
try {
instance = query.getProcessInstance(ctx, "760001");
} catch (BPMException e) {
e.printStackTrace();
grab.setProcessInstance(instance);
change.setTargetActivity(ActivityInfo.create("ABSTRACT_ACTIVITY3690017028690","Validar Briefing"));
IGrabInstanceRequest igrab = grab;
ArrayList<IFlowChangeItem> list = new ArrayList<IFlowChangeItem>();
list.add(change);
igrab.setRequestedFlowChanges(list);
try {
instManSer.grabInstance(ctx, igrab);
} catch (BPMException e) {
e.printStackTrace();
The error is:
Exception in thread "main" java.lang.ClassCastException: cannot assign instance of oracle.bpm.services.instancemanagement.model.impl.alterflow.ActivityInfo to field oracle.bpm.services.instancemanagement.model.impl.alterflow.FlowChangeItem.sourceActivity of type oracle.bpm.services.instancemanagement.model.IOpenActivityInfo in instance of oracle.bpm.services.instancemanagement.model.impl.alterflow.FlowChangeItem
at weblogic.rjvm.ResponseImpl.unmarshalReturn(ResponseImpl.java:234)
at weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:348)
at weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:259)
at oracle.bpm.services.instancemanagement.ejb.InstanceManagementServiceBean_sqa2w0_IInstanceManagementServiceRemoteImpl_1036_WLStub.grabInstance(Unknown Source)
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:597)
at weblogic.ejb.container.internal.RemoteBusinessIntfProxy.invoke(RemoteBusinessIntfProxy.java:85)
at $Proxy15.grabInstance(Unknown Source)
at br.com.grupomult.bpm11g.services.grab.Grab.<init>(Grab.java:98)
at br.com.grupomult.bpm11g.services.grab.Grab.main(Grab.java:50)
Caused by: java.lang.ClassCastException: cannot assign instance of oracle.bpm.services.instancemanagement.model.impl.alterflow.ActivityInfo to field oracle.bpm.services.instancemanagement.model.impl.alterflow.FlowChangeItem.sourceActivity of type oracle.bpm.services.instancemanagement.model.IOpenActivityInfo in instance of oracle.bpm.services.instancemanagement.model.impl.alterflow.FlowChangeItem
at java.io.ObjectStreamClass$FieldReflector.setObjFieldValues(ObjectStreamClass.java:2039)
at java.io.ObjectStreamClass.setObjFieldValues(ObjectStreamClass.java:1212)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1952)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1870)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350)
at java.util.ArrayList.readObject(ArrayList.java:593)
at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1848)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1870)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350)
at weblogic.rjvm.MsgAbbrevInputStream.readObject(MsgAbbrevInputStream.java:599)
at weblogic.utils.io.ChunkedObjectInputStream.readObject(ChunkedObjectInputStream.java:204)
at oracle.bpm.services.instancemanagement.ejb.InstanceManagementServiceBean_sqa2w0_IInstanceManagementServiceRemoteImpl_WLSkel.invoke(Unknown Source)
at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:668)
at weblogic.rmi.cluster.ClusterableServerRef.invoke(ClusterableServerRef.java:230)
at weblogic.rmi.internal.wls.WLSExecuteRequest.run(WLSExecuteRequest.java:118)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:256)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:221)
I can't even find the IOpenActivityInfo in the path mentioned.
Anyone can help?
Jaseer, can you send your code?
Thanks.
Similar Messages
-
Performance issue on calling the API queryFolders to retrive the subfolders
Hi, We are using 10.3.0 collaboration server.When we make an API call to get the folders under a parent folder, the API is taking more than 2 minutes to return. When we did research, found out that the query collaboration server is executing taking time to return the results from the collaboration database. I am copying the query below. The performance issue coming when the number of sub folders is more than 1400. I did few experiments on this query. When I remove the sort clause, the query is running too fast. If i keep the sort clause and remove the sub query in select clause , query is running fast. But the combination is taking too much time i.e. 80 seconds. Please share your ideas on how to increase the performance of this API call. We are planning to upgrade to another version of collab but not sure whether it would fix the problem. Highly appreciated your valuable suggestions. Let me know if you need more information.
SELECT OBJ.OBJECTID, OBJ.TID, OBJ.CREATED, OBJ.MODIFIED, OBJ.NAME,
OBJ.DESCRIPTION, OBJ.OWNERID, OBJ.PROJECTID, OBJ.PARENTID,
OBJ.OWNERNAME, OBJ.PARENTPATH, OBJ.PARENTIDPATH, OBJ.DEPTH,
OBJ.MODERATED, OBJ.CRAWLERACCESSIBLE,(select DISTINCT(1) FROM
CSFOLDERS where(exists(select * from csFolders subFolders where
subFolders.parentID=OBJ.objectid))) as HASVISSUBFOLD FROM CSFOLDERS
OBJ WHERE EXISTS (SELECT * FROM CSROLEMEMBERSHIP RM,CSFOLDERSECURITY
OS,PLUMTREE.PTVGROUPMEMBERSHIP GRP WHERE OS.ACCESSLEVEL > 0 AND
GRP.USERID=:v0 AND GRP.GROUPID = RM.PTGROUPID AND RM.OBJECTID =
OS.ROLEID AND OS.OBJECTID = OBJ.OBJECTID) AND obj.TID = 3 AND
(obj.parentID=:v1) ORDER BY LOWER(obj.NAME) ASChi reddy,
before applying for all entries on mseg
1.sort t_mard by matnr werks and lgort
2. if not t_mard is initial.
select mblnr mjahr etc...
endif.
these are the main precautions u need to look into before you are using second select.
entires from bseg, mseg will consume lot of time.
so the best if only the fields u r showing are required then take it from the respective table like
ebeln ebelp from ekpo
like that .
so the alternative will be this but this will be the best option if u know only these fields are to be selected .
hope u r getting my point.
yeah swagatika also said correctly that u can go for indexing so the Retrieval is faster.
one more option is construct a view/structure and proceed .
regards,
TVK.
Message was edited by: Vikky -
Problem with ProductWS_ProductInsertOrUpdate_Input api call
Hi All,
There seems to be an issue with siebel's ProductWS_ProductInsertOrUpdate_Input api call on release 14 of CRM OnDemand.
The api call is failing if I am trying to update and insert the product records in a same call based on the IntegrationId.
The Siebel CRM on demand URL we used is:
https://secure-ausomxapa.crmondemand.com/Services/I ntegration
The sample soap request used is:
<?xml version="1.0" encoding="UTF-8" ?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/enve lope/" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:prod="urn:/crmondemand/xml/product" xmlns:ns="urn:crmondemand/ws/product/10/2004">
<soapenv:Body>
<ns:ProductWS_ProductInsertOrUpdate_Input>
<prod:ListOfProduct>
<prod:Product>
<prod:IntegrationId>AAPA-KYTAR</prod:IntegrationId >
<prod:Description>desc nk_test3</prod:Description>
<prod:Orderable>Y</prod:Orderable>
</prod:Product>
<prod:Product>
<prod:ExternalSystemId>nk_test4</prod:ExternalSyst emId>
<prod:PartNumber>nk_test4</prod:PartNumber>
<prod:Name>nk_test4</prod:Name>
<prod:Description>desc nk_test4</prod:Description>
<prod:Orderable>Y</prod:Orderable>
</prod:Product>
</prod:ListOfProduct>
</ns:ProductWS_ProductInsertOrUpdate_Input>
</soapenv:Body>
</soapenv:Envelope>
The response error is:
<?xml version="1.0" encoding="UTF-8" ?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/env elope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instanc e" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SOAP-ENV:Body>
<SOAP-ENV:Fault>
<faultcode>SOAP-ENV:Server</faultcode>
<faultstring>Multiple matches found for instance of integration component 'Internal Product' using search specification '' in the business component 'Internal Product', based on user key 'Product User Key: 2'.(SBL-EAI-04390)</faultstring>
<detail>
<siebelf:errorstack xmlns:siebelf="http://www.siebel.com/ws/fault">
<siebelf:error>
<siebelf:errorsymbol>IDS_ERR_EAI_SA_MULTIPLE_MATCH </siebelf:errorsymbol>
<siebelf:errormsg>Multiple matches found for instance of integration component 'Internal Product' using search specification '' in the business component 'Internal Product', based on user key 'Product User Key: 2'.(SBL-EAI-04390)</siebelf:errormsg>
</siebelf:error>
</siebelf:errorstack>
</detail>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Also the same soap request was passing when we are using old siebel crm on demand release 12 urls:
https://secure.crmondemand.com/Services/Integration or
https://siebel.crmondemand.com/Services/Integration
Also note that same API call works on release 14 if I perform all updates at one go and all inserts at one go.
So my doubt is:
1) Is there any change in handling of ProductWS_ProductInsertOrUpdate_Input api call for release 14 (or)
2) do we need to do some setup/configuration at siebel end?
Please help us in resolving this issue.
Thanks,
Nitesh KAlex,
Thanks for the reply. I can understand the same with the response error that there are multiple records with the same user key exists. But why the same error is not getting thrown if I submit the same SOAP request for those two products individually? I am able to submit multiple products which are new in one SOAP request and multiple products which needs to be updated(i.e i already have there ProductId and IntegrationId) in another SOAP request using the same InsertOrUpdate api call. But when I submit one product which is new(i.e. to insert) and one which already exists(i.e to update) in a single SOAP request, then its giving me that error.
One more strange thing is(as mentioned earlier) this same single SOAP request works in R12 of CRM OnDemand.
Anyways please find below how I tested my investigation:
I created two products in our BigMachines application "nk_11111_part" and "nk_22222_part" to integrate with siebel. Now I first generated SOAP request for nk_22222_part as below:
<soapenv:Envelope>
<soapenv:Body>
<ns:ProductWS_ProductInsertOrUpdate_Input>
<prod:ListOfProduct>
<prod:Product>
<prod:ExternalSystemId>nk_22222_part</prod:ExternalSystemId>
<prod:Name>nk_22222_part</prod:Name>
<prod:PartNumber>nk_22222_part</prod:PartNumber>
<prod:Orderable>Y</prod:Orderable>
<prod:Description>desc nnk_22222_part</prod:Description>
<prod:DealerInvoicePrice>454</prod:DealerInvoicePrice>
</prod:Product>
</prod:ListOfProduct>
</ns:ProductWS_ProductInsertOrUpdate_Input>
</soapenv:Body>
</soapenv:Envelope>
Then I submitted the request and got ProductId and IntegratinId as "AAPA-LF3CR" in SOAP response. This we will store in our DB and use it for updating the same product for subsequent calls.
Then I generated SOAP request for both the products nk_11111_part(not integrated) and nk_22222_part(integrated product) as below:
<soapenv:Envelope>
<soapenv:Body>
<ns:ProductWS_ProductInsertOrUpdate_Input>
<prod:ListOfProduct>
<prod:Product>
<prod:ExternalSystemId>nk_11111_part</prod:ExternalSystemId>
<prod:Name>nk_11111_part</prod:Name>
<prod:PartNumber>nk_11111_part</prod:PartNumber>
<prod:Orderable>Y</prod:Orderable>
<prod:Description>desc nk_11111_part</prod:Description>
<prod:DealerInvoicePrice>324</prod:DealerInvoicePrice>
</prod:Product>
<prod:Product>
<prod:ProductId>AAPA-LF3CR</prod:ProductId>
<prod:IntegrationId>AAPA-LF3CR</prod:IntegrationId>
<prod:ExternalSystemId>nk_22222_part</prod:ExternalSystemId>
<prod:PartNumber>nk_22222_part</prod:PartNumber>
<prod:Orderable>Y</prod:Orderable>
<prod:Description>desc nk_22222_part</prod:Description>
<prod:DealerInvoicePrice>454</prod:DealerInvoicePrice>
</prod:Product>
</prod:ListOfProduct>
</ns:ProductWS_ProductInsertOrUpdate_Input>
</soapenv:Body>
</soapenv:Envelope>
Now when I submit this request I am getting the above mentioned error. Note that both the products are newly created products in our application. So only user key ExternalSystemId with "nk_22222_part" for our integrated product exists
in siebel. So logically the InsertOrUpdate api call should insert the first product "nk_11111_part" and update the
second product "nk_22222_part". As mentioned earlier, the same flow works in R12 of Siebel CRM OnDemand.
We are struck with this issue. Please help us and reply asap.
Thanks,
Nitesh K -
HTTP REST API call to CPSC 10.x from an external system
Hi,
I would like to know the below items.
Is it possible to connect with the CPSC 10.x from an external system via HTTP REST API call to process a request and complete a task?
Is it possible to create a new ticket / request in CPSC for a specific service via the HTTP REST API call?
One of the use case is to know how many requests are pending in a queue via a HTTP REST API call? How to pass a queue name in the HTTP REST API call to get the result? These kind of custom piece is not available in the integration guide.
Is there any specific REST API guide available which Cisco provides for the REST capability in CPSC?
Any help is highly appreciated!
Thanks.When a task is invoked from a service catalog request to an external system, the request remains open and the task is pending until the external system issues a call to complete the task. The API for completing the task is SOAP-based. Check out the Cisco Prime Service Catalog Integration Guide. Within the doc, go to the section about "Web Service Listener Adapter" for the WSDL.
You can order a service within Prime Service Catalog with a SOAP call, which is also documented in this same document. Starting with Prime Service Catalog 10.1, you will have a way to order a service via a REST API.
Existing REST APIs are also documented in the integration guide. -
GetByProducId API call doesn't work
Hi all,
I have a question about a DPS api call. In the previous API versions (v24 and lower) of when I did the following call:
var productId = $(this).data('productId'),
folio = adobeDPS.libraryService.folioMap.getByProductId(productId);
It returned the folio with the productId from the data attribute.
When I try it with the current version (v25) it returns null.
What am I doing wrong? Or what has changed?
Best regards,
MikeI'd suggest you comment back on the relevant section/topic at DPS Devnet http://www.adobe.com/devnet/digitalpublishingsuite.html
or contact Developer support with your Gold support contract information -
PART_1
==================================
Hi,
I'm working at third party system which by API communicate with BC and in short:
1) create an order with specified products for specific customer) etc. at BC account ofcourse (works fine)
2) Make the payment using one of the payment gateway (defined in BC Payment gateway section)
a) SecurePay, or (works fine)
b) Paypal Website Standard (problem)
I found a litttle problem in API call to make the payment using paypal website standard (to be presice in case of Paypal option actually the user should be moved to the paypal website so the system should generate some link i think which will have some data which identify payment for specific order). I tried to use the Order_PaymentProcess (https://worldsecuresystems.com/catalystwebservice/catalystcrmwebservice.asmx?op=Order_Paym entProcess)
call but it looks it can't be done?
Please note the payment with this call using credit card details cause successfully use the SecurePay Payment gateway. Is here anyway who know the trick how to force (and what parameter should be used) to
make the payment using Paypal Website Standard?
And Yes I tried to obtain some additional documentation from BC support but without success (They said they are working at the new version of it... about 2 years ago they said they probably will prepare more detailed documentation ).
==================================
PART_2
In case if there is no possible to use the API call to force using the Paypal Website Standard is there any workaround of this?
I mean is it possible to move the user to the paypal site but in post data set some value which can be handled directly by the BC after making the payment at paypal site, so the BC then could for specific order automatically register this operation after paypal send the successfull payment notification?
==================================
PART_3
The third part is the question how to force by API call BC to send the invoice to the customer after the order will be created (and before making the payment).
The invoice is actually created only when the Order_PaymentProcess call will be finished with success (and the option "emailInvoiceToCustomer" will be set to true).
Is there any way to do that?
==================================
When You will answer please set note of what part is that answer.
Thanks for advice!Dude, I don't know what you're saying. There's too much text and too much code, and the code is unformatted. When you post code, please use[code] and [/code] tags as described in Formatting tips on the message entry page. It makes it much easier to read.
However, based on the subject of your post, there's one thing I can say: If your key's state changes in a way that can affect the value of its hashcode, then you'll have to remove and re-add that key/value pair. Since the hashcode determines which subset the HashMap searches though to find your key, if your key doesn't have the same hashCode it has when you put it into the map, then the map will search the wrong bucket for your key.
If that doesn't help, please try to provide more concise, formatted code and a more concise explanation of the problem. -
API call for launching Sun Java System Application Server
Hi,
I want to use an API call to start the Sun Application server, so that the server runs in the same JVM as my java aplication.
Please advise me how to do this.
Thank you
KomalHere is sample code to start application server if you are using SJSAS Platform Edition 8.1 2005Q2 Update 2
http://docs.sun.com/app/docs/doc/819-2642/6n4tspp9t?a=view#beaps -
Api call for "browse pages" popup window?
Hi,
Is there a supported API call for rendering the "browse pages" popup window? The one that appears when you use the "go to page" link.
We used to call wwsbr_explorer.display but this call has changed in 10.1.4 to wwsbr_explorer_ui.display...
Thanks, Tonyclosed !
Please use the other thread. -
How to call Controller from a Flow Logic Page
Hii
I am trying to call a controller from a flow logic page all in the same application.
I have done this by calling CREATE_CONTROLLER from the flow logic Event .
This is working fine,but the flow logic page appears even when the Contoller gets called & the controller view gets loaded.
I want to Navigate to the Controllers View .I tried this using NAVIGATE->next_page( ).But this is not working
Regards
Ajitabh.Hi Ajitabh,
I don't think that is right to call a controller using the flow-logic programing-model. You have to use the MVC programing-model. There it is possible an right to work with controller.
In flow-logic you just have to use pages you create in your bsp-application. Then you can navigate with the code:
CASE event_id.
WHEN 'button1'. navigate->goto_page( 'page2.htm' ).
ENDCASE.
The code in your layout should be like this for a button:
<input type="submit" name="OnInputProcessing(button1)" value="to-page-2">
Maybe this can help you -
EBS Integration Approach - API call or Interface Tables
Hi,
I'm very new to EBS, but am looking from a data-centric perspective on which approach would be best suited for updating Service Contracts.
We have at any one time a peak of 5000 records that would need to be matched against an IB identifier and then if that is matched correctly, proceed to update EBS.
So my question is, given the medium level of volume and fact we're not doing "bulk loading" which would be the better approach? Seems to me the API call to extend the Service Contract would be best.
Thanks for taking a look!Hi;
All APIs are listed in Oracle Integration Repository
http://irep.oracle.com/index.html
API User Notes - HTML Format [ID 236937.1]
R12.0.[3-4] : Oracle Install Base Api / Open Interface Setup Test [ID 427566.1]
Oracle Trading Community Architecture API User Notes, June 2003 [ID 241320.1]
Technical Uses of Customer Interface and TCA-API [ID 269121.1]
Pelase also check below:
Api's in EBS
Re: Api's in EBS
http://sairamgoudmalla.blogspot.com/2009/05/script-to-find-oracle-apis-for-any.html
API
Fixed Asset API
List of API
Re: List of APIs
Oracle Common Application Components API Reference Guide
download.oracle.com/docs/cd/B25284_01/current/acrobat/jta115api.pdf
List of APIs and open interface R12
Re: List of APIs and open interface R12
Regard
Helios -
How to get the highlighted text range through Framemaker's API calls?
Hi all,
I'm new to the Framemaker API (7.x) and developing a plugin for Framemaker 7.x. I wanted to get the highlighted objects from the active mif document. Tried this code:
F_TextRangeT tr;
/* Get the current text selection. */
tr = F_ApiGetTextRange(FV_SessionId, docId, FP_TextSelection);
Here is how I tested it:
1. some text in the mif doc was highlighted.
2. I clicked the menu item "my_plugin", a framemaker dialog popped up, some test configuration was sent through the dialog.
3. The test configuration was read by my program correctly.
However, the debugger showed that the tr is null! When I changed the first step of the test into:
1. placed the mouse cursor at somewhere in the mif doc.
The plugin worked somehow, the line where the mouse cursor was placed got selected, although I did not highlight anything.
My question is: how to get a highlighted range though the Framemaker API call? I've been flipping through the FDK 7.0 Programmer's Reference but haven't found a solution yet. Any hint will be highly appreciated.
Best Regards,
Ellen N. ZhaoHere is some information from the FDK Programmer's guide page 115:
IMPORTANT: A valid text range can span multiple paragraphs, subcolumns, or text frames.
It cant span multiple flows, footnotes, table cells, or text lines.
It is possible for a document to have no text selection or insertion point at all. This can occur in
the following circumstances:
● One or more graphic objects in the document are selected
● One or more entire table cells in the document are selected
● There is no selection of any type in the document
So, I did select one or more entire table cells in the document in my first test. It's logical that the result was not like expected.
But selecting one or more entire table cells is a crucial requirement for my plugin, is there anyway to get things straight?
Simply put, I want to enable users to select one or more table cells in the document, and I want to get the object handles of the first cell and the last cell through Framemaker API calls. How?
Many thanks in advance!
Best Regards,
Ellen N. Zhao -
API call that will list the meetings of employees that are assigned to a manager
Hi,
What is the API call that will list the meetings of employees that are assigned to a manager? The manager will be logged in and when I use the API call:
http://[serverid]/api/xml?&action=report-my-meetings&principal-id=[##]
I always get the same results which is a list of the meetings for the manager. If put the id of the employee, I still get the managers meetings.
I have looked through all of the API documentation and cannot find which call I could make to get the results that I want. The documentation specifically says that report-my-meetings provides information about meetings that the logged in user is scheduled to attend. So how do I get the information for the managers employees?
What is needed is the Name, Duration, and Start Time of all meetings that the employee is enrolled in who is assigned to the manager that is logged in.
Thanks for any help with this!I posted this in the wrong forum and have moved it to the XML forum.
-
What are the SAP api calls...
Hi, I have a question about the SAP Portal framework. For example, if I created an edit page for editing portlets, is there an api call that I make to tell SAP portal that I am on edit mode so that portal will subsequently save the changes to perhaps an xml file? Maybe there is a edit_mode variable ?
Any suggestions or sample code is greatly appreciated!
Thanks so much!
Baggett.Hi Detlev, if you have some time, if possible, can you take a look at EP Content Development question: <b>"Where is admin config page ? ..."</b> Any help is very appreciated!
Thanks so much!
Baggett -
How do I alter the bytes of a Class file to add calls to the methods?
If i had the bytes of a class file, and I wanted to alter the bytes that constitute each method for the class so that it included a call to the security manager, how would i do it?
1. How would I know which bytes were the opening of a method?
2. how would I know what the name of the method is?
3. How would I create bytes for something like:
SecurityManager sm = System.getSecurityManager().checkPermission(thismeth, subject);
4. I assume that if by some miracle I can do the above, then all I have to do is call defineClass(...) in ClassLoader and send it the new bytes, right?
Thanks to all!OK, if it will help anyone get me the answers here, I found a class on the internet that can read a class file and tell you where in the bytes a method occurs and what its name is, and how long it is. What I need now is how to convert a call into the correct manner of bytes.
For example, so I could add the bytes that would do:
System.out.println("Added!");
The class that reads a class file:
/* Inspector.java by Mark D. LaDue */
/* June 24, 1997 */
/* Copyright (c) 1997 Mark D. LaDue
You may study, use, modify, and distribute this example for any purpose.
This example is provided WITHOUT WARRANTY either expressed or implied. */
/* This Java application analyzes the entries in the constant pool and locates
the code arrays in a Java class file. Each entry in the constant pool
yields the following information:
Index Tag Reference(s)/Value(s)
where "Index" is its position within the class file's constant pool,
"Tag" is the official tag number for that type of entry, and
"Reference(s)/Value(s)" contains the constant pool information
according to the entry's type. (See Lindholm and Yellin's "The Java
Virtual Machine Specification" for details.) For each code array in
the class file, its starting byte, its total length, and the name of
the method in which it occurs are given. Combining this information
with the information yielded by the humble "javap" utility gives one
sufficient information to hack the code arrays in Java class files. */
import java.io.*;
class Inspector {
public static void main(String[] argv) {
int fpointer = 8; // Where are we in the class file?
int cp_entries = 1; // How big is the constant pool?
int Code_entry = 1; // Where is the entry that denotes "Code"?
int num_interfaces = 0; // How many interfaces does it use?
int num_fields = 0; // How many fields are there?
int num_f_attributes = 0; // How many attributes does a field have?
int num_methods = 0; // How many methods are there?
int num_m_attributes = 0; // How many attributes does a method have?
int[] tags; // Tags for the constant pool entries
int[] read_ints1; // References for some constant pool entries
int[] read_ints2; // References for some constant pool entries
long[] read_longs; // Values for some constant pool entries
float[] read_floats; // Values for some constant pool entries
double[] read_doubles; // Values for some constant pool entries
StringBuffer[] read_strings; // Strings in some constant pool entries
int[] method_index;
long[] code_start;
long[] code_length;
// How on earth do I use this thing?
if (argv.length != 1) {
System.out.println("Try \"java Inspector class_file.class\"");
System.exit(1);
// Start by opening the file for reading
try {
RandomAccessFile victim = new RandomAccessFile(argv[0], "r");
// Skip the magic number and versions and start looking at the class file
victim.seek(fpointer);
// Determine how many entries there are in the constant pool
cp_entries = victim.readUnsignedShort();
fpointer += 2;
// Set up the arrays of useful information about the constant pool entries
tags = new int[cp_entries];
read_ints1 = new int[cp_entries];
read_ints2 = new int[cp_entries];
read_longs = new long[cp_entries];
read_floats = new float[cp_entries];
read_doubles = new double[cp_entries];
read_strings = new StringBuffer[cp_entries];
//Initialize these arrays
for (int cnt = 0; cnt < cp_entries; cnt++) {
tags[cnt] = -1;
read_ints1[cnt] = -1;
read_ints2[cnt] = -1;
read_longs[cnt] = -1;
read_floats[cnt] = -1;
read_doubles[cnt] = -1;
read_strings[cnt] = new StringBuffer();
// Look at each entry in the constant pool and save the information in it
for (int i = 1; i < cp_entries; i++) {
tags[i] = victim.readUnsignedByte();
fpointer++;
int skipper = 0;
int start = 0;
int test_int = 0;
switch (tags) {
case 3: read_ints1[i] = victim.readInt();
fpointer += 4;
break;
case 4: read_floats[i] = victim.readFloat();
fpointer += 4;
break;
case 5: read_longs[i] = victim.readLong();
fpointer += 8;
i++;
break;
case 6: read_doubles[i] = victim.readDouble();
fpointer += 8;
i++;
break;
case 7:
case 8: read_ints1[i] = victim.readUnsignedShort();
fpointer += 2;
break;
case 9:
case 10:
case 11:
case 12: read_ints1[i] = victim.readUnsignedShort();
fpointer += 2;
victim.seek(fpointer);
read_ints2[i] = victim.readUnsignedShort();
fpointer += 2;
break;
// This is the critical case - determine an entry in the constant pool where
// the string "Code" is found so we can later identify the code attributes
// for the class's methods
case 1: skipper = victim.readUnsignedShort();
start = fpointer;
fpointer += 2;
victim.seek(fpointer);
for (int cnt = 0; cnt < skipper; cnt++) {
int next = victim.readUnsignedByte();
switch (next) {
case 9: read_strings[i].append("\\" + "t");
break;
case 10: read_strings[i].append("\\" + "n");
break;
case 11: read_strings[i].append("\\" + "v");
break;
case 13: read_strings[i].append("\\" + "r");
break;
default: read_strings[i].append((char)next);
break;
victim.seek(++fpointer);
victim.seek(start);
if (skipper == 4) {
fpointer = start + 2;
victim.seek(fpointer);
test_int = victim.readInt();
if (test_int == 1131373669) {Code_entry = i;}
fpointer = fpointer + skipper;
else {fpointer = start + skipper + 2;}
break;
victim.seek(fpointer);
// Skip ahead and see how many interfaces the class implements
fpointer += 6;
victim.seek(fpointer);
num_interfaces = victim.readUnsignedShort();
// Bypass the interface information
fpointer = fpointer + 2*(num_interfaces) + 2;
victim.seek(fpointer);
// Determine the number of fields
num_fields = victim.readUnsignedShort();
// Bypass the field information
fpointer += 2;
victim.seek(fpointer);
for (int j=0; j<num_fields; j++) {
fpointer += 6;
victim.seek(fpointer);
num_f_attributes = victim.readUnsignedShort();
fpointer = fpointer + 8*(num_f_attributes) + 2;
victim.seek(fpointer);
// Determine the number of methods
num_methods = victim.readUnsignedShort();
fpointer += 2;
// Set up the arrays of information about the class's methods
method_index = new int[num_methods];
code_start = new long[num_methods];
code_length = new long[num_methods];
//Initialize these arrays
for (int cnt = 0; cnt < num_methods; cnt++) {
method_index[cnt] = -1;
code_start[cnt] = -1;
code_length[cnt] = -1;
// For each method determine the index of its name and locate its code array
for (int k=0; k<num_methods; k++) {
fpointer += 2;
victim.seek(fpointer);
method_index[k] = victim.readUnsignedShort();
fpointer += 4;
victim.seek(fpointer);
// Determine the number of attributes for the method
num_m_attributes = victim.readUnsignedShort();
fpointer += 2;
// Test each attribute to see if it's code
for (int m=0; m<num_m_attributes; m++) {
int Code_test = victim.readUnsignedShort();
fpointer += 2;
// If it is, record the location and length of the code array
if (Code_test == Code_entry){
int att_length = victim.readInt();
int next_method = fpointer + att_length + 4;
fpointer += 8;
victim.seek(fpointer);
code_length[k] = victim.readInt();
code_start[k] = fpointer + 5;
fpointer = next_method;
victim.seek(fpointer);
// Otherwise just skip it and go on to the next method
else {
fpointer = fpointer + victim.readInt() + 4;
victim.seek(fpointer);
// Print the information about the Constant Pool
System.out.println("There are " + (cp_entries - 1) + " + 1 entries in the Constant Pool:\n");
System.out.println("Index\t" + "Tag\t" + "Reference(s)/Value(s)\t");
System.out.println("-----\t" + "---\t" + "---------------------\t");
for (int i = 0; i < cp_entries; i++) {
switch (tags[i]) {
case 1: System.out.println(i + "\t" + tags[i] + "\t" + read_strings[i].toString());
break;
case 3: System.out.println(i + "\t" + tags[i] + "\t" + read_ints1[i]);
break;
case 4: System.out.println(i + "\t" + tags[i] + "\t" + read_floats[i]);
break;
case 5: System.out.println(i + "\t" + tags[i] + "\t" + read_longs[i]);
break;
case 6: System.out.println(i + "\t" + tags[i] + "\t" + read_doubles[i]);
break;
case 7:
case 8: System.out.println(i + "\t" + tags[i] + "\t" + read_ints1[i]);
break;
case 9:
case 10:
case 11:
case 12: System.out.println(i + "\t" + tags[i] + "\t" + read_ints1[i] + " " + read_ints2[i]);
break;
System.out.println();
// Print the information about the methods
System.out.println("There are " + num_methods + " methods:\n");
for (int j = 0; j < num_methods; j++) {
System.out.println("Code array in method " + read_strings[method_index[j]].toString() + " of length " + code_length[j] + " starting at byte " + code_start[j] + ".");
System.out.println();
// All the changes are made, so close the file and move along
victim.close();
} catch (IOException ioe) {} -
Information on the flow of a backing map put() call?
Hi,
I've been trying to find information on the flow of a backing map put() call. Can you explain how/when/if the put() is backed up in a distributed cache? e.g. is the backup copy updated during the put call as in the case of a normal put through the distributed service?
Thanks,
AndyBigAndy wrote:
Hi,
I've been trying to find information on the flow of a backing map put() call. Can you explain how/when/if the put() is backed up in a distributed cache? If you do a direct backing map put(), the put() call does not wait for the backup to happen.
When exactly that backup happens depends on which Coherence version you use.
For certain later Coherence version (I believe starting with 3.6.0p4) if you did that backing map put from within a MapTrigger.process() or EntryProcessor.process/processAll method (in which case, I believe, it is backed up together with changes done within the EntryProcessor/MapTrigger), or not.
For earlier versions, a backing map put from an EntryProcessor or MapTrigger is going to be backed up in a backup message which is sent earlier than the backup message for the entry-processor change or whatever change triggered the map-trigger.
For a backing map put not done from an entry-processor or map trigger, first of all don't do such a thing, as it can not be guaranteed that the partition is local when the backing map put is carried out. Second of all, it is going to be backed up asynchronously and there is no other operation to compare to so nothing more needs to be said about this case...
e.g. is the backup copy updated during the put call as in the case of a normal put through the distributed service? No, it is going to happen asynchronously, and very probably later than the backing map put() returns. See above
Best regards,
Robert
Maybe you are looking for
-
I have been running 5.0 great for a while now, but today I tried downloading and running FF 3.6. As it was opening it stopped responding, but then I tried to force quit but then it worked and loaded up the pages I had open on 5.0 when I closed it. I
-
Jabber server New alert message
I have been using a jabber server to access my MSN account and it has worked pretty good for several months. only issues, is sometimes it shuts off with no warning or once a got an alert message in another language. when i replied in english, there w
-
Need General Information about VDS
Hi, In our evaluation for different VDS, I require the following information. 1.Can we use hyphens in schema names? 2.Is it possible to map the VDS to any arbitrary position in the LDAP tree? 3.Will the VDS reflect the updates done by an LDAP client
-
Error trying to generate addmrpt (ADDM Report) on Oracle 10.1.0.4
Hello, When I launch $ORACLE_HOME/rdbms/admin/addmrpt.sql on my Fedora 3 Oracle 10g connected using sys as sysdba (or system), I get the following error : Specify the Begin and End Snapshot Ids ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Entrez une valeur
-
Item catagory 06000 not allowed in accounting transaction 0200/0001
Hi Guru's, My client wants to sell Raw Material & pass the entry in the system but now system gives an error message Item catagory 06000 not allowed in accounting transaction 0200/0001 Document spliting is activated in our company. whether to use rev