Flexible Reflex E-Commerce

Flexible Reflex E-Commerce


Синхронизация выгрузки остатков в формате JSON КАИС - Magento.



Общие сведения о сервисe.

Тип — SOAP. Авторизация — http базовая. Адрес WSDL описания
Формирование массива остатков по складу, с использованием XML, JSON формата сообщения.


Конфигурация слушателя в системе REFLEX.

    <bean class="erp.beans.ActiveMq.Listners.MqListenerQueue" init-method="runQueue" destroy-method="destroy">
        <property name="brokerURL" ref="failOver"/>
        <property name="queue" value="MAGENTO"/>
        <property name="anchor" value="BALANCE-XML"/>
        <property name="AClass" value="erp.orm.stock.OnlineBalance.OnlineBalance"/>
        <property name="method" value="transformJson"/>
        <property name="saveOrUpdate" value="false"/>
        <property name="router" value="false"/>
        <property name="xmlDateFormat" value="yyyy-MM-dd HH:mm:ss"/>
        <property name="jsonDateFormat" value="yyyy-MM-dd'T'HH:mm:ssZ"/>
        <property name="db">
            <value type="erp.beans.Db">snqstock</value>
        </property>
    </bean>

    Описание свойств:
  • brokerURL - брокер
  • queue - имя очереди
  • anchor - селектор
  • AClass - имя класса объекта
  • method - имя метода обработки входящего сообщения
  • xmlDateFormat - формат даты XML
  • jsonDateFormat - формат даты JSON
  • db - целевая БД



CXF web сервисы для работы с Apache ActiveMQ
    Методы:
  • ProducerMessage: - Отправить сообщение в очередь
  • ConsumerQueue —получить сообщение из очереди
  • ConsumerTopic — получить топик из очереди


Формат сообщения - остаток
@Data
public class OnlineBalance implements Serializable {

    @JsonProperty(value = "code")
    @SerializedName(value = "code")
    @Expose
    private String code;
    @JsonProperty(value = "items")
    @SerializedName(value = "items")
    @Expose
    private List<Item> items;

    @Data
    private static class Item {
        @JsonProperty(value = "sku")
        @SerializedName(value = "sku")
        @Expose
        private Long sku;
        @JsonProperty(value = "qty")
        @SerializedName(value = "qty")
        @Expose
        private Long qty;
    }
}
Пример XML сообщения
<OnlineBalance>
    <code>3002</code>
    <items>
        <item>
            <sku>111111</sku>
            <qty>2</qty>
        </item>
        <item>
            <sku>22222</sku>
            <qty>7</qty>
        </item>
    </items>
</OnlineBalance>

Пример xml текста запроса для отправки информации по остаткам из КАИС в формате XML:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.erp/">
   <soapenv:Header/>
   <soapenv:Body>
      <ws:Producer>
         <jmsMessagetype>QUEUE</jmsMessagetype>
         <jms>MAGENTO</jms>
         <anchor>BALANCE-XML</anchor>
         <jmsType>XML</jmsType>
         <message><![CDATA[<OnlineBalance><code>3002</code><items><item><sku>111111</sku><qty>2</qty></item><item><sku>22222</sku><qty>7</qty></item></items></OnlineBalance>]]></message>
         <persistent>true</persistent>
      </ws:Producer>
   </soapenv:Body>
</soapenv:Envelope>
  • Producer - метод сервиса
  • jmsMessagetype - тип очереди QUEUE
  • jms - имя очереди
  • anchor - селектор сообщения
  • jmsType - тип сообщения XML
  • message - XML сообщение
  • persistent = true

Пример xml текста ответа сервиса:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
      <ns2:ProducerResponse xmlns:ns2="http://ws.erp/">
         <return>true</return>
      </ns2:ProducerResponse>
   </soap:Body>
</soap:Envelope>



Пример xml текста запроса для получения информации по изменению остатков в формате JSON в шине данных или MAGENTO:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.erp/">
   <soapenv:Header/>
   <soapenv:Body>
      <ws:ConsumerQueue>
         <Queue>MAGENTO</Queue>
         <anchor>BALANCE-JSON</anchor>
         <timeout>100</timeout>
      </ws:ConsumerQueue>
   </soapenv:Body>
</soapenv:Envelope>

Пример xml текста ответа сервиса:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
      <ns2:ConsumerQueueResponse xmlns:ns2="http://ws.erp/">
         <return>
            <anchor>BALANCE-JSON</anchor>
            <message>[{"code":"3002","items":[{"sku":111111,"qty":2},{"sku":22222,"qty":7}]}]</message>
         </return>
      </ns2:ConsumerQueueResponse>
   </soap:Body>
</soap:Envelope>

Пример xml текста ответа сервиса, когда очередь пустая:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
      <ns2:ConsumerQueueResponse xmlns:ns2="http://ws.erp/">
         <return/>
      </ns2:ConsumerQueueResponse>
   </soap:Body>
</soap:Envelope>



Пример JSON сообщения
[
  {
    "code": "3002",
    "items": [
      {
        "sku": 111111,
        "qty": 2
      },
      {
        "sku": 22222,
        "qty": 7
      }
    ]
  }
]

Пример xml текста запроса для отправки информации по остаткам из КАИС в формате JSON:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.erp/">
   <soapenv:Header/>
   <soapenv:Body>
      <ws:Producer>
         <jmsMessagetype>QUEUE</jmsMessagetype>
         <jms>MAGENTO</jms>
         <anchor>BALANCE-JSON</anchor>
         <jmsType>JSON</jmsType>
         <message>[{"code":"3002","items":[{"sku":111111,"qty":2},{"sku":22222,"qty":7}]}]</message>
         <persistent>true</persistent>
      </ws:Producer>
   </soapenv:Body>
</soapenv:Envelope>
  • Producer - метод сервиса
  • jmsMessagetype - тип очереди QUEUE
  • jms - имя очереди
  • anchor - селектор сообщения
  • jmsType - тип сообщения JSON
  • message - JSON сообщение
  • persistent = true

Пример xml текста ответа сервиса:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
      <ns2:ProducerResponse xmlns:ns2="http://ws.erp/">
         <return>true</return>
      </ns2:ProducerResponse>
   </soap:Body>
</soap:Envelope>





Просмотр истории ...