zoukankan      html  css  js  c++  java
  • 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记录的字段不是字符串类型,则要做相应的类型转换。

  • 相关阅读:
    【SaltStack官方版】—— MANAGING THE JOB CACHE
    《SaltStack技术入门与实践》—— 实践案例 <中小型Web架构>2 Keepalived
    《SaltStack技术入门与实践》—— 实践案例 <中小型Web架构>1 初始化和Haproxy
    《SaltStack技术入门与实践》—— Peer
    多台主机之间共用私钥,实现免密登陆
    王者荣耀冒险模式刷金币
    2019-03-26 SpringBoot项目部署遇到跨域问题,记录一下解决历程
    关于gitignore无效的一些记录
    vlookup
    ubuntu ifconfig只有lo没有ens33的问题
  • 原文地址:https://www.cnblogs.com/weisuoc/p/3406273.html
Copyright © 2011-2022 走看看