File Adapter write operation behaviour

Hi,
We actually have a process which read JMS Messages, and write a file.
We don't want to have one file for each JMS Message, so we try to use "Number of Messages equals" and "Elapsed time exceeds".
This is an example of the behaviour we are expecting :
Elapsed time exceeds = 10s
Deploy process BPEL / ESB
0s - 1 JMS incoming
10s - a file with 1 record is created.
3 JMS incoming
20s - a file with 3 record is created.
2 JMS incoming
30s - a file with 2 record is created.
What happens in reality :
0s - 1 JMS incoming
10s - No file generation
1 JMS incoming => a file with the previous record is created.
2 JMS incoming
20s - No file generation
1 JMS incoming => a file with the 3 previous records is created.
1 JMS incoming
30s - No file generation
If no JMS are incoming during 3 month... didn't have any file for my 2 last JMS Messages.
The trigger to check the condition of creation of the files seems to be a new process call.
So... is it the normal behaviour ? Is it a bug ? Are we making something wrong ?
The problem exist also for "Number of Messages equals".
I think many people use this, how do you do to resolve this problem ?

Unfortunately, this is documented bahaviour (solution/workaround anyone?!):
Elapsed Time Exceeds:
Specify a time which, when exceeded, causes a new outgoing file to be created.
Note:
The Elapsed Time Exceeds batching criteria is evaluated and a new outgoing file is created, only when an invocation happens.
For example, if you specify that elapsed time exceeds 15 seconds, then the first message that is received is not written out, even after 15 seconds, as batching conditions are not valid. If a second message is received, then batching conditions become valid for the first one, and an output file is created when the elapsed time exceeds 15 seconds.

Similar Messages

  • File Adapter Write Operation inserts a new line at the end

    Hi,
    I am using the write operation in the File Adapter from BPEL Process. The data is written successfully to the file and file is also created in the location specified in the adapter wsdl. But in the file created, it creates a new line at the end of the file. This new line has to be avoided when writing data to a file.
    Has anyone faced this and solved this ?
    I am SOA 10.1.3.4.
    Cheers,
    - AR

    It is a bug in 10g and will be resolved in one of the versions of 11g.
    Cheers,
    -AR

  • File Adapter Write missing files

    Hello
    I have some trouble with a bpel process containing a file adapter that should write files to disk. Each bpel-process is started when a read file adapter reads a new matching file (*.xml).
    I have tested the process with a few files (5-20) and a new process is started for each file, and at the end of the process a new file is written to disk by the file adapter (Write). But when I am testing with a large number of files (40-50 files) something strange happens.
    A new process is started for each file, but it looks like the file adapter that should write files to disk is not capable to handle the pressure. 10-20% of the processes doesnt complete as expected. In the BPEL Console everything looks ok, it seems like the File Adaper has written a file to disk, no error is trown. But when I look in the directory the file is not there...
    Has this something to do with performance? Is there any parameters or settings I can tune to make the file adapters work better? Sometimes it also looks like the file adapter (read) doesnt manage to start a new process for each incomming file even if they are deleted and archived...

    I ran into a similar issue. As a workaround we ended up just using java to write the files out. When the File Adapter attempts to write out a file it first writes that file to a temp file and then copies that to the appropriate directory.
    I believe that when two or more threads were attempting to write at the same time the write was failing for one (but appearing to work in the console logs). I think a race condition may be created when two threads attempt to write using the File Adapter for access to the temp file. I contacted my oracle rep about it but they are always pretty worthless so I havent ever heard anything back concerning the issue.

  • File Adapter Write Compilation problem JDev 11.1.1.6 and BPEL 2.0

    Hi,
    Im creating a simple BPEL Project with a One-way Process template project.
    I have added just one Partnerlink with a File Adapter to do a write operation.
    I have assigned the main process input to the file Write Invoke operation.
    But I am getting a compilation error.
    Error(81): inputVariable "inputVariable" of type "client:BPELProcessWriteToFileRequestMessage" is not compatible with WSDL message "ns1:Write_msg".
    Can you pl help ?
    Here is the BPEL syntax :
    <?xml version = "1.0" encoding = "UTF-8" ?>
    <process name="BPELProcessWriteToFile"
    targetNamespace="http://xmlns.oracle.com/FirstApplication/FileWriter/BPELProcessWriteToFile"
    xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable"
    xmlns:client="http://xmlns.oracle.com/FirstApplication/FileWriter/BPELProcessWriteToFile"
    xmlns:ora="http://schemas.oracle.com/xpath/extension"
    xmlns:bpel="http://docs.oasis-open.org/wsbpel/2.0/process/executable"
    xmlns:ns1="http://xmlns.oracle.com/pcbpel/adapter/file/FirstApplication/FileWriter/WriteTextToFile"
    xmlns:bpelx="http://schemas.oracle.com/bpel/extension"
    xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/"
    xmlns:xp20="http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.Xpath20"
    xmlns:oraext="http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.ExtFunc"
    xmlns:dvm="http://www.oracle.com/XSL/Transform/java/oracle.tip.dvm.LookupValue"
    xmlns:hwf="http://xmlns.oracle.com/bpel/workflow/xpath"
    xmlns:ids="http://xmlns.oracle.com/bpel/services/IdentityService/xpath"
    xmlns:bpm="http://xmlns.oracle.com/bpmn20/extensions"
    xmlns:xdk="http://schemas.oracle.com/bpel/extension/xpath/function/xdk"
    xmlns:xref="http://www.oracle.com/XSL/Transform/java/oracle.tip.xref.xpath.XRefXPathFunctions"
    xmlns:ldap="http://schemas.oracle.com/xpath/extension/ldap">
    <import namespace="http://xmlns.oracle.com/FirstApplication/FileWriter/BPELProcessWriteToFile" location="BPELProcessWriteToFile.wsdl" importType="http://schemas.xmlsoap.org/wsdl/"/>
    <partnerLinks>
    <partnerLink name="bpelprocesswritetofile_client" partnerLinkType="client:BPELProcessWriteToFile" myRole="BPELProcessWriteToFileProvider"/>
    <partnerLink name="WriteTextToFile" partnerLinkType="ns1:Write_plt"
    partnerRole="Write_role"/>
    </partnerLinks>
    <variables>
    <variable name="inputVariable" messageType="client:BPELProcessWriteToFileRequestMessage"/>
    </variables>
    <sequence name="main">
    <!-- Receive input from requestor. (Note: This maps to operation defined in BPELProcessWriteToFile.wsdl) -->
    <receive name="receiveInput" partnerLink="bpelprocesswritetofile_client" portType="client:BPELProcessWriteToFile" operation="process" variable="inputVariable" createInstance="yes"/>
    <assign name="Assign">
    <copy>
    <from>string('$inputVariable.payload/client:input')</from>
    <to>$inputVariable.payload/client:input</to>
    </copy>
    </assign>
    <invoke name="InvokeWriteTextToFile"
    partnerLink="WriteTextToFile" portType="ns1:Write_ptt"
    operation="Write"
    inputVariable="inputVariable" bpelx:invokeAsDetail="no"/>
    </sequence>
    </process>

    The error seen in your case typically occurs when the schemas of BPEL valriable and the schema of message in file adapter WSDL are different. You may use a transform activity in BPEL to map the fields of the two schemas.
    You may also like to have a look at various file adapter examples at
    http://java.net/projects/oraclesoasuite11g/pages/FileAdapters
    These samples provide working examples of how to handle various kinds of data when using file adapter.
    Regards.

  • Need to get file name and directory back from file adapter - WRITE

    I am using the file adapter to write a file. I want to log the file name of the file we just created. Since we use a precise timestamp in the file name, I can't accurately guess.
    I have an invoke in my BPEL process to the file adapter. My first try was to assign the jca.file.FileName property to a variable, but it never comes back. I looked around and saw plenty of ways to SET the file name for a write and GET the file name for a read, but no GET file name for WRITE.
    Anyone have a solution?
    Thanks in advance!

    I think I got your point... You can tell FileAdapter the filename to write, but if you don't then FileAdapter can not tell you the filename that it wrote... I think it is pretty possible Oracle didn't implement the latter, as the write operation is probably asynchronous and the filename is calculated later on...
    If what you want is just log, you may achieve your requirement by increasing verbosity on Adapter logs... Have a look at the link bellow...
    http://docs.oracle.com/cd/E15586_01/integration.1111/e10226/ad_mon.htm#CJHHBBID
    Otherwise, the solution for you will be to calculate filename yourself, and that will be a little bit of reinventing the wheel... But at least you will know the filename...
    Cheers,
    Vlad

  • File Adapter read Operation

    I am using File adapter to read files from the given location.
    With this read operation it picks all the files at time.
    I want to configure File Adapters that it should pick one file at time from the given location with given polling interval.
    Can we do this with file Adapters in BPEL.
    I am using SOA Suite 11g.
    Thanks,
    Arun Jadhav

    Hi, in order to achieve that you need to set the "SingleThreadModel" and "MaxRaiseSize" properties for your file adapter.
    Edit the adapter's jca file and add the following properties:
    <property name="SingleThreadModel" value="true"/>
    <property name="MaxRaiseSize" value="1"/>
    You can set these properties also through jdeveloper, by opening composite.xml, selecting the adapter and then changing the properties through the properties panel.

  • File Adapter Writting and Reading strategy

    Hi All,
    When i am trying to write data to file, it was opened by another person and it gave error in the receiver communication channel saying like source is using by another application. Which is well and good
    But in case of Sender channel while writing the data to file even thought it is opened by another person, Sender file adapter is picked the file.
    I didn't get the reason why it is like this. Any one of u had the same issue???
    Regards

    Hi Neetesh,
    >>hmm ... that's weird ... you mean to say that the polling frequency is now (20 + 100) = 120 secs ? Unless and until the file is not being modified or the file is not "open", this parameter shouldn't work ...
    Examples
    Poll interval is 20 sec and MSecs to wait is 100000( 1 MIN 40 Sec)
    1) If file is there and did not opened / modifying
    waiting till 1 min 40sec to pick the file
    2) If the file is there and Modifying it
    Adapter is waiting 1 min 40sec if the files have been changed.
    3) If there is a file and just opened, not writing any files
    Waiting for 1 min 40 sec to pick the file
    >>Can you share the adapter log?
    Processing Details for Cluster Node Server 0 10_31463
         5/20/10 3:49:56 PM           Polling interval started. Length: 20.0 seconds
         5/20/10 3:49:56 PM           Processing finished successfully
         5/20/10 3:49:56 PM           Processing started
         5/20/10 3:49:56 PM            4f1e0c5b-9553-4397-30ef-d3bb55a13a48     Processing finished successfully
         5/20/10 3:49:55 PM            4f1e0c5b-9553-4397-30ef-d3bb55a13a48     Message with ID 4f1e0c5b-9553-4397-30ef-
                                                   d3bb55a13a48 processed
         5/20/10 3:48:15 PM           Processing started
         5/20/10 3:47:55 PM           Polling interval started. Length: 20.0 seconds
         5/20/10 3:47:55 PM           Processing finished successfully
         5/20/10 3:47:55 PM           Processing started
         5/20/10 3:47:35 PM           Polling interval started. Length: 20.0 seconds
    Regards
    Edited by: Vamsi Krishna on May 20, 2010 10:50 PM

  • File adapter write to network drive fails

    Hi all,
    I have a problem using the FIle adapter. The situation is as follows:
    - SOA Suite 10.1.3.5.0. installed on Windows
    - SOA Suite runs under windows user soaadmin, a user with local admin rights.
    - A network share is mapped as a network drive on a remote (windows) server, assigned drive letter 'T'.
    - user soaadmin is added to a user group on the remote server that has local admin rights on the remote server.
    - In my BPEL process, the file adapter is configured to write files to 'T' drive.
    - At runtime, ORABPEL-11054 occurs: Directory cannot be created successfully. Directory: T:/ cannot be created successfully.
    - If I configure the file adapter to write to 'C' drive all functions well.
    - From the windows explorer, user soaadmin can create files on 'T' successfully soa apparently has the right privileges on 'T'.
    Any clue as to what may be wrong?
    Thanks in advance,
    Regards Rob

    please use FTP adapter instead of File Adapter.
    Thanks,
    Chandra_

  • XI3.0 Receiver file adapter write to windows shared drive

    Hi,
    Our XI server SP09 currently runs on windows 2003 server,  I wish to use the receiver file adapter to create a file on another windows server.  I have created a folder on the other server and set permissions so that anyone can read and write to it. 
    The communication channel has been set-up with a target directory of //server/shared_folder/folder and a transport protocol of 'File system(NFS)'
    When I try and send an XML message to the file adapter I get the following error on the runtime workbench :-
    Last message processing started 09:47:10 2005-06-09, Error: Message processing failed with java.lang.Exception: Message processing failed - configuration error in file receiver adapter (Directory does not exist / cannot be created)
    My questions are as follows :-
    a) Do I have the target directory on the communication channel set-up correctly?  i.e. do I use / or \
    b) What username will need to be set-up on the other server so that the file adapter can write to the shared folder
    c) Is there another way of providing user and password information for connecting to the other server?
    Many thanks
    Ian

    Hi Ian
      as i understood from ur description is that u want ur file to b generated in some other machine then u have to mention that machine in ur SLD using correct specification..
    u go thru this link in order to get more Clearance..
    http://help.sap.com/saphelp_nw04/helpdata/en/31/f0ff69551e4f259fdad799a229363e/frameset.htm
    Hope this ll help u.
    Regards
    Shailesh

  • File adapter(write files with same extension as we read them)

    Hello
    I am trying to read file as an attachment using file adapter (it can be of any extension .pdf,.txt,.xml)
    I want to write this file using file adapter with the same extension i.e. whatever is read as it is....I am least bothered for reading the content inside the file so am reading it as an attachment..
    Please if anyone knows the answer..reply....

    I ran into a similar issue. As a workaround we ended up just using java to write the files out. When the File Adapter attempts to write out a file it first writes that file to a temp file and then copies that to the appropriate directory.
    I believe that when two or more threads were attempting to write at the same time the write was failing for one (but appearing to work in the console logs). I think a race condition may be created when two threads attempt to write using the File Adapter for access to the temp file. I contacted my oracle rep about it but they are always pretty worthless so I havent ever heard anything back concerning the issue.

  • File adapter SyncRead Operation adds "???" to first record of csv file

    Hi All,
    One interface is reading one CSV file (containing two fields only) using SyncRead Operation of File Adapter. But I found, when file adapter parsed the data it appends "???" to first field of the first record which cause further data validation in the process.
    Test.csv file
    123456,159357
    147258,987654
    Trace of the FileAdapter:
    <messages>
    <Invoke_FILE_Inbound_InputVariable>
    <part  name="Empty">
    <empty/>  
    </part>
    </Invoke_FILE_Inbound_InputVariable>
    <Invoke_FILE_Inbound_OutputVariable>
    <part  name="body">
    <Root-Element>
    <TestElements>
    <Emplid>���123456</Emplid>  
    <SupId>159357</SupId>
    </TestElements>
    <HRRespIDElements>
    <Emplid>147258</Emplid>  
    <SupId>987654</SupId>
    </TestElements>
    </Root-Element>
    </part>
    </Invoke_FILE_Inbound_OutputVariable>
    </messages>
    Can anyone help me to understand , what is reason? Or I missed anything.
    Thanks & Regards,
    Sharmistha

    Unfortunately, this is documented bahaviour (solution/workaround anyone?!):
    Elapsed Time Exceeds:
    Specify a time which, when exceeded, causes a new outgoing file to be created.
    Note:
    The Elapsed Time Exceeds batching criteria is evaluated and a new outgoing file is created, only when an invocation happens.
    For example, if you specify that elapsed time exceeds 15 seconds, then the first message that is received is not written out, even after 15 seconds, as batching conditions are not valid. If a second message is received, then batching conditions become valid for the first one, and an output file is created when the elapsed time exceeds 15 seconds.

  • File adapter - Write - Elapsed Time based batching not working.

    We are creating an asynchronous BPEL process that creates a file every 2 mins with the messages the BPEL process received in the last 2 minutes. We are using a file adapter with only "elapsed time" set to 2 minutes (Number of Messages and File size disabled) . If we deploy this into BPEL console and use bpel console's stress test feature, it doesnt create any file at all. If we use a file adapter based on Number of messages, it works fine. Can any one of you suggest what could be the problem ?

    Unfortunately, this is documented bahaviour (solution/workaround anyone?!):
    Elapsed Time Exceeds:
    Specify a time which, when exceeded, causes a new outgoing file to be created.
    Note:
    The Elapsed Time Exceeds batching criteria is evaluated and a new outgoing file is created, only when an invocation happens.
    For example, if you specify that elapsed time exceeds 15 seconds, then the first message that is received is not written out, even after 15 seconds, as batching conditions are not valid. If a second message is received, then batching conditions become valid for the first one, and an output file is created when the elapsed time exceeds 15 seconds.

  • File adapter Read operation not working.

    Hi All,
    I have a simple file adapter which will read from a csv file and insert into a table. I have deployed the application successfully, but the application is not reading from the specific location. I am not getting any error in the EM console. Below is the XSD that I used.
    <?xml version="1.0" encoding="UTF-8" ?>
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                xmlns:nxsd="http://xmlns.oracle.com/pcbpel/nxsd"
                xmlns:tns="http://TargetNamespace.com/InboundService"
                targetNamespace="http://TargetNamespace.com/InboundService"
                elementFormDefault="qualified"
                attributeFormDefault="unqualified"
                nxsd:version="NXSD"
                nxsd:stream="chars"
                nxsd:encoding="US-ASCII"
    >
      <xsd:element name="Root-Element">
        <xsd:complexType>
          <xsd:choice minOccurs="1" maxOccurs="unbounded" nxsd:choiceCondition="terminated" nxsd:terminatedBy=",">
            <xsd:element name="Student" nxsd:conditionValue="R">
              <xsd:complexType>
                <xsd:sequence>
                  <xsd:element name="Roll" type="xsd:int" nxsd:style="terminated" nxsd:terminatedBy="," nxsd:quotedBy="&quot;" />
                  <xsd:element name="Name" type="xsd:string" nxsd:style="terminated" nxsd:terminatedBy="," nxsd:quotedBy="&quot;" />
                  <xsd:element name="Flag" type="xsd:string" nxsd:style="terminated" nxsd:terminatedBy="${eol}" nxsd:quotedBy="&quot;" />
                </xsd:sequence>
              </xsd:complexType>
            </xsd:element>
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    This is the file that I want to read:
    5,Ram,N
    6,Shyam,N
    Please help friends.

    You should extensively practice the samples given in Oracle's documentation guide for modelling Native XSD. That will give you a better idea, about how to go about the native xsd schemas.. Anyways, I looked into your schema.. You need to make 2 changes to make this xsd work..
    (1) Change "xsd:choice" tags to "xsd:sequence".
    (2) Include a closing tag of "xsd:schema" to make the xsd well-formed.

  • How to get file name from file adapter (Read Operation)

    Hi All,
    I am reading files from local location, in jca file i gave filename property =*.* ( which reads all files), and now I want to read the incoming file name inside bpel and I want to copy the file name to some variable. Is this possible?

    Yes, its possible.
    In your receive activity,set below property in its properties tab:
    <bpelx:property name="jca.file.FileName" variable="FileName"/>
    Before that make sure to create a variable "FileName" of string type.
    Whatever file your file adapter will read,its name will be stored in this variable.
    Hope this helps.
    Regards,
    Karan
    http://learn-oraclesoa.blogspot.com/

  • File Adapter write XML file with special characters

    Hi,
    I have a BPEL processes which use DB adapter to retrieve record and output in a XML document using File Adapter.
    In the table, some records contain these special characters - ">" , "<" , "." . I was expecting the file adapter will convert it to escape characters, but it didn't happen. it just put the same value back to the XML file, which cause other system to reject the file. Do anyone know how to resolve this ?
    The version of SOA is 10.1.3.4
    Thanks for the help.
    Calvin
    Edited by: user12018221 on May 25, 2011 1:48 PM

    one option is to specify validateXML on the partnerlink (that describes the file adapter endpoint) such as shown here
    <partnerLinkBinding name="StarLoanService">
    <property name="wsdlLocation"> http://<hostname>:9700/orabpel/default/StarLoan/StarLoan?wsdl</property>
    <property name="validateXML">true</property>
    </partnerLinkBinding>
    hth clemens

Maybe you are looking for