Вопрос

Работа с Web-service

Добрый день. Как можно быстро поменять домен в web-service если у меня их больше 100 штук? Руками так себе идея :)

Нравится

7 комментариев

как насчет прямого Update в БД с replace?

Алексей Следь,

Если подскажете где именно в БД находятся эти значения, то я только за.
Пытался их найти, но результат отрицательный.

Раздел веб-сервисов строится по схеме VwWebServiceV2, домен и другие параметры хранятся в поле MetaData. Увидеть его текст можно, преобразовав:

select *, cast (MetaData as varchar(max))from VwWebServiceV2

Там данные в виде:


{
   "MetaData":{
      "Schema":{
         "ManagerName":"ServiceSchemaManager",
         "UId":"eaab0cb8-b7c8-4fc7-9ff0-535be5f59413",
         "A2":"MkpServiceUpdatedApp",
         "A5":"3364ce9a-4a9f-4dbc-81be-9558a29167cf",
         "B1":[
 
         ],
         "B2":[
 
         ],
         "B3":[
 
         ],
         "B6":"da38393b-cb46-4fa6-92b9-e4358bcf9f48",
         "B8":"7.16.1.2135",
         "IQ1":"https://marketplace.creatio.com",
         "IQ2":1,
         "IQ4":[
            {
               "UId":"506ee0c1-c665-4ba6-b13b-c180f109bfac",
               "A2":"MkpGetUpdatedApp",
               "IR3":5000,
               "IR1":{
                  "IW2":1,
                  "IW1":[
                     {
                        "UId":"1d09ea9a-2fe5-4571-8a79-67303748099b",
                        "A2":"MkpAppTitle",
                        "IU1":"appTitle",
                        "IU2":"Text",
                        "IU7":true,
                        "IU4":3,
                        "IU5":{
                           "IV1":"null",
                           "IV2":1
                        },
                        "IU6":[
 
                        ]
                     },
                     {
                        "UId":"0c7dc8bd-5325-4625-8e9b-451417fa5109",
                        "A2":"MkpAppId",
                        "IU1":"appId",
                        "IU2":"Text",
                        "IU7":true,
                        "IU4":3,
                        "IU5":{
                           "IV1":"null",
                           "IV2":1
                        },
                        "IU6":[
 
                        ]
                     },
                     {
                        "UId":"d9c52339-3ffd-4469-b090-75003039fed7",
                        "A2":"MkpAppFile",
                        "IU1":"appFile",
                        "IU2":"Text",
                        "IU7":true,
                        "IU4":3,
                        "IU5":{
                           "IV1":"null",
                           "IV2":1
                        },
                        "IU6":[
 
                        ]
                     }
                  ],
                  "IT2":1,
                  "IT1":"/api/version/master"
               },
               "IR2":{
                  "IW2":1,
                  "IW1":[
                     {
                        "UId":"1b29bdc2-caf8-47fb-aa03-a6c85ccf059f",
                        "A2":"MkpVersion",
                        "IU1":"$.version",
                        "IU2":"Text",
                        "IU4":1,
                        "IU5":{
                           "IV1":"null"
                        },
                        "IU6":[
 
                        ]
                     },
                     {
                        "UId":"562715e8-d551-4566-9430-88d72a986bd2",
                        "A2":"MkpChanged",
                        "IU1":"$.changed",
                        "IU2":"Text",
                        "IU4":1,
                        "IU5":{
                           "IV1":"null"
                        },
                        "IU6":[
 
                        ]
                     },
                     {
                        "UId":"b7e74153-9cb2-4309-8289-14a40a9d363e",
                        "A2":"MkpReleasenotes",
                        "IU1":"$.release_notes",
                        "IU2":"Text",
                        "IU4":1,
                        "IU5":{
                           "IV1":"null"
                        },
                        "IU6":[
 
                        ]
                     }
                  ]
               }
            }
         ]
      }
   }
}

Если раскодировать и отформатировать текст поля, видно, что URL находится в параметре IQ1. Следовательно, его можно заменить, затем преобразовав текст обратно в тот же формат и не повредив символы в поле до начала JSON.

Следует учитывать, что VwWebServiceV2 — не таблица, а представление, реально данные находятся в поле MetaData в записях в SysSchema, где ManagerName = 'ServiceSchemaManager'.

 

Зверев Александр,

Хочется написать "Как это всё ЗАМЕЧАТАЛЬНО", но получается только матом :)

 

Олег, заведена идея возможности  параметризировать адрес вызова веб-сервиса, чтобы базовый URL вызова задавался динамически, например, как параметр процесса или системная настройка.

Зверев Александр,

Планируемые сроки реализации?

Это зависит от количества обращающихся с такой потребностью.

Тут в прошлом году Вы же уже сталкивались с похожим случаем и я предлагал обходной способ.

Показать все комментарии