• Oracle SOA通过添加Sensor过滤实例(二)


    在Composite中添加Sensor后,在EM中Sensor的值有时候是一个xml字符串,并不是实际值,而且通过sensor字段查实例只能用"类似"来查询不能使用“相等”,更有时候当值是xml类型的时候,通过sensor关键字查询不到实例。

    登录到SOA数据源数据库,通过表COMPOSITE_INSTANCE_ID找到实例sensor信息,如下

    这里有个VALUE_TYPE字段,如果该字段为2005则sensor的值就以xml的形式保存在CLOB_VALUE里,如果该字段的值为12则sensor就以实际值保存在STRING_VALUE字段里,因此一种解决方法就是将CLOB_VALUE里面的值写到STRING_VALUE再将VALUE_TYPE改为12,但最好的解决方法是在composite中修改sensor的值类型。

    回到JDeveloper中,一般JCA适配器组件比如DBAdapter,BAMAdapter等都会从数据源中自动解析数据类型生成的相应的xsd文件,如果是字符串类型,则做如下的解析:

    <element minOccurs="0" name="_ID"> 
      <simpleType> 
        <restriction base="xsd:string"> 
          <maxLength value="100"/> 
        </restriction> 
      </simpleType> 
    </element>

    系统将字符串类型解析成了simpleType类型,为该字段添加sensor后,打开sensor.xml文件

    <?xml version="1.0" encoding="UTF-8"?>
    <sensors xmlns="http://xmlns.oracle.com/bpel/sensor">
        <sensor sensorName="ID" kind="reference" target="undefined" filter="" xmlns:imp1="http://xmlns.oracle.com/bam">
            <referenceConfig reference="InsertOrder" expression="$in._Order1Collection/imp1:_Order1Collection/imp1:_Order1/imp1:_ID" operation="writetoBAM" outputDataType="anonymous" outputNamespace="anonymous"/>
        </sensor>
    </sensors>

    outputDataType的类型为anonymous,如果类型为anonymou则sensor的值就会以xml的形式存储。

    找到原因后解决方法就很简单,一个是修改xsd文件将类型修改为xsd:string类型,比如上面的xml可以做如下修改

    <element  name="_ID" type="xsd:string" /> 

    然后删除sensor.xml文件重新添加sensor,但这样做会丢失验证信息,不建议修改xsd文件。

    最好的解决方法是修改sensor.xml文件,将outputDataType修改为string并修改名称空间,如上面的sensor.xml可以做如下修改

    <?xml version="1.0" encoding="UTF-8"?>
    <sensors xmlns="http://xmlns.oracle.com/bpel/sensor">
        <sensor sensorName="ID" kind="reference" target="undefined" filter="" xmlns:imp1="http://xmlns.oracle.com/bam">
            <referenceConfig reference="InsertOrder" expression="$in._Order1Collection/imp1:_Order1Collection/imp1:_Order1/imp1:_ID" operation="writetoBAM" outputDataType="string" outputNamespace="http://www.w3.org/2001/XMLSchema"/>
        </sensor>
    </sensors>

    这样就可以解决EM中sensor的值以xml形式出现的问题,也可以对sensor的值进行精确查找。

    PS:如果修改outputDataType后发现EM中sensor没有值,那可能是sensor记录的字段不是字符串类型,则要做相应的类型转换。

  • 相关阅读:
    CSS命名规范
    css的img移上去边框效果及CSS透明度
    css动画之波纹
    css翻页样式
    关于Chrome的开发15个小技巧
    css三角形
    css限制图片大小,避免页面撑爆
    网易2016研发project师笔试题
    遇到 Form 性能问题怎么办 performance issue
    一个美丽的java烟花程序
  • 原文地址:https://www.cnblogs.com/weisuoc/p/3406273.html
Copyright © 2020-2023  润新知