Multi-platform File Adapter

We are currently looking at the requirements for several new processes involving use of the File Adapter functionality. Our production BPM environment is RedHat Linux 4, while this particular legacy system runs on Windows 2000. The legacy system is already configured to read and write XML files into Windows file shares. Some integration processes should kick off when XML files are written to the file shares. Other processes will write XML files back into the file shares. I am looking for recommendations as to the best architectural approach to dealing with this multi-platform problem within the BPEL PM. As I see it, we have a few of options:
1.     Utilize FTP server functionality rather than direct file access to read and write the files in a platform-independent manner.
2.     Use some other technology to bridge between the platform-specific file directories and something less dependent on platform. For example, pick up the files from the Windows directory and write them to an AQ queue. Then feed the BPEL process from the queue.
3.     Run BPM on multiple platforms and allow the Windows instance to handle Windows file drops while the Linux instance handles Linux file drops. Obviously there is a cost penalty here as well as complexity during deployment.
Any thoughts or experiences are welcome.
Thank you.

Have you looked into relative path's? that would solve the issue of different OS path names.
Also, you might want to consider the deployment descriptors you can use when compiliing, you can set enviroment specific variables like paths in there.

Similar Messages

  • Process multi-record & multi-record-format files using ESB & File Adapter

    I am looking to process/parse an in-bound file with the following make-up and to load into a database table using the File Adapter, ESB and DB Adapter.
    File Make-Up:
    - each line in the file is a record
    - each record is made up of 12 fields
    - there are multiple record types denoted by the first field in the line
    - record types may or may not have common fields
    - where there are common fields, the field may be in different columns
    - each record is to be inserted into a database table
    Sample File:
    3,,"03-0243-0188132-00",.20,26,075,"","000000006026","","","22/04/08",03 1303
    3,,"03-0243-0188132-00",20.00,26,075,"","","","","22/04/08",03 0579
    5,,"03-0243-0188132-00",99.60,,,"OPENING BALA",,,"ACME GROUP","22/04/08",
    6,,"03-0243-0188132-00",99.60,,,"CLOSING BALA",,,"ACME GROUP","22/04/08",
    8,,"03-0243-0188132-00",-346119.05,16,000,"DEBITS",,,,"22/04/08",
    8,,"03-0243-0188132-00",346119.05,349,050,"CREDITS",,,,"22/04/08",
    9,,"03-0243-0188132-00",-346119.05,16,000,"DEBITS",,,,"22/04/08",
    9,,"03-0243-0188132-00",346119.05,349,050,"CREDITS",,,,"22/04/08",
    Record Types and corresponding format:
    3, Corp ID, A/C Number, Trans Amt, Serial Number, Trans Code, Particulars, Analysis Code, Reference, Other Party Name, Transaction Date, Originating Bank
    5, Corp ID, A/C Number, Opening Balance, Serial Number, Trans Code, Particulars, Analysis Code, Reference, Other Party Name, Transaction Date, Originating Bank
    6, Corp ID, A/C Number, Closing Balance, Serial Number, Trans Code, Particulars, Analysis Code, Reference, Other Party Name, Transaction Date, Originating Bank
    8, Corp ID, A/C Number, Amount, Number, 000, “DEBITS”, Analysis Code, Reference, Other Party Name, Transaction Date, Originating Bank
    8, Corp ID, A/C Number, Amount, Number, 050, “CREDITS”, Analysis Code, Reference, Other Party Name, Transaction Date, Originating Bank
    9, Corp ID, A/C Number, Amount, Number, 000, “DEBITS”, Analysis Code, Reference, Other Party Name, Transaction Date, Originating Bank
    9, Corp ID, A/C Number, Amount, Number, 050, “CREDITS”, Analysis Code, Reference, Other Party Name, Transaction Date, Originating Bank
    Please note that record types 8 and 9 have 2 fixed fields.
    I have tried playing around with the File Adapter and the ESB but not having much luck. Can someone provide any suggestions on how I can handle this?

    James,
    Thanks for your prompt response. I have come across your post previously.
    Please excuse my in-experience (very new to SOA and Oracle SOA Suite) but i have not understood how your post regarding the manual creation of an XSD will assist with my problem. Could you possibly further elaborate on the overall approach i should be taking?
    Regards,
    Simon

  • JDBC  Adapter how to select multi format files on AS/400

    Hi all,
    i want to access a multi format file in a AS/400 Library via JDBC Adaptor. When i try to 'select * from XXXX.FILEN' i get an error "SQLException during query 'select * from XXXX.FILEN': java.sql.SQLException:[SQL7003]File FILEN in XXXX has more than one format.
    Does anybody knows how to access a multi format file in AS/400 via a SQL statement which i can use in the JDBC-Adaptor configuration.
    Thanks,
    Juergen

    Hi Jurgen,
    Check this link,
    http://help.sap.com/saphelp_nw04/helpdata/en/2e/96fd3f2d14e869e10000000a155106/frameset.htm
    also a guess, instead of "*", can you try with column names of required columns (and make multiple queries, based on qualifiers/columns for appropriate formats within the same file)
    Regards
    Vishnu

  • Error in using file adapter valves

    Hi,
    I'm working on Oracle SOA Suite 11g (11.1.1.4). I'm doing an exercise on using adapter valves for encryption. I need to write an encrypted file using File adapter. I created pipeline.xml and also specified property in jca file. And added bpm-infra.jar file to classpath.
    Also, I've compiled SimpleEncryptValve.java and created a jar file and placed it in lib directory of domain.
    Pipeline.xml is as below :
    <?xml version="1.0"?>
    <pipeline xmlns="https://www.oracle.com/adapter/pipeline">
    <valves>
    <valve>valves.SimpleEncryptValve</valve>
    </valves>
    </pipeline>
    writeFile_file.jca contents are as below :
    <adapter-config name="writeFile" adapter="File Adapter" wsdlLocation="writeFile.wsdl" xmlns="http://platform.integration.oracle/blocks/adapter/fw/metadata">
    <connection-factory location="eis/FileAdapter"/>
    <endpoint-interaction portType="Write_ptt" operation="Write">
    <interaction-spec className="oracle.tip.adapter.file.outbound.FileInteractionSpec">
    <property name="PhysicalDirectory" value="D:\PoC\FileAdapters"/>
    <property name="Append" value="false"/>
    <property name="FileNamingConvention" value="new_%SEQ%.txt"/>
    <property name="NumberMessages" value="1"/>
    <property name="PipelineFile" value="pipeline.xml"/>
    </interaction-spec>
    </endpoint-interaction>
    </adapter-config>
    Got below error while testing. What could be wrong in valve configuration ?
    <Jun 6, 2011 7:29:25 PM IST> <Error> <oracle.soa.adapter> <BEA-000000> <File
    pter Project2:writeFile [ Write_ptt::Write(body) ]
    oracle.tip.pc.services.pipeline.PipelineException: Invalid configurations for valves
    at oracle.tip.pc.services.pipeline.PipelineImpl.validate(PipelineImpl
    va:237)
    at oracle.tip.pc.services.pipeline.PipelineFactory.instantiateModel(P
    lineFactory.java:198)
    at oracle.tip.pc.services.pipeline.PipelineTemplate.newPipeline(Pipel
    Template.java:39)
    at oracle.tip.adapter.file.outbound.FileSender.getPipeline(FileSender
    va:378)
    at oracle.tip.adapter.file.outbound.FileSender.sendNonBatchedSerializ
    late(FileSender.java:254)
    at oracle.tip.adapter.file.outbound.FileInteraction.executeFileWrite(
    eInteraction.java:623)
    at oracle.tip.adapter.file.outbound.FileInteraction.execute(FileInter
    ion.java:426)
    at oracle.integration.platform.blocks.adapter.fw.jca.cci.JCAInteracti
    nvoker.executeJcaInteraction(JCAInteractionInvoker.java:311)
    at oracle.integration.platform.blocks.adapter.fw.jca.cci.JCAInteracti
    nvoker.invokeJcaReference(JCAInteractionInvoker.java:548)
    at oracle.integration.platform.blocks.adapter.fw.jca.cci.JCAInteracti
    nvoker.invokeAsyncJcaReference(JCAInteractionInvoker.java:508)
    at oracle.integration.platform.blocks.adapter.fw.jca.cci.JCAEndpointI
    raction.performAsynchronousInteraction(JCAEndpointInteraction.java:491)
    at oracle.integration.platform.blocks.adapter.AdapterReference.post(A
    terReference.java:247)
    at oracle.integration.platform.blocks.mesh.AsynchronousMessageHandler
    Post(AsynchronousMessageHandler.java:142)
    at oracle.integration.platform.blocks.mesh.MessageRouter.post(Message
    ter.java:194)
    at oracle.integration.platform.blocks.mesh.MeshImpl.post(MeshImpl.jav
    15)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorIm
    java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAc
    sorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingRefle
    on(AopUtils.java:307)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.invok
    inpoint(ReflectiveMethodInvocation.java:182)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proce
    ReflectiveMethodInvocation.java:149)
    at oracle.integration.platform.metrics.PhaseEventAspect.invoke(PhaseE
    tAspect.java:71)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proce
    ReflectiveMethodInvocation.java:171)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDyn
    cAopProxy.java:204)
    at $Proxy299.post(Unknown Source)
    at oracle.tip.mediator.serviceEngine.MediatorServiceEngine.post2Mesh(
    iatorServiceEngine.java:1120)
    at oracle.tip.mediator.service.BaseActionHandler.requestProcess(BaseA
    onHandler.java:200)
    at oracle.tip.mediator.service.BaseActionHandler.requestProcess(BaseA
    onHandler.java:94)
    at oracle.tip.mediator.service.BaseActionHandler.requestProcess(BaseA
    onHandler.java:74)
    at oracle.tip.mediator.service.OneWayActionHandler.process(OneWayActi
    andler.java:47)
    at oracle.tip.mediator.service.ActionProcessor.onMessage(ActionProces
    .java:64)
    at oracle.tip.mediator.dispatch.MessageDispatcher.executeCase(Message
    patcher.java:137)
    at oracle.tip.mediator.dispatch.InitialMessageDispatcher.processCase(
    tialMessageDispatcher.java:503)
    at oracle.tip.mediator.dispatch.InitialMessageDispatcher.processCases
    itialMessageDispatcher.java:401)
    at oracle.tip.mediator.dispatch.InitialMessageDispatcher.processNorma
    ses(InitialMessageDispatcher.java:284)
    at oracle.tip.mediator.dispatch.InitialMessageDispatcher.processCases
    itialMessageDispatcher.java:251)
    at oracle.tip.mediator.dispatch.InitialMessageDispatcher.dispatch(Ini
    lMessageDispatcher.java:143)
    at oracle.tip.mediator.serviceEngine.MediatorServiceEngine.process(Me
    torServiceEngine.java:848)
    at oracle.tip.mediator.serviceEngine.MediatorServiceEngine.post(Media
    ServiceEngine.java:624)
    at oracle.integration.platform.blocks.mesh.AsynchronousMessageHandler
    Post(AsynchronousMessageHandler.java:142)
    at oracle.integration.platform.blocks.mesh.MessageRouter.post(Message
    ter.java:194)
    at oracle.integration.platform.blocks.mesh.MeshImpl.post(MeshImpl.jav
    15)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorIm
    java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAc
    sorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingRefle
    on(AopUtils.java:307)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.invok
    inpoint(ReflectiveMethodInvocation.java:182)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proce
    ReflectiveMethodInvocation.java:149)
    at oracle.integration.platform.metrics.PhaseEventAspect.invoke(PhaseE
    tAspect.java:59)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proce
    ReflectiveMethodInvocation.java:171)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDyn
    cAopProxy.java:204)
    at $Proxy299.post(Unknown Source)
    at oracle.integration.platform.blocks.soap.WebServiceEntryBindingComp
    nt.doMessageProcessing(WebServiceEntryBindingComponent.java:1271)
    at oracle.integration.platform.blocks.soap.WebServiceEntryBindingComp
    nt.processIncomingMessage(WebServiceEntryBindingComponent.java:859)
    at oracle.integration.platform.blocks.soap.FabricProvider.processMess
    (FabricProvider.java:113)
    at oracle.j2ee.ws.server.provider.ProviderProcessor.doEndpointProcess
    (ProviderProcessor.java:1187)
    at oracle.j2ee.ws.server.WebServiceProcessor.invokeEndpointImplementa
    n(WebServiceProcessor.java:1081)
    at oracle.j2ee.ws.server.provider.ProviderProcessor.doRequestProcessi
    ProviderProcessor.java:581)
    at oracle.j2ee.ws.server.WebServiceProcessor.processRequest(WebServic
    ocessor.java:232)
    at oracle.j2ee.ws.server.WebServiceProcessor.doService(WebServiceProc
    or.java:192)
    at oracle.j2ee.ws.server.WebServiceServlet.doPost(WebServiceServlet.j
    :459)
    at oracle.integration.platform.blocks.soap.FabricProviderServlet.doPo
    FabricProviderServlet.java:507)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
    at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.
    (StubSecurityHelper.java:227)
    at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSec
    tyHelper.java:125)
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.
    a:300)
    at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl
    va:56)
    at oracle.security.jps.ee.http.JpsAbsFilter$1.run(JpsAbsFilter.java:1
    at java.security.AccessController.doPrivileged(Native Method)
    at oracle.security.jps.util.JpsSubject.doAsPrivileged(JpsSubject.java
    3)
    at oracle.security.jps.ee.util.JpsPlatformUtil.runJaasMode(JpsPlatfor
    il.java:413)
    at oracle.security.jps.ee.http.JpsAbsFilter.runJaasMode(JpsAbsFilter.
    a:94)
    at oracle.security.jps.ee.http.JpsAbsFilter.doFilter(JpsAbsFilter.jav
    61)
    at oracle.security.jps.ee.http.JpsFilter.doFilter(JpsFilter.java:71)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl
    va:56)
    at oracle.dms.servlet.DMSServletFilter.doFilter(DMSServletFilter.java
    6)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl
    va:56)
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAc
    n.wrapRun(WebAppServletContext.java:3715)
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAc
    n.run(WebAppServletContext.java:3681)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(Authentic
    dSubject.java:321)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.ja
    120)
    at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebA
    ervletContext.java:2277)
    at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServl
    ontext.java:2183)
    at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImp
    ava:1454)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:207)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:176)
    >

    Hi Surfraz,
    Did you go through this link?
    http://docs.oracle.com/cd/E21764_01/integration.1111/e10231/adptr_file.htm#BABCFDGC
    Regards,
    Neeraj Sehgal

  • Getting error in File adapter while using ChunkSize

    Hi,
    I am trying to move a large file using the ChunkSize property of the file adapter as shown below. However I am getting the error during the run time in the SOA server.
    Code used:
    <adapter-config name="SyncReadFile" adapter="File Adapter" wsdlLocation="SyncReadFile.wsdl" xmlns="http://platform.integration.oracle/blocks/adapter/fw/metadata">
      <connection-factory location="eis/FileAdapter"/>
      <endpoint-interaction portType="SynchRead_ptt" operation="SynchRead">
        <interaction-spec className="oracle.tip.adapter.file.outbound.FileIoInteractionSpec">
          <property name="DeleteFile" value="true"/>
          <property name="PhysicalDirectory" value="C:\JDeveloper\mywork\JCAPs\ChunkFileRead\Input"/>
          <property name="FileName" value="overwriteme.txt"/>
          <property name="ChunkSize" value="55"/>
        </interaction-spec>
      </endpoint-interaction>
    </adapter-config>
    Error:
    Exception occured when binding was invoked. Exception occured during invocation of JCA binding: "JCA Binding execute of Reference operation 'SynchRead' failed due to: Exception occured when binding was invoked. Exception occured during invocation of JCA binding: "Could not instantiate InteractionSpec oracle.tip.adapter.file.outbound.FileIoInteractionSpec due to: Cannot set JCA WSDL Property. Error while setting JCA WSDL Property. Property setChunkSize is not defined for oracle.tip.adapter.file.outbound.FileIoInteractionSpec Please verify the spelling of the property. ". The invoked JCA adapter raised a resource exception. Please examine the above error message carefully to determine a resolution. ". The invoked JCA adapter raised a resource exception. Please examine the above error message carefully to determine a resolution.
    Please suggest a resolution to this. I am using Jdeveloper 11.1.1.7.0

    Thank Daniel for the reply.
    But what is the impact user messaging service has here.  Can it happen that my oracle.tip.adapter.file.outbound.FileIoInteractionSpec is corrupted?
    Thanks
    Santanu

  • OSB Error in deploying a project with jca file adapter

    Hi,
    I am facing an issue where I am getting an error when deploying a service from Eclipse. I am using OSB/SOA 11.1.1.5 2 node cluster. I have an OSB service where I am writing to a file and am using file adapater. I created a composite with file adapter to write a file then imported .jac, .wsdl and composite into eclipse and generated a business service out of .jca file. When I deploy the project from eclipse I am getting the below error and am not able to deploy the project.
    Conflicts found during publish.
    Invalid JCA transport endpoint configuration, exception: javax.resource.ResourceException: Cannot locate Java class oracle.tip.adapter.file.outbound.FileInteractionSpec
    Cannot locate Java class oracle.tip.adapter.file.outbound.FileInteractionSpec
    I have FileAdapter deployed and pointed to OSB manage servers cluster. Here is a snippet of config.xml.
    <app-deployment>
        <name>FileAdapter</name>
        <target>SOA_Cluster,OSB_Cluster</target>
        <module-type>rar</module-type>
        <source-path>/app/oracle/fmw/Oracle_SOA1/soa/connectors/FileAdapter.rar</source-path>
        <deployment-order>321</deployment-order>
        <plan-dir xsi:nil="true"></plan-dir>
        <plan-path>/app/oracle/shared/SOA_Cluster/dp/FileAdapterPlan.xml</plan-path>
        <security-dd-model>DDOnly</security-dd-model>
        <staging-mode>nostage</staging-mode>
      </app-deployment>
    Also inside console -> deployments  -> FileAdapter -> Targets and OSB_Cluster is checked also.
    Here is the .jca file
    <adapter-config name="writeFile" adapter="File Adapter" wsdlLocation="writeFile.wsdl" xmlns="http://platform.integration.oracle/blocks/adapter/fw/metadata">
      <connection-factory location="eis/HAFileAdapter"/>
      <endpoint-interaction portType="Write_ptt" operation="Write">
        <interaction-spec className="oracle.tip.adapter.file.outbound.FileInteractionSpec">
          <property name="PhysicalDirectory" value="C:\ORACLE"/>
          <property name="Append" value="false"/>
          <property name="FileNamingConvention" value="a_%SEQ%.doc"/>
          <property name="NumberMessages" value="1"/>
        </interaction-spec>
      </endpoint-interaction>
    </adapter-config>
    Any idea what might be wrong.
    Thanks.

    I already have the fileAdapter JNDI is already configured in console. The error I am getting is during the deployment
    Conflicts found during publish.
    Invalid JCA transport endpoint configuration, exception: javax.resource.ResourceException: Cannot locate Java class oracle.tip.adapter.file.outbound.FileInteractionSpec
    Cannot locate Java class oracle.tip.adapter.file.outbound.FileInteractionSpec
    Thanks

  • Error dynamic File Name in Receiver File Adapter

    Hi all,
    Dynamic file name for Receiver file Adapter Problem
    my multi mapping look like this in design mode
    messages
         message1
              SD01_E
                   FileName
                   row
         message2
              SD02_E
                   FileName
                   row
    by processing the xml look like this:
    <ns2:SD01_E xmlns:ns2="urn:lsv.de/SAP/XXX">
    <FileName>L40SA939.xiConstant</FileName>
    - <row>
    or
    <ns2:SD02_E xmlns:ns2="urn:lsv.de/SAP/XXX">
    <FileName>L40SA939.xiConstant</FileName>
    - <row>
    in file receivere adapter  i have try this but it dos not work
    payload:SD01_E,1,FileName,1
    Error:com.sap.engine.lib.xml.parser.ParserException: XMLParser: No data allowed here: (hex) 0(:main:, row:1, col:0)
    is there any way to have access to Filename  in different root elements??
    regards
    Ralf

    Hi Ralf,
    i think, you need for each XML msg (each different root element) a new adapter -> a new IF determination, new rec agreement and a new channel.
    Regards,
    Udo

  • Receiver file adapter not responding

    Hi guys,
    I have 2 interfaces in XI development system that make use of receiver file adapter in order to receive some .txt files. Although these communication channels used to work until yesterday, for some strange reason they stopped functioning, but only in development system. However, I cannot see any error in Runtime Workbench (Communication channel monitoring), it's status is "correctly configured and started" and has a green sign. But, when I sent a file from sender adapter, it is sent correctly, but it never gets received from receiver communication channel.
    There is no error in SXMB_MONI either.
    In XI production system, the same interfaces are functioning well.
    Any ideas?
    Best Regards
    --Evaggelos

    Hi Amit,
    I went into Message Monitoring for this interface and I can see all the messages for the last 24 hours that should be written into a file that have status "to be delivered".
    When I go into Details -->Audit Log  for a single message:
    2007-06-13 11:49:33 Success Processing child message of multi-message with message ID ff896d50-198a-11dc-cdfa-00145e694b16
    2007-06-13 11:49:33 Success Using connection File_http://sap.com/xi/XI/System. Trying to put the message into the receive queue.
    2007-06-13 11:49:33 Success Message successfully put into the queue.
    And in Message Data there is the following information:
    Status To Be Delivered
    Repeatable Yes
    Cancelable Yes
    Error Category  
    Error Code  
    Start 13.06.2007 11:49:33
    End  
    Sender Party  
    Sender Service TPBS_GR
    Receiver Party  
    Receiver Service TPBS_GR
    Interface http://famar.gr:LoyaltyDataMNSToSRS
    MI_LoyaltyDataMNSToGR_IB
    Quality of Service Exactly Once
    Message b2685674-7626-5141-bfa1-13155ad0d25a
    Reference  
    Conversation ID  
    Serialization Context  
    Direction INBOUND
    Message Type Recv
    Profile XI
    Connection File_http://sap.com/xi/XI/System
    Transport HTTP
    End Point http://fmgralxi01:50000/MessagingSystem/receive/AFW/XI
    Authorization  
    Sequential Number 0
    Number of Retries 3
    Failed 0
    Retries 300000
    Valid to  
    Persist Until 13.07.2007 11:49:33
    Schedule Time 13.06.2007 11:49:33

  • Using FileIOInteractionSpec Class For Moving File using File Adapter

    Hi All,
    I am tring to use FileIOInteractionSpec class to move a file from one location to another. The problem is that I am not able to override its properties from BPEL, here is how the FileAdapter.jca file looks like which moves the file from one location to another:
    <adapter-config name="MoveFileService" adapter="File Adapter" wsdlLocation="MoveFileService.wsdl" xmlns="http://platform.integration.oracle/blocks/adapter/fw/metadata">
    <connection-factory location="eis/FileAdapter"/>
    <endpoint-interaction portType="MoveFile_ptt" operation="MoveFile">
    <interaction-spec className="oracle.tip.adapter.file.outbound.FileReadInteractionSpec">
    <property name="DeleteFile" value="true"/>
    <property name="PhysicalDirectory" value="C:\FileRead"/>
    <property name="FileName" value="dummy.txt"/>
    </interaction-spec>
    </endpoint-interaction>
    *<endpoint-interaction portType="MoveFile_ptt" operation="Move">*
    *<interaction-spec className="oracle.tip.adapter.file.outbound.FileIoInteractionSpec">*
    *<property name="Type" value="MOVE"/>*
    *<property name="SourcePhysicalDirectory" value="C:\FileRead"/>*
    *<property name="SourceFileName" value="dummy.txt"/>*
    *<property name="TargetPhysicalDirectory" value="C:\FileRead2"/>*
    *<property name="TargetFileName" value="dummyCopy.txt"/>*
    *</interaction-spec>*
    *</endpoint-interaction>*
    </adapter-config>
    In the above code, I have hard-coded the values, and it works fine like that.
    However, when I try to override these values by defining properies in BPEL invoke's tag, the values are getting passed as null.
    Here is the invoke tag code, tried the following 2 combinations:
    <invoke name="InvokeFileMove"
    inputVariable="InvokeFileMove_MoveFile_InputVariable"
    partnerLink="MoveFileService" portType="ns1:MoveFile_ptt"
    operation="Move" bpelx:invokeAsDetail="no">
    <bpelx:inputProperty name="jca.file.SourcePhysicalDirectory" value="C:\FileRead"/>
    <bpelx:inputProperty name="jca.file.SourceFileName" value="dummy.txt"/>
    <bpelx:inputProperty name="jca.file.TargetPhysicalDirectory" value="C:\FileRead2"/>
    <bpelx:inputProperty name="jca.file.TargetFileName" value="dummyCopy.txt"/>
    </invoke>
    And
    <invoke name="InvokeFileMove"
    inputVariable="InvokeFileMove_MoveFile_InputVariable"
    partnerLink="MoveFileService" portType="ns1:MoveFile_ptt"
    operation="Move" bpelx:invokeAsDetail="no">
    <bpelx:inputProperty name="SourcePhysicalDirectory" value="C:\FileRead"/>
    <bpelx:inputProperty name="SourceFileName" value="dummy.txt"/>
    <bpelx:inputProperty name="TargetPhysicalDirectory" value="C:\FileRead2"/>
    <bpelx:inputProperty name="TargetFileName" value="dummyCopy.txt"/>
    </invoke>
    These four properties are not visible in Invoke -> Properties tab as well.
    Could you please suggest how can I override the jca's values for FileIOInteractionSpec class?

    I have successfully used this API and it works fine.
    Try to use variables which contains values like "dummyCopy.txt" etc.
    Here is what I used :
    <bpelx:inputProperty name="jca.file.SourceDirectory"
    variable="inputDirectory"/>
    <bpelx:inputProperty name="jca.file.SourceFileName"
    variable="inputFileName"/>
    <bpelx:inputProperty name="jca.file.TargetDirectory"
    variable="destinationDirectory"/>
    <bpelx:inputProperty name="jca.file.TargetFileName"
    variable="inputFileName"/>
    Pass approppriate values into the above given variables and try.
    Hopefully it should work.
    Let us know, how it goes !
    <Puneet/>

  • Dynamic File naming in reciever File Adapter

    Hi all,
    I am using a reciever File adapter and my requirement is to generate 3 different file names based on the value of an element from the Payload.For example..
    Say in Payload for the first Occurence of the Data segment which contains Field-1 and Field-1 Contains value X then filename should be  X.CSV,
    same as
    For the next occurence of the Data Segment if the Value of Field-1 is Y then File name should be Y.CSV.
    Similarly For Z as well.
    This is something like this...
    SOurce Structure
    ================
    IDOC
    DATA SEGMENT-1
    Field-1---> X
    Field-2
    Field 10
    DATA SEGMENT-2
    Field-1
    Field-2
    Field 10
    DATA SEGMENT-3
    Field-1
    Field-2
    Field 10
    then the output and filenames  should be...
    X.CSV
    Field-1
    Field-2
    Field-3
    Y.CSV
    Field-1
    Field-2
    Field-3
    Z.CSV
    Field-1
    Field-2
    Field-3
    Kindly help, is there any way i can do this using File Adapter Configurations .Please suggest.

    Hi,
    you can use a small business process.
    There you will receiver the message in one receive step.
    than you need a transformation Step with a mapping which split your message to several messages.
    At least you have now a Multi Row container with one message for each data segment.
    For sending each messages of this multirow container you need a block in BPM.. this you have to set to parallel processing.
    Inside this block you have a sending step which send the single message.
    and without BPM take a look at this Weblog(you need SP14):
    <a href="/people/michal.krawczyk2/blog/2005/06/28/xipi-faq-frequently-asked-questions me</a>
    Regards,
    Robin

  • Receiver file adapter not functioning

    Hi guys,
    We have developed some interfaces that are exporting some .txt files in ftp locations and therefore they make use of receiver file adapter. Although the receiver file adapter used to function properly some days ago, for some strange reason, it stopped receiving any files. This happens only in XI development system but not in XI production system. In XI development, in Runtime Workbench --> Communication Channel monitoring, I can see this communication channel's status as correctly configured and started, with a green sign on the right, but it is not responding when some files are sent to it, and therefore there are no output files in target directory.
    Any ideas?? It is urgent.
    Best Regards
    Evaggelos

    Udo,
    Hi Amit,
    I went into Message Monitoring for this interface and I can see all the messages for the last 24 hours that should be written into a file that have status "to be delivered".
    When I go into Details -->Audit Log  for a single message:
    2007-06-13 11:49:33 Success Processing child message of multi-message with message ID ff896d50-198a-11dc-cdfa-00145e694b16
    2007-06-13 11:49:33 Success Using connection File_http://sap.com/xi/XI/System. Trying to put the message into the receive queue.
    2007-06-13 11:49:33 Success Message successfully put into the queue.
    And in Message Data there is the following information:
    Status To Be Delivered
    Repeatable Yes
    Cancelable Yes
    Error Category  
    Error Code  
    Start 13.06.2007 11:49:33
    End  
    Sender Party  
    Sender Service TPBS_GR
    Receiver Party  
    Receiver Service TPBS_GR
    Interface http://famar.gr:LoyaltyDataMNSToSRS
    MI_LoyaltyDataMNSToGR_IB
    Quality of Service Exactly Once
    Message b2685674-7626-5141-bfa1-13155ad0d25a
    Reference  
    Conversation ID  
    Serialization Context  
    Direction INBOUND
    Message Type Recv
    Profile XI
    Connection File_http://sap.com/xi/XI/System
    Transport HTTP
    End Point http://fmgralxi01:50000/MessagingSystem/receive/AFW/XI
    Authorization  
    Sequential Number 0
    Number of Retries 3
    Failed 0
    Retries 300000
    Valid to  
    Persist Until 13.07.2007 11:49:33
    Schedule Time 13.06.2007 11:49:33

  • Error Handling in File Adapter

    I have been working on a requirement where the file adapter picks up the file and gives to the BPEL for processing the data.
    So, in order to do Error Handling for file adapter, i have been reading the Oracle documentation for technology adapters. In that, some of the
    points which i felt valuable for my error handling when using file adapter are the uniqueMessageSeparator property, fault-policies for rejected messages,
    and one of the action for rejected messages could be writing the payload to a file or invoking any other webservice.
    In my composite, i have configured the file adapter as a service for reading files, and i defined the xsd using the native format builder....If i put some data like 'aaaa' in the attribute of type integer , the .csv file is being picked up and its being passed to the BPEL without any error ? I believe there should be a translation error...right...
    But i am not getting the error, please tell me if anything is wrong in my xsd....
    Here is my xsd...
    <?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"
    nxsd:hasHeader="true"
    nxsd:headerLines="1"
    nxsd:headerLinesTerminatedBy="${eol}"
    >
    <xsd:element name="names">
    <xsd:complexType>
    <xsd:sequence>
    <xsd:element name="name" minOccurs="1" maxOccurs="unbounded">
    <xsd:complexType>
    <xsd:sequence>
    <xsd:element name="FirstName" type="xsd:string" nxsd:style="terminated" nxsd:terminatedBy="," />
    <xsd:element name="LastName" type="xsd:string" nxsd:style="terminated" nxsd:terminatedBy="," />
    <xsd:element name="Number" type="xsd:integer" nxsd:style="terminated" nxsd:terminatedBy="${eol}" />
    </xsd:sequence>
    </xsd:complexType>
    </xsd:element>
    </xsd:sequence>
    </xsd:complexType>
    </xsd:element>
    </xsd:schema>
    And for DB Adapter, there is a property called SchemaValidation, i think that is not there for File adapter, by default it will take care of validation i guess....In another composite, my file adapter is picking up the .xml file and if i put any wrong data over there, that is working fine, i am getting the translation error, but only here in the case of csv file, i am not getting the error. Experts, please help me in this regard...I am using SOA 11G
    Thanks,
    Naresh

    Hi Yatan,
    Thanks for the reply. I did the same way, where my composite is picking up an XML file and translation error is coming. Even the fault policies are working fine, like writing to a file and even invoking other web service. Its really good that you have achieved the same thing in csv files. But the same thing i am unable to achieve when my file adapter is picking up the csv file. I really cant understand where i am doing wrong.
    here is my XSD which i defined through my native builder format...
    <?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/FileRecv"
    targetNamespace="http://TargetNamespace.com/FileRecv"
    elementFormDefault="qualified"
    attributeFormDefault="unqualified"
    nxsd:version="NXSD"
    nxsd:stream="chars"
    nxsd:encoding="US-ASCII"
    nxsd:hasHeader="true"
    nxsd:headerLines="1"
    nxsd:headerLinesTerminatedBy="${eol}"
    >
    <xsd:element name="Roots">
    <xsd:complexType>
    <xsd:sequence>
    <xsd:element name="FirstName" type="xsd:string" nxsd:style="terminated" nxsd:terminatedBy="," nxsd:quotedBy="&quot;" />
    <xsd:element name="LastName" type="xsd:string" nxsd:style="terminated" nxsd:terminatedBy="," nxsd:quotedBy="&quot;" />
    <xsd:element name="Number" type="xsd:integer" nxsd:style="terminated" nxsd:terminatedBy="${eol}" nxsd:quotedBy="&quot;" />
    </xsd:sequence>
    </xsd:complexType>
    </xsd:element>
    </xsd:schema>
    the jca file ..
    <adapter-config name="FileRecv" adapter="File Adapter" wsdlLocation="FileRecv.wsdl" xmlns="http://platform.integration.oracle/blocks/adapter/fw/metadata">
    <connection-factory location="eis/FileAdapter" UIincludeWildcard="n*.csv"/>
    <endpoint-activation portType="Read_ptt" operation="Read">
    <activation-spec className="oracle.tip.adapter.file.inbound.FileActivationSpec">
    <property name="DeleteFile" value="true"/>
    <property name="MinimumAge" value="0"/>
    <property name="PhysicalDirectory" value="C:\files"/>
    <property name="Recursive" value="false"/>
    <property name="PollingFrequency" value="5"/>
    <property name="IncludeFiles" value="n.*\.csv"/>
    <property name="UseHeaders" value="false"/>
    </activation-spec>
    </endpoint-activation>
    </adapter-config>
    I told that the file will contain only 1 record while defining xsd and i kept a record whose values are John , Peter and akjdkjdskj.
    Now if the data is like above, the file is still getting picked up without any translation error and the BPEL is getting completed successfully...
    Is it possible for you to send your sample project and the csv file from which you have defined the xsd to me if you dont mind ?
    Thanks,
    Naresh

  • Additional file in File adapter

    Hi,
    I have two File scenario inbound and outbound.
    Outbound:
    In this scenario we are sending a File using File Adapter.Our requirement is we have to count number of data records and then write the number of records in other file.We won't be writing number of total records in same data file but other file which will have only value for  total number of records and the extension of this file will be different.
    Inbound:
    In Inbound we have two file one with data and other with total number of records in first file.We need to pick both files and then validate in sap  that total number of records from first file is equal to value in the second file.
    Can we achieve this without using BPM?If yes please let me know all steps required.
    If we have to use BPM then how  much file size  can BPM handle.Any one has some experience using BPM for large files.
    Thanks in advance.
    Rekha.

    Hi Rekha,
    you can realize the outbound scenario without BPM with a message split : <a href="/people/jin.shin/blog/2006/02/07/multi-mapping-without-bpm--yes-it146s-possible without BPM - Yes, it’s possible!</a>
    The inbound scenario can be done with a <a href="/people/alessandro.guarneri/blog/2006/03/27/sap-xi-lookup-api-the-killer.
    BPM should be able to handle large files. It is only slow. So if you have to much of large files it can be a problem. The bottle neck for large files is assumedly the mapping. Depending on mapping content, hardware and kind of mapping in this sequence files of 40 - 200 MB should be mappable (appreciated).
    Regards,
    Udo

  • File Adapter does not process the same file twice

    SOA: 11.1.1.4 (non-HA).
    I have a file adapter that triggers when a new file gets to a directory; the file is not deleted after the process triggers.
    The process is supposed to call other services via a mediator and if any remote fault happens it should rollback automatically and re-trigger with the same file at the next polling interval.
    I have literally 3 scenarios:
    1). The file gets picked up once, the process fails and the file is never picked up again.
    Msg in log: The file : /xx/xx/xx/abc.xml is being ignored as it has already been processed
    2). If the mediator only routes to one service after the file gets picked up, it works as expect (that is rollback and restart at the next polling interval). If it has more than one sequential routing rule, I see the same error as above.
    3). File does not get picked up EVEN if I "touch" or rename the file.
    Msg in Log:
    File Adapter ProcessName Poller enqueuing file for processing :/xx/xx/xx/abc.xml
    File Adapter ProcessName Ignoring File : abc.xml as it is already enqued for processing.
    I have already checked, there is no permission issue.
    This is what my .jca file looks like:
    <adapter-config name="getFile" adapter="File Adapter" wsdlLocation="getFile.wsdl" xmlns="http://platform.integration.oracle/blocks/adapter/fw/metadata">
    <connection-factory location="eis/FileAdapter" UIincludeWildcard="*"/>
    <endpoint-activation portType="Read_ptt" operation="Read">
    <activation-spec className="oracle.tip.adapter.file.inbound.ScalableFileActivationSpec">
    <property name="DeleteFile" value="false"/>
    <property name="MinimumAge" value="5"/>
    <property name="SingleThreadModel" value="true"/>
    <property name="PhysicalDirectory" value="/xx/xx"/>
    <property name="Recursive" value="false"/>
    <property name="PollingFrequency" value="20"/>
    <property name="IncludeFiles" value=".*"/>
    <property name="UseHeaders" value="true"/>
    <property name="MaxRaiseSize" value="5"/>
    <property name="ListSorter" value="oracle.tip.adapter.file.inbound.listing.TimestampSorterAscending"/>
    </activation-spec>
    </endpoint-activation>
    </adapter-config>
    Thanks for looking into it in advance.
    Any help with the error messages will be appreciated.

    You have to use MOVE operation, if there is any remote exception occured, then move the file to someother folder and again move back to the same folder where the file pickup will start.
    In that way you will be use the same file picked up next time when the polling happens.
    It is considered good etiquette to reward answerers with points (as "helpful" - 5 pts - or "correct" - 10pts).
    Thanks,
    Vijay

  • Receiver File Adapter with File content Conversion

    I have a requirement to send 2 different files to the target directory. Source is the same and different mapping for the 2 files.
    This I can achieve through multi-mapping but there is a problem. How can I use the File content for receiver File adapter which is using Multimapping.
    The structure of the 2 files also different.

    Why would you need FCC on receiver file adapter? If you need different files to be generated from the source, you could create two receiver channels with different mappings and just add them to the same Receiver Detemination. Isn't feasible?

Maybe you are looking for