2

我在 Oracle 集成云服务 (ICS) 版本 13 中开发了一个简单的流程。但是没有选项可以重命名或删除正在添加到流程中的任何组件。下面是屏幕截图

集成电路流

在上述流程中,尝试重命名“AccountCreateEvent”,但没有找到任何选项。

4

1 回答 1

4

简答

如果您使用的是 Integration Cloud Service 或 Oracle Integration Cloud,则 Web 界面中没有可让您更改集成内适配器名称的功能。这些名称仅用于文档目的,不提供超出可读性和约定的任何功能价值。但是,如果您像我一样重视约定和可读性。

更长的答案

有一种方法可以通过导出或下载 OSB 工件来更改名称。我将概述如何手动执行此操作,然后简要说明如何以更合适的方式执行此操作(提供一些背景信息,说明 ICS 到底是什么)。此外,如果您没有收到 Stack Overflow 的任何回复,Oracle 有一个非常活跃的Customer Cloud Connect论坛,您也可以提交SR

1. 手动

您可以通过修改导出项目的下划线 XML 来手动更新名称。首先导出您的项目,如下所示导出图像

导出将下载带有iar扩展名的文件。这是一个压缩文件,所以解压文件(或用 7z、winrar 等打开)。您应该看到以下目录结构

|-- icspackage
   |-- appinstance
   |-- project
      |-- the_name_of_your_project
         |-- PROJECT-INF
            |-- layout.json
            |-- project.xml
         |-- resources
         |-- ics_project_attributes.properties

我在这里只向您展示相关的目录树。显然有更多的节点,但它们并不相关。

打开您的 project.xml 文件。这是一个示例文件,其中包含一个 REST 应用程序适配器,没有 HTTP 响应正文、没有调用、没有操作,也没有转换。

<?xml version="1.0" encoding="UTF-8"?>
<ns1:icsproject xmlns="http://www.oracle.com/2014/03/ics/flow/definition" xmlns:ns1="http://www.oracle.com/2014/03/ics/project" xmlns:ns0="http://www.oracle.com/2014/03/ics/project/definition" name="project_1" version="7.3" modelType="freeform">
    <ns0:projectCode>LEAD</ns0:projectCode>
    <ns0:projectVersion>01.00.0000</ns0:projectVersion>
    <ns0:projectName>Lead</ns0:projectName>
    <ns0:percentComplete>0</ns0:percentComplete>
    <ns0:projectHasErrors>true</ns0:projectHasErrors>
    <ns0:projectHasWarnings>false</ns0:projectHasWarnings>
    <ns1:icsflow name="flow_1">
        <application name="application_8">
            <role>source</role>
            <adapter>
                <type>app-adapter</type>
                <code>IC</code>
                <name>te</name>
                <property name="hasAttachment" value="false"/>
            </adapter>
            <mep>push-sync</mep>
            <outbound name="outbound_9">
                <binding>rest</binding>
                <operation>execute</operation>
                <resourceGroup name="resourcegroup_10">
                    <resource name="resource_11" location="../resources/application_8/outbound_9/resourcegroup_10/te_REQUEST.jca" type="jca"/>
                    <resource name="resource_12" location="../resources/application_8/outbound_9/resourcegroup_10/te_REQUEST.wsdl" type="wsdl"/>
                </resourceGroup>
                <input name="input_14">
                    <role>response</role>
                    <messageContextRef refUri="messagecontext_13"/>
                </input>
                <input name="input_18">
                    <role>fault</role>
                    <subRole>APIInvocationError</subRole>
                    <messageContextRef refUri="messagecontext_17"/>
                </input>
                <output name="output_16">
                    <role>request</role>
                    <messageContextRef refUri="messagecontext_15"/>
                </output>
            </outbound>
        </application>
        <processor name="processor_1">
            <type>messageTracker</type>
            <role>messageTracker:global</role>
            <trackingVariableGroup>
                <trackingVariable>
                    <role>tracking_var_1</role>
                    <primary>true</primary>
                    <name>tracking_var_1</name>
                    <output name="output_3">
                        <messageContextRef refUri="messagecontext_2"/>
                    </output>
                </trackingVariable>
                <trackingVariable>
                    <role>tracking_var_2</role>
                    <primary>false</primary>
                    <name>tracking_var_2</name>
                    <output name="output_5">
                        <messageContextRef refUri="messagecontext_4"/>
                    </output>
                </trackingVariable>
                <trackingVariable>
                    <role>tracking_var_3</role>
                    <primary>false</primary>
                    <name>tracking_var_3</name>
                    <output name="output_7">
                        <messageContextRef refUri="messagecontext_6"/>
                    </output>
                </trackingVariable>
            </trackingVariableGroup>
        </processor>
        <processor name="processor_19">
            <type>transformer</type>
            <role>transformer:response-map</role>
            <resourceGroup name="resourcegroup_22">
                <resource name="resource_23" location="../resources/processor_19/resourcegroup_22/req_de8ec82b6bfb42da9111bce9ee4ba445.xsl" type="xslt"/>
            </resourceGroup>
            <input name="input_20">
                <messageContextRef refUri="messagecontext_15"/>
            </input>
            <output name="output_21">
                <messageContextRef refUri="messagecontext_13"/>
            </output>
            <property name="has-mappings" value="false"/>
        </processor>
        <messageContext name="messagecontext_2">
            <rootElement elementName="string" namespace="http://www.w3.org/2001/XMLSchema"/>
        </messageContext>
        <messageContext name="messagecontext_4">
            <rootElement elementName="string" namespace="http://www.w3.org/2001/XMLSchema"/>
        </messageContext>
        <messageContext name="messagecontext_6">
            <rootElement elementName="string" namespace="http://www.w3.org/2001/XMLSchema"/>
        </messageContext>
        <messageContext name="messagecontext_13">
            <resourceRef refUri="application_8/outbound_9/resourcegroup_10/resource_12"/>
            <rootElement elementName="executeResponse" namespace="http://xmlns.oracle.com/cloud/adapter/REST/te_REQUEST/types"/>
            <wsdlMessage messageName="executeResponseMessage" namespace="http://xmlns.oracle.com/cloud/adapter/REST/te_REQUEST" partName="parameters"/>
        </messageContext>
        <messageContext name="messagecontext_15">
            <resourceRef refUri="application_8/outbound_9/resourcegroup_10/resource_12"/>
            <rootElement elementName="execute" namespace="http://xmlns.oracle.com/cloud/adapter/REST/te_REQUEST/types"/>
            <wsdlMessage messageName="executeRequestMessage" namespace="http://xmlns.oracle.com/cloud/adapter/REST/te_REQUEST" partName="parameters"/>
        </messageContext>
        <messageContext name="messagecontext_17">
            <resourceRef refUri="application_8/outbound_9/resourcegroup_10/resource_12"/>
            <rootElement elementName="APIInvocationError" namespace="http://xmlns.oracle.com/cloud/generic/rest/fault/REST/te"/>
            <wsdlMessage messageName="APIInvocationError" namespace="http://xmlns.oracle.com/cloud/adapter/REST/te_REQUEST" partName="parameters"/>
            <wsdlFault faultName="APIInvocationError" namespace="http://xmlns.oracle.com/cloud/adapter/REST/te_REQUEST"/>
        </messageContext>
        <commonNamespaceMaps/>
        <orchestration>
            <receive id="r0" refUri="application_8/outbound_9/output_16" trackingRefUri="processor_1"/>
            <transformer id="m0" refUri="processor_19"/>
            <reply id="y0" refUri="application_8/outbound_9/input_14"/>
        </orchestration>
    </ns1:icsflow>
</ns1:icsproject>

您的文件将具有类似的结构,但在价值方面看起来与我的完全不同。您需要做的就是找到<name>嵌套在元素中的<adapter>元素。对您而言,该值应为AccountCreateEvent。将该值更改为您希望的新名称。

重新打包您的iar文件以包含新的project.xml文件。返回到您的 Integration Cloud 设计控制台并再次下载集成(作为备份),然后将其删除。现在导入更新集成。打开集成,您的应用适配器现在将显示更新后的名称。

2. JDeveloper 和 OSB

Oracle 的集成云服务实际上只是Oracle 服务总线(简称OSB)的一种简化的、基于云的改编。OSB 是 Oracle SOA(构成完整面向服务平台的应用套件)的集成组件。ICS 在运行 OSB 的 Oracle Linux VM 上运行。您的集成实际上只是 OSB 组合,并且实际上在 OSB 上运行(完全安装在运行 ICS 的 VM 上)。如果您想要证明,请导航到https://your-instance-name:443/soa-infra,您将看到您的集成被列为 SOA 组合。

如果您是最新的,您的 ICS 下划线运行时是 SOA 12c(可能是 12.2.1)。如果您真的想熟悉 ICS 平台,我建议您下载Oracle SOA Suite for 12c(基于 JDeveloper 的 IDE,预装了所有 SOA 插件)。然后在 ICS 中查找和集成并下载工件(不是导出)。

安装 JDeveloper(需要几个小时)然后打开 JDeveloper 并使用 Service Bus 项目创建一个新的 Oracle Service Bus 应用程序

定向刨花板

导入新的服务总线资源

定向刨花板资源

选择 Resource/zip 然后找到您的 zip 工件。

人工制品

您的项目现在看起来像这样

SOA 项目

您现在已经将您的 ICS 集成变成了 SOA 组合!您可以在此处进行相同的编辑,但更重要的是,它可以让您检查下划线结构,了解它与 OSB/SOA 的匹配度等。ICS 是简单项目的绝佳工具,但如果您需要做更复杂的事情您绝对需要了解下划线的 SOA 运行时并利用它来扩展 ICS/OIC Web 界面上不存在的功能。

附带说明一下,这也可以通过 Process Cloud 来完成,方法是将应用程序导出为 anexp并将其导入为 BPM 项目。

于 2018-10-06T13:49:31.547 回答