Как переименовать любой компонент в потоке, разработанном с использованием Oracle Integration Cloud Service (ICS)? - PullRequest
0 голосов
/ 04 сентября 2018

Я разработал простой поток в выпуске 13 Oracle Cloud Integration Service (ICS). Но нет возможности переименовать или удалить любые компоненты, которые добавляются в поток. Ниже приведен скриншот

ics flow

В приведенном выше потоке пытается переименовать AccountCreateEvent, но не нашел для этого никакой опции.

1 Ответ

0 голосов
/ 06 октября 2018

Короткий ответ

Если вы используете Integration Cloud Service или Oracle Integration Cloud, в веб-интерфейсе нет функции, позволяющей изменить имя адаптера внутри интеграции. Эти имена предназначены только для целей документирования и не предоставляют никаких функциональных ценностей, кроме читабельности и условности. Однако, если вы похожи на меня, вы цените удобство и читабельность.

Более длинный ответ

Существует способ изменить имя, экспортировав или загрузив артефакт OSB. Я опишу, как сделать это вручную, затем приведу краткое описание того, как сделать это более подходящим способом (с некоторой справочной информацией о том, что ICS на самом деле находится под одеялом). Кроме того, если вы не получаете никаких ответов от переполнения стека, Oracle имеет очень активный форум Customer Cloud Connect , и вы также можете разместить SR

1. Вручную

Вы можете обновить имя вручную, изменив подчеркивающий XML экспортного проекта. Сначала экспортируйте ваш проект, как показано ниже export image

При экспорте будет загружен файл с расширением 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 Integration Cloud Service - это просто упрощенная облачная адаптация Oracle Service Bus (сокращенно OSB ). OSB является интеграционным компонентом Oracle SOA (набора приложений, которые составляют платформу с полным сервисом). ICS работает на виртуальной машине Oracle Linux с OSB. Ваши интеграции на самом деле являются просто OSB-композитами и фактически работают на OSB (которая полностью установлена ​​на виртуальной машине, на которой работает ICS). Если вам нужны доказательства, перейдите к https://your -instance-name: 443 / soa-infra , и вы увидите, что ваша интеграция указана как составная часть SOA.

Если вы используете последнюю версию, ваша среда выполнения ICS должна быть SOA 12c (вероятно, 12.2.1). Если вы действительно хотите ознакомиться с платформой ICS, я предлагаю вам загрузить Oracle SOA Suite для 12c (IDE на основе JDeveloper со всеми предварительно установленными плагинами SOA). Затем внутри ICS найдите и интегрируйте и загрузите артефакты (не экспортируйте).

Установите JDeveloper (это займет несколько часов), затем откройте JDeveloper и создайте новое Приложение Oracle Service Bus с проектом Service Bus

OSB

Импорт нового ресурса служебной шины

OSB Resource

Выберите Resource / zip, затем найдите свой zip-артефакт.

artifact

Ваш проект теперь будет выглядеть так

SOA project

Вы теперь превратили свою интеграцию ICS в композит SOA! Вы можете сделать те же правки здесь, но что более важно, это позволит вам проверить структуру подчеркивания, посмотреть, как она соответствует OSB / SOA и т. Д. ICS - отличный инструмент для простых проектов, но если вам нужно сделать более сложные вещи вам абсолютно необходимо понять, как работает исполняемый SOA, и использовать его для расширения функциональности, отсутствующей в веб-интерфейсе ICS / OIC.

В качестве примечания, это также можно сделать с помощью Process Cloud, экспортировав приложение как exp и импортировав его как проект BPM.

...