ResultSet updateRow() problem

The RDBMS I am working with is:
Apache Derby version = 10.1.2.1
I cannot seem to figure out why this ResultSet update is not working.
I create the ResultSet with the following:
Statement stmt = conn.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_UPDATABLE, ResultSet.HOLD_CURSORS_OVER_COMMIT);The query that I execute to return the result set contains the primary key, FROM contains only one table, and the query contains no JOINS or UNIONS.
So then I call next()
Update all the columns that I am interested in updating, up to this point everything is fine, I can get the column that I updated out, and the values are the updated ones.
When I call updateRow(), I get: Invalid cursor state - no current row
But there is a current row, I am updating columns in it and those updates are taking place.
Any help is appreciated.
Thanks

yes, it returns true.
and it is the row that I am interested in. If
immediately after the next() I get one of the
columns, it is the correct value, then I set it using
updateXXX, then get it out again it is the updated
value. All as I would expect it to work.
But on the call to updateRow() - Invalid cursor state
- no current row.Then I would suspect that the database driver you're using doesn't support updateable resultsets (?)
You do realize that not all databases support that, right?
Although it would seem that you should get a different error message in that case, hence the (?) above.

Similar Messages

  • Java SP - ResultSet.updateRow causes 100x CPU consumption

    Oracle 11 Enterprise on Windows, with an out-of-the-box installation.
    I select from a table. No where clause. No order by. If I use ResultSet.updateRow to change any column, the CPU consumption of oracle.exe jumps 100x. Here is the code.
    Connection con = DriverManager.getConnection("jdbc:default:connection");
    Statement stmt = con.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_UPDATABLE);
    ResultSet rs = stmt.executeQuery("select cola,colb from tab");
    while (rs.next()) {
    rs.updateString(1, "qwerd"); // comment out to save 99% of your CPU*
    rs.updateRow();
    rs.close();
    stmt.close();
    con.commit();
    For my test case, against 10,000 rows, removing that one line changes the CPU consumption from roughly 7 CPU seconds to 0.07 CPU seconds. I do mean CPU time - not elapsed time. The CPU measurement come from v$sesstat.value. Task manager confirms oracle.exe using 100% of a cpu for the duration of the call.
    I know that this example can be replaced with a single update statement. It is a gross simplification of a much larger proc, to replicate the problem.
    Help?

    Hi. For each row (when really updated), the DBMS is probably having to re-iterate
    through the table in the same unqualified way your query does, to position itself
    to the row you want to update. This whole thing is extremely inefficient, and I
    understand that you've reduced the issue to the simple example, but this does
    expose the critical fault of the algorithm. It breaks the number-one performance+
    rule for DBMS applications+: Don't move the data. Don't bring whole swaths of
    raw rows one-by-one to the client, just to find what you want to modify. Do the
    work where the data is, in the DBMS, using stored procedures. Build your saw mills
    where the trees are.
    Joe Weinstein

  • ResultSet updateRow ,insertRow ,deleteRow APIs on table with no PRIMARY KEY

    Hi,
    When I use ResultSet.insertRow , updateRow ,deleteRow API's on a table which contais no primary key column I find the following Exception ,
    java.sql.SQLException: Operation invalid. No primary key for the table
    at com.tandem.sqlmx.Messages.createSQLException(Messages.java:69)
    at com.tandem.sqlmx.SQLMXResultSet.getKeyColumns(SQLMXResultSet.java:3501)
    at com.tandem.sqlmx.SQLMXResultSet.prepareInsertStmt(SQLMXResultSet.java:3652)
    at com.tandem.sqlmx.SQLMXResultSet.insertRow(SQLMXResultSet.java:2073)
    at testdateupdate.main(testdateupdate.java:33)
    It looks like the table needs to have a primary key column to update or insert or delete rows using the ResultSret APIs.
    I use a proprietary JDBC driver. I find the Explanation for this behavior like this ,
    JDBC allows update stmts on tables w/out a primary key defined if the stmt is issued by the application. For updateable ResultSets, a primary key restriction is required to avoid updating more rows than desired.I dont understand this explanation and also I dont find this behavior is some other JDBC drivers that I tried with.
    Some one Please Clarify the same.
    Thanks in Advance.
    Thanks and Regards,
    Jay

    Hi,
    in simple words, when a table does not have primary key you can send update and delete on it only by using a Statement object. When using ResultSet.updateRow or ResultSet.deleteRow the jdbc looks for the primary key on the metadata in order to send the correct where clause to the rdbms. I think that this could maybe work with Oracle DBMS, which has a unique id (ROWID) for each record.
    Kiros

  • Jdbc ResultSet.next() problem

    this function is part of a class the extends AbstractTableModel
    the line of code that is causing all the problems is right below lines that are indented all the way to the right and are in all caps
    public void setAResultSet(ResultSet results)
    try
    ResultSetMetaData metadata =
    results.getMetaData();
    int columns = metadata.getColumnCount();
    //now we know how many columns there are, so
    //initialize the String array
    columnNames = new String[columns];
    //get the column names
    for(int i = 0; i < columns; i++)
    //remember - columns start with the indice at 1
    columnNames[i] = metadata.getColumnLabel(i+1);
    //get all the rows
    dataRows = new Vector();
    //will store the whole row of data
    String[] oneRow;
    while(results.next());
    //re-allocate memory each time, b/c its a whole
    //new row of data
    oneRow = new String[columns];
    //get the data in the current row, from every
    //column
    for(int i = 0; i < columns; i++)
    {   System.err.println("Indice: " + i);
    PROBLEM ON LINE BELOW
    EXCEPTION STATES "INVALID CURSOR STATE"
    oneRow[i] = results.getString(i+1);
    //all of the data is collected, so store
    dataRows.addElement(oneRow);
    fireTableChanged(null);
    catch(SQLException sqle)
    System.err.println("Error in ResultsModel.setResultSet()");
    System.err.println(sqle.getMessage());
    Anyone has an idea as to why the SQLException is being thrown? Why is the cursor state invalid???

    Hmmmm, try setting the cursor to the first row in the
    result set just before you wish to get the data. That led to some interesting results. Here's what I added:
    while(results.next());
    //re-allocate memory each time, b/c its a whole
    //new row of data
    oneRow = new String[columns];
    boolean texe = results.first();
    THE REST IS THE SAME AS BEFORE
    This also threw a SQLException, with the message: "Result set type is TYPE_FORWARD_ONLY"
    That's very interesting b/c I know that its doing this from iteration 1. I know this because I have an err.println() message in the for loop that's nested in the while loop. That message, which tells me what i equals, did NOT show up. So, going to the first column somehow went backwards causing an error (but I've never had a problem using previous() or any other "backwards" methods for ResultSet objects before!). And where the cursor so going to first() is backwards? Whoever can figure this out deserves Duke Dollars.

  • UpdateRow problem...

    Hi all,
    It's my first time try using JDBC 2.0 API, here is the problem:
    If I use:
    uprs.last();
    uprs.updateFloat("PRICE", 10.99f);
    uprs.updateRow();
    Ok, It's no problem at all, but when I using:
    uprs.getString(1);
    uprs.last();
    uprs.updateFloat("PRICE", 10.99f);
    uprs.updateRow();
    It throws a exception:
    error in row
    I use a JDBC:ODBC bridge coneect to a Access database.
    Please help me!
    Thanks in advance!

    Have you positioned on a row before calling
    uprs.getString(1);?
    It could help if you find out which code line causes the exception.
    Either spread outputs in your code likeSystem.out.println( "Next: getString(1)" );or put each "suspicious" line in an own try-catch-block.

  • UpdateRow() problem fixed, thanks!

    I got my problem worked out, but had to ditch the UpdateRow() statement to do it. It turns out that I had an indexed view that I'd forgotten about, which was causing problems. I removed all the indexes and the updates sped up dramatically using a standard UPDATE statement. The UpdateRow() statement never improved, though. Oh well, it's doing what it needs to do now. Thanks for your help, BAM

    even though you have found an acceptable work-around I just wanted to throw my two cents in.
    first, are running those update rows inside a transaction? just wondering...
    second, i wonder if it is slow because you are updating a column used in the where. as a guess i wonder if it is requerying the result set on every update...

  • 100000 records resultset giving problem ?

    Hello All,
    I am using oracle database, windows 2000, OC4J(Oracle Containers for j2ee) Application Server. When I query a emp table which has 100000 records and store the 100000 records in resultset and using a while loop
    if I iterates through the resultset to store each emp record in emp bean array then my application hangs at this point so I am unable to form a emp bean array of 100000 records. What is the reason ?
    Also, I am getting 'OutOfMemoryError' exception at the client side(jsp) when I am trying iterate over a vector that stores each of 100000 emp records as inner vector. I tried to increase my system page file size(virtual memory) to 1GB but this didnt help. So how to avoid this error in windows2000 and on unix box.
    Thanks and Regards,
    Kumar.

    I'd guess the reason is memory related. The simple answer to your question is "don't do that!" Why would the user ever want to look at 100,000 records? If the result of a user request would give such a large number of hits, your app should ask the user to refine the search criteria.
    Even if browsing 100,000 rows really is a requirement (which seems doubtful), why read them all at one pass? You could store a reasonable number (e.g. 1,000) and request a new read every 1,000 records. Alternatively, store the 100,000 in a disk file and page from there.

  • ResultSet.CONCUR_UPDATABLE Problem

    Hi!,
    I am using JDK1.3, and in my application i open the statement in updatable mode, while executing it gives me exception as follows
    java.sql.SQL.Exception(Option Feature Not Implemented).
    To avoid this i download JDBC2.0 Standerd Extension as
    jdbc2_0-stdext.jar file from sun.
    I added this file in classpath but still it is giving me the same problem.
    Tell me the solution for this.

    Not every driver implements all methods from the JDBC-interaces.
    You should have a look for other drivers for your database.

  • ResultSet.next() and resultset.islast() problem

    I have query which returns 10 records. I run the using preparedStatement. When i use the while(resultSet.next()), the loop runs untill 10 records and after that when it come to the while check it hangs.
    Sample code
    pstmt= conn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
    rs = pstmt.executeQuery();
    while (rsAccessNoEq.next()) {...
    Then i added the code in the while loop
    if(rs.isLast()){
    return;
    For the first iteration itself the theisLast() is true and it terminates from the loop.
    Please help me

    public class ISP {
         private GFA gestorFic = null;
         private GCA gestorCad = null;
         private GBDAgestor = null;
         private String path = null;
         ServiceProcessVO javaIntra = null;
         ServiceProcessVO javaIntra1 = null;
         ServiceProcessVO javaIntra2 = null;
         ServiceProcessVO javaIntra3 = null;
         ArrayList dataList = null;
         List dataFile = null;
         ArrayList dataList1 = null;
         ArrayList dataList2 = null;
         ArrayList dataList3 = null;          
         public final void iP() throws SQLException,
         MCEA {
         ResultSet rsIntraHq = null;
              Connection connIntraHq = null;
              PreparedStatement pstmtIntraHq = null;
              ResultSet rsIntraFlow = null;
              Connection connIntraFlow = null;
              PreparedStatement pstmtIntraFlow = null;
              ResultSet rsEqNoAccess = null;
              Connection connEqNoAccess = null;
              PreparedStatement pstmtEqNoAccess = null;
              ResultSet rsAccessNoEq = null;
              Connection connAccessNoEq = null;
              PreparedStatement pstmtAccessNoEq = null;
              ResultSet rsFlowHqAccess = null;
              Connection connFlowHqAccess = null;
              PreparedStatement pstmtFlowHqAccess = null;
              dataList = new ArrayList();          
              dataFile = new ArrayList();
              System.out.println("At the begining :"+now() );
              dataFile = gestorFic.leerArchivo(path, file);
              System.out.println("After first step :"+now() );
              int size1 = dataFile.size();
              try {
                   connAccessNoEq = gestor.getConnection();
                   javaIntra = new ServiceProcessVO();
                   pstmtAccessNoEq = connAccessNoEq
                   .prepareStatement(ConsultasAssets.INTRA_ACCESS_NOEQ);
                             //ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
                   pstmtAccessNoEq.setString(1, oti);
                   pstmtAccessNoEq.setString(2, oti);
                   pstmtAccessNoEq.setString(3, oti);
                   rsAccessNoEq = pstmtAccessNoEq.executeQuery();
                   //int k = rsAccessNoEq.TYPE_SCROLL_SENSITIVE;
                   int i = 0;
                   //rsAccessNoEq.last();
                   while (rsAccessNoEq.next()) {
                        i++; System.out.println("Begin of loop:"+i);
                        javaIntra = populatedata(rsAccessNoEq, true);
                        dataList.add(javaIntra);
                        // Flow Hq Access
                        try {
                             connFlowHqAccess = gestor.getConnection();
                             javaIntra1 = new ServiceProcessVO();
                             pstmtFlowHqAccess = connFlowHqAccess
                             .prepareStatement(ConsultasAssets.HQ_ACCESS);
                             pstmtFlowHqAccess.setString(1, javaIntra
                                       .getCTASOCIACION().trim());
                             pstmtFlowHqAccess.setString(2, rsAccessNoEq.getString(1)
                                       .trim());
                             pstmtFlowHqAccess.setString(3, rsAccessNoEq.getString(3)
                                       .trim());
                             pstmtFlowHqAccess.setString(4,oti);
                             pstmtFlowHqAccess.setString(5,oti);
                             pstmtFlowHqAccess.setString(6,oti);
                             rsFlowHqAccess = pstmtFlowHqAccess.executeQuery();
                             while (rsFlowHqAccess.next()) {
                                  javaIntra1 = populatedata(rsFlowHqAccess, false);
                                  dataList.add(javaIntra1);
    //                         if(rsAccessNoEq.isAfterLast()){
    //                              return;
                        } catch (SQLException se) {
                             MCLA.logFatel(ClassNameAssets
                                       .getQualifiedClassName()
                                       + ": "
                                       + ClassNameAssets.getLineNumber()
                                       + ": "
                                       + "Error Occurred in HQ_ACCESS: "
                                       + se.getMessage());
                             throw new MigracionCommonExceptionAssets(se.getMessage());
                        } finally {
                             pstmtFlowHqAccess.close();
                             if (rsFlowHqAccess != null) {
                                  rsFlowHqAccess.close();
                             //gestor.releaseConn(connFlowHqAccess);
         private SPVOpopulatedata(ResultSet rsCpProcess, boolean modify)
         throws SQLException {
              SPVOjavaIntra = new ServiceProcessVO();
              if (rsCpProcess.getString(ConstantesAssets.NU) != null
                        && !rsCpProcess.getString(ConstantesAssets.NU)
                        .equalsIgnoreCase(ConstantesAssets.BLANK))
                   javaIntra.setNU(rsCpProcess.getString(
                             ConstantesAssets.NU).trim());
              if (rsCpProcess.getString(ConstantesAssets.NU_ASO) != null
                        && !rsCpProcess.getString(ConstantesAssets.NU_ASO)
                        .equalsIgnoreCase(ConstantesAssets.BLANK))
                   javaIntra.setNU_ASO(rsCpProcess.getString(
                             ConstantesAssets.NU_ASO).trim());
              // HashTable logic to increament value for CTASOCIACION Start
              if (modify == true) {
                   if (rsCpProcess.getString(ConstantesAssets.CTASOC) != null
                             && !rsCpProcess.getString(ConstantesAssets.CTASOC)
                             .equalsIgnoreCase(ConstantesAssets.BLANK)) {
                        char cha = ConstantesAssets.A;
                        if (tempMap.get(javaIntra.getNU()) != null) {
                             cha = tempMap.get(javaIntra.getNU()).toString()
                             .charAt(0);
                             cha++;
                        tempMap.put(javaIntra.getNU(), Character
                                  .toString(cha));
                        javaIntra.setCTASOCIACION(((rsCpProcess
                                  .getString(ConstantesAssets.CTASOC).trim()) + cha)
                                  .trim());
              } else {
                   javaIntra.setCTASOCIACION(rsCpProcess.getString(
                             ConstantesAssets.CTASOC).trim());
              // HashTable logic to increament value for CTASOCIACION End
              if (rsCpProcess.getString(ConstantesAssets.CCC) != null
                        && !rsCpProcess.getString(ConstantesAssets.CCC)
                        .equalsIgnoreCase(ConstantesAssets.BLANK))
                   javaIntra.setCCC(rsCpProcess.getString(
                             ConstantesAssets.CCC).trim());
              if (rsCpProcess.getString(ConstantesAssets.FIV1) != null
                        && !rsCpProcess.getString(ConstantesAssets.FIV1)
                        .equalsIgnoreCase(ConstantesAssets.BLANK))
                   javaIntra.setFIV(rsCpProcess.getString(
                             ConstantesAssets.FIV1).trim());
              if (rsCpProcess.getString(ConstantesAssets.FFV) != null
                        && !rsCpProcess.getString(ConstantesAssets.FFV)
                        .equalsIgnoreCase(ConstantesAssets.BLANK))
                   javaIntra.setFFV(rsCpProcess.getString(
                             ConstantesAssets.FFV).trim());
              if (rsCpProcess.getString(ConstantesAssets.ES) != null
                        && !rsCpProcess.getString(ConstantesAssets.ES)
                        .equalsIgnoreCase(ConstantesAssets.BLANK))
                   javaIntra.setES(rsCpProcess.getString(
                             ConstantesAssets.ES).trim());
              javaIntra.setI(ConstantesAssets.N);
              javaIntra.setN(ConstantesAssets.BLANK);
              javaIntra.setC(ConstantesAssets.BLANK);
              javaIntra.setCO(ConstantesAssets.BLANK);
              javaIntra.setFI(ConstantesAssets.BLANK);
              return javaIntra;
    Please see the code
    Siva

  • ResultSet.last() problem

    Hi All,
    I am having proble with the ResultSet.last() method.
    The query contains about 25000 records.
    Methods next() and prev() works fine.
    But last() hung.
    The client program is running on different machine from the Oracle database Server.
    Bellow is about what I did.
    ==========================================
    protected Statement stmt = null;
    protected ResultSet rset;
    stmt = conn.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY );
    rset = stmt.executeQuery( "Select * from mytable" );
    rset.setFetchSize( 10 );
    rset.last();
    // Never got here.
    stmt.close();
    conn.close();
    ==========================================
    Any help is appreciated!
    Gwowen

    Here is a possible reason why that would hang:
    To find the "last" record, the database would have to read through all 25,000 records and send them to your program. This would take a long time, since you told it (setFetchSize(10)) to only send 10 records at a time over the network. So perhaps you just didn't wait long enough. Or perhaps something in the network timed out.
    You often see this method posted as a way to find the size of a ResultSet on this forum. However (as you see) it isn't the most efficient in many cases. What you posted is probably your cut-down program -- thank you for not posting 1,000 lines of code -- but an easy way to find the size of that query without actually having to execute it is to execute "Select count(*) from mytable". It returns only 1 row with 1 column, containing the number you want.

  • 10000 records resultset giving problem

    Hello All,
    I am using oracle database, windows 2000, OC4J(Oracle Containers for j2ee) Application Server. When I query a emp table which has 100000 records and store the 100000 records in resultset and using a while loop
    if I iterates through the resultset to store each emp record in emp bean array then my application hangs at this point so I am unable to form a emp bean array of 100000 records. What is the reason ?
    Also, I am getting 'OutOfMemoryError' exception at the client side(jsp) when I am trying iterate over a vector that stores each of 100000 emp records as inner vector. I tried to increase my system page file size(virtual memory) to 1GB but this didnt help. So how to avoid this error in windows2000 and on unix box.
    Thanks and Regards,
    Kumar.

    I agree with all the above posts, you shouldn't never ever try to store 10K or more result objects in memory, let alone generate a web page containing all of those results. Filter it already in the database level, or if you'll showing unfiltered data, give the user a scrollable "window" into the results, just as pretty much every web page does.
    If the data is pretty homogenous, you might even try using a pattern like Flyweight from GoF.
    Anyway, if for some ungodly reason you decide to do it, try increasing the heap size of your JVM with the -Xms and -Xmx parameters. For example java -Xms100m -Xmx512m will set your minimum heap size into 100 megabytes and maximum into 512 megabytes.
    .P.

  • Multiple resultset - strange problem

    Hi,
    I have a stored procedure that returns a single resultset correctly.
    ResultSet rs = cstmt.executeQuery();
    while(rs.next()).......
    Now, I have to change this stored proc, to return multiple resultsets. To test if my code works, I did not change the stored proc(it still returns 1 resultset), but changed my code to -
    boolean results = cstmt.execute();
    System.out.print("do resultsets exist - "+results);
    System.out.print("update count- "+cstmt.getUpdateCount());
    For some strange reason, the boolean value is false! And the updatecount value is 1.
    Can someone pls. explain this? I have the code for retrieving multiple resultsets, but it does not get executed because the initial 'results' value is false.
    Thanks in advance.

    I've never done what you're doing. I do it like this:
            CallableStatement cs = conn.prepareCall("{call PKG_BLAH.MY_FUNCTION(?,?,?)}");
            cs.setLong(1, someKey);
            cs.setString(2, someId's);
            cs.registerOutParameter(3, ORACLECURSORVALUE);
            cs.execute();
            ResultSet rs = (ResultSet) cs.getObject(3);
            while (rs.next()) {
    }

  • Hi resultset.previuos() - problem

    Hi all.
    Im working with jdbc.odbc standart bridge.
    when I try to do resultset.previous() I get an exception taht I cant fetch backwards.
    So I tried to change the statement propertites to somthing like - .TYPE_SCROLL_SENSITIVE
    now I dont get the exceptions but I cant fetch forwards: resultset.next() returns false.
    I also tried to change the direction by calling resultset.setFetchDirection()
    any ideas?
    10x Yonatan

    The jdbc/odbc bridge has known limitations over a pure jdbc driver, this is probably what you're running into. I'd suggest trying to get a hold of a jdbc driver for your database.

  • Assign a field of ResultSet with problem

    Hi all, I'm problems...
    The follow code in JSP executes ok:
    <%
    while (rs.next())
    %>
    <tr><td><%= rs.getString("cod_pro") %> </td></tr>
    <% } %>
    but if I try this ...
    <%
    while (rs.next())
    String cod = rs.getString("cod_pro") ;
    <% } %>
    an SQLException occurs: no data found. Someone can help me ??
    appreciate,
    Andre.

    Hi all, the problem was Microsoft (argh !!) Access doesn's support this command. MySql resolves the problem ... so avoid Access and Microsoft !!!

  • Problem using updatable ResultSet

    I am using scrollable and updatable result sets to query and modify data. The problem I am having is that when I make a change to the data in a field on my form, the data gets modified in the database and not in the result set in my form. This only occurs when the field(column) I try to modify is one of the fields(columns) that I use in my query criteria. For example, I can issue the query "SELECT id, fname, lname FROM user WHERE fname='TED'". The problem is, if I change fname from 'TED' to 'JOE' from one of the records in the result set on my form, it gets changed in the database but NOT in the result set. If I change the field lname, the change is made in the result set and the database with no problem.
    I have also tried to issue this statement but it does not help:
    resultSet.refreshRow();
    This is the basic code for the update:
    private void updateRecord() {
    try {
    resultSet.updateString("id",idField.getText());
    resultSet.updateString("fname",fnameField.getText());
    resultSet.updateString("lname",lnameField.getText());
    resultSet.updateRow();
    } catch( SQLException ex ) { //Trap SQL errors
    JOptionPane.showMessageDialog(textPane,
    "Error updating the database"+'\n'+ex.toString());
    Any help would be appreciated.

    has been moved to JDBC forum...

Maybe you are looking for

  • Text in Dynamic Textfield gets cut off

    Hi I have a dynamic text field which is just one line of text. For some reason letters like g or p that go below the regular line of text get cut off. I have made the field bigger, and also played around with the _height Property but it doesn't make

  • How to remove the "Image Mask" labels under the effects tab in the Inspector window

    I'm still trying to find my way round Final Cut Pro X after using Final Cut Express for many years. I don't know how I have manage to finish up with two Image Masks being set under the effects tab in the Inspector window. The Image Mask effects are n

  • CK11 costing of repeated component item on bom

    Looking for a product costing solution to the following scenariou2026 Bill of material contains a component that is listed twice, but with a different procurement indicator (purchase vs. production) for each occurrence.  The reason for this is that t

  • Active Dataguard

    If i have to audit selects on the Active dataguard which is now being used for real time reporting ,can this be done with audit_trail=XML? Thanks

  • BP as synchronous web service

    Hi, is it possible to use a business process in ALBPM in a synchronous manner, i.e. return the output of the entire (short) BP directly in the HTTP response of a Web Service invocation? If so, how?