如何正确地将序列插入 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 配置项目的其余部分一起部署。
我绝对是 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 配置项目的其余部分一起部署。