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) ASC

    hi 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 K

    Alex,
    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,
    Mike

    I'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

  • Making an order payment using SecurePay and Paypal Standard gateway by API call-Order_PaymentProcess

    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
    Komal

    Here 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, Tony

    closed !
    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. Zhao

    Here 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,
    Andy

    BigAndy 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