gpt4 book ai didi

xml - 如何组织一个大的karaf blueprint.xml?

转载 作者:数据小太阳 更新时间:2023-10-29 02:29:11 25 4
gpt4 key购买 nike

我有一个 blueprint.xml 用于部署在 Karaf 3.5.6 下的 Servicemix 下的 camel 应用程序,它看起来有点类似于下面显示的内容:-

<?xml version="1.0" encoding="UTF-8"?>
<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor
license agreements. See the NOTICE file distributed with this work for additional
information regarding copyright ownership. The ASF licenses this file to
You under the Apache License, Version 2.0 (the "License"); you may not use
this file except in compliance with the License. You may obtain a copy of
the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required
by applicable law or agreed to in writing, software distributed under the
License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
OF ANY KIND, either express or implied. See the License for the specific
language governing permissions and limitations under the License. -->

<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:cxf="http://camel.apache.org/schema/blueprint/cxf"
xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0"
xsi:schemaLocation="
http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd">

<bean id="jsonRPCProcessor"
class="com.orchestratorservice.basecomponent.processor.JSONRPCProcessor">
<argument ref="myTemplate" />
<argument>
<map>

<!-- Order Endpoints -->
<entry key="getMarketplaceOrders" value-ref="getOrdersWFInfo" />
<entry key="setStatusToReadyToShip" value-ref="setStatusToReadyToShipWFInfo" />
<entry key="getOrderItemStatus" value-ref="getOrderItemStatusWFInfo" />
<entry key="updateItemStatus" value-ref="updateOrderItemStatusWFInfo" />
<entry key="createForwardManifest" value-ref="createForwardManifestWFInfo" />

<!-- ERP Endpoints -->
<entry key="ERP.insertSeller" value-ref="insertSellerWFInfo" />

</map>
</argument>
<argument ref="exceptionHandler" />
</bean>

<!-- Order Beans -->

<bean id="orderErrorResponseGenerator"
class="com.orchestratorservice.adapter.order.OrderErrorResponseGenerator"></bean>

<bean id="getOrdersWFInfo"
class="com.orchestratorservice.basecomponent.processor.WFInfo">
<argument value="direct:getMarketplaceOrders" />
<argument
value="com.orchestratorservice.adapter.order.request.GetMarketplaceOrdersRequest" />
<argument
value="com.orchestratorservice.adapter.order.response.OrderResponse" />
<argument ref="orderErrorResponseGenerator" />
<argument>
<list>
<value>100</value>
<value>101</value>
</list>
</argument>
</bean>

<bean id="setStatusToReadyToShipWFInfo"
class="com.orchestratorservice.basecomponent.processor.WFInfo">
<argument value="direct:setStatusToReadyToShip" />
<argument
value="com.orchestratorservice.adapter.order.request.UpdateOrderStatusReadyShipRequest" />
<argument
value="com.orchestratorservice.adapter.order.response.OrderResponse" />
<argument ref="orderErrorResponseGenerator" />
<argument>
<list>
<value>110</value>
<value>111</value>
</list>
</argument>
</bean>

<bean id="getOrderItemStatusWFInfo"
class="com.orchestratorservice.basecomponent.processor.WFInfo">
<argument value="direct:getOrderItemStatus" />
<argument
value="com.orchestratorservice.adapter.order.request.GetOrderItemStatusRequest" />
<argument
value="com.orchestratorservice.adapter.order.response.OrderResponse" />
<argument ref="orderErrorResponseGenerator" />
<argument>
<list>
<value>120</value>
<value>131</value>
</list>
</argument>
</bean>

<bean id="updateOrderItemStatusWFInfo"
class="com.orchestratorservice.basecomponent.processor.WFInfo">
<argument value="direct:updateItemStatus" />
<argument
value="com.orchestratorservice.adapter.order.request.UpdateOrderItemStatusRequest" />
<argument
value="com.orchestratorservice.adapter.order.response.UpdateOrderItemStatusResp" />
<argument ref="orderErrorResponseGenerator" />
<argument>
<list>
<value>140</value>
<value>151</value>
</list>
</argument>
</bean>

<bean id="createForwardManifestWFInfo"
class="com.orchestratorservice.basecomponent.processor.WFInfo">
<argument value="direct:createForwardManifest" />
<argument
value="com.orchestratorservice.adapter.order.request.CreateFwdManifestReq" />
<argument
value="com.orchestratorservice.adapter.order.response.OrderResponse" />
<argument ref="orderErrorResponseGenerator" />
<argument>
<list>
<value>151</value>
<value>160</value>
</list>
</argument>
</bean>

<bean id="orderHelper"
class="com.orchestratorservice.adapter.order.OrderHelper">
<property name="producer" ref="myTemplate" />
</bean>



<!-- ERP Beans -->
<bean id="erpErrorResponseGenerator"
class="com.orchestratorservice.adapter.erp.ERPErrorResponseGenerator"></bean>

<bean id="insertSellerWFInfo"
class="com.orchestratorservice.basecomponent.processor.WFInfo">
<argument value="direct:insertSeller" />
<argument
value="com.orchestratorservice.adapter.erp.request.InsertSellerRequest" />
<argument
value="com.orchestratorservice.adapter.erp.response.InsertSellerResponse" />
<argument ref="erpErrorResponseGenerator" />
<argument>
<list>
<value>10</value>
<value>11</value>
</list>
</argument>
</bean>

<bean id="erpHelper" class="com.orchestratorservice.adapter.erp.ERPHelper">
<property name="producer" ref="myTemplate" />
</bean>



<cm:property-placeholder persistent-id="wf"
update-strategy="none">
<cm:default-properties>
<cm:property name="order_update_item_status_sc_apiver"
value="1" />
<cm:property name="target_image_width" value="1400" />
<cm:property name="target_image_height" value="1025" />

</cm:default-properties>
</cm:property-placeholder>


<!-- a bean that uses a blueprint property placeholder -->

<bean id="configBean"
class="com.orchestratorservice.basecomponent.config.ConfigBean">
<property name="order_update_item_status_sc_apiver" value="${order_update_item_status_sc_apiver}" />
<property name="target_image_width" value="${target_image_width}" />
<property name="target_image_height" value="${target_image_height}" />
</bean>

<camelContext xmlns="http://camel.apache.org/schema/blueprint"
useMDCLogging="true">
<template id="myTemplate" />
<route id="orchestrator-service-route">
<from uri="jetty:http://0.0.0.0:8888/orchestratorservice" />
<process ref="jsonRPCProcessor" />
</route>

<!-- Order Routes -->
<route id="get-orders-workflow">
<from uri="direct:getMarketplaceOrders" />
<to uri="bean:orderHelper?method=getMarketplaceOrders" />
</route>
<route id="set-status-readytoship-workflow">
<from uri="direct:setStatusToReadyToShip" />
<to uri="bean:orderHelper?method=setStatusToReadyToShip" />
</route>
<route id="get-order-itemstatus-workflow">
<from uri="direct:getOrderItemStatus" />
<to uri="bean:orderHelper?method=getOrderItemStatus" />
</route>
<route id="update-order-itemstatus-workflow">
<from uri="direct:updateItemStatus" />
<to uri="bean:orderHelper?method=updateItemStatus" />
</route>
<route id="create-forward-manifest-workflow">
<from uri="direct:createForwardManifest" />
<to uri="bean:orderHelper?method=createForwardManifest" />
</route>

<!-- ERP routes -->
<route id="insert-seller-workflow">
<from uri="direct:insertSeller" />
<to uri="bean:erpHelper?method=insertSeller" />
</route>
</camelContext>
</blueprint>

在蓝图中,我们定义了不同的工作流程模块(例如在上面的 blueprint.xml - orderERP 中)。现在我们只有一个 blueprint.xml,我们在其中定义所有工作流。这已经变得相当大了(已经有大约 1000 行,我们将添加更多)。

谁能告诉我一下

  1. 人们如何组织像上面那样的大型 blueprint.xml
  2. 是否可以有不同的 xml(例如,在我的例子中,ordererp 模块有不同的 xml)和一个包含所有子 xml 的单一母 xml ?

最佳答案

Bundle 引用的蓝图文件中的所有元数据都被加载并合并在一起:

  • 你可以把这个文件分成几个小文件
  • 我通常按主题拆分定义:在您的情况下,可能一个文件带有 Camel 路线,另一个文件带有来自 ConfigurationAdmin 的配置,等等
  • Aries-Blueprint 有一个带有内省(introspection)/注释的扩展,可以帮助减小此类文件的大小

关于xml - 如何组织一个大的karaf blueprint.xml?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36157693/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com