如何正确地将序列插入 WSO2 ESB 流程?

How to correctly insert a sequence into the WSO2 ESB flow?

我绝对是 WSO2 ESB 的新手,我对如何正确 "refactor" 我的项目有以下疑问。

我有一个运行良好的项目。这个项目的规模越来越大,我对如何保持整洁有一些疑问。

尽量详细说明情况。

一开始我只有一个API。 API 流程非常复杂,所以我将其分成多个序列。

所以我有主要的 API 文件,像这样:

<?xml version="1.0" encoding="UTF-8"?>
<api context="/MY_API_1" name="MY_API_1" xmlns="http://ws.apache.org/ns/synapse">
    <resource methods="GET" uri-template="/{sampleId}">
        <inSequence>
            <property expression="get-property('uri.var.sampleId')" name="samplePK" scope="default" type="STRING"/>
            <log level="custom">
                <property expression="$ctx:samplePK" name="SAMPLE ID (PK)"/>
            </log>

            <!-- DO SOME OPERATIONS -->

            <!-- GO TO THE CODE DEFINED INTO THE sampleDataSequence -->
            <sequence key="sampleDataSequence"/>

            <!-- DO SOME OTHER OPERATION THAT QUIT THE "MY_API_1" API FLOW -->

        </inSequence>
        <outSequence>
            <send/>
        </outSequence>
        <faultSequence/>
    </resource>
</api>

正如您在前面的代码中看到的,我指定在某个点将流定义定义到 sampleDataSequence 序列中,即这个文件 \glis-toolkit\glis-toolkit\src\main\synapse-config\sequences\sampleDataSequence.xml(所以它被定义到我项目的sequences文件夹中)。

反过来也进入sampleDataSequence.xml有一些sequences定义(因为我的流程比较大,我把它分成了不同的逻辑部分)

它工作得很好。问题是现在我正在创建第二个 API 必须按不同的顺序拆分。所以我知道我可以将所有这些新序列放入我项目的同一个 \synapse-config\sequences 文件夹中。但我认为这非常可怕,因为我会将大量序列文件放入与不同 API 相关的同一文件夹中,从而产生混乱。

有没有办法把新API的序列文件放到不同的文件夹中?或 \synapse-config\sequences 文件夹的子文件夹(类似于:**\synapse-config\sequences\myApi2**)

我的问题是(据我所知)要在流程中插入一个序列,我会做类似的事情:

<sequence key="mySequence"/>

将自动从 \synapse-config\sequences 文件夹插入 mySequence.xml 文件内容。

我能否指定 mySequence.xml 文件位于另一个文件夹或 \synapse-config\sequences[=47= 的子文件夹中]文件夹?

如果将序列移至注册表资源项目,可能会更容易按照您的意愿组织序列。然后您可以在适当的文件结构中引用您的序列:

<sequence key="gov:/sequences/myApi2/mySequence"/>

不要忘记将您的注册表资源项目添加到您的 CAR 项目中,以便这些序列与您的 esb 配置项目的其余部分一起部署。