Продолжение установки обновления

Ниже приведён пример использования операции SetMbUpdate для продолжения установки обновления. Указанный пример должен выполняться циклически после того, как был осуществлён запуск установки обновления. Выполнение может продолжаться до того момента, пока в результате выполнения операции в поле SetMbUpdateResult.meta.execute.state не будет получено значение Finished или FinishedWithError.

SOAP-запрос:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SetMbUpdate xmlns="http://www.fsight.ru/PP.SOM.Som">
<tMbUpdate xmlns="">
  <id>HIDMDIEFBHCHGOAEGIHPHLGMDNKCMEDEBIGGMJJBPLDGFEOG!M!S!MbUpdOJFBNIEFBHCHGOAEJCKDBGBGODBNBCBEIIDAJOFDEKCIONGC</id>
  </tMbUpdate>
<tArg xmlns="">
<pattern>
  <execute>true</execute>
  </pattern>
<meta>
<execute>
  <async>false</async>
<callback>
  <onProgress />
  </callback>
  </execute>
  </meta>
<metaGet>
  <execute>true</execute>
  </metaGet>
  </tArg>
  </SetMbUpdate>
  </s:Body>
  </s:Envelope>

SOAP-ответ:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<SetMbUpdateResult xmlns="http://www.fsight.ru/PP.SOM.Som" xmlns:q1="http://www.fsight.ru/PP.SOM.Som" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<id xmlns="">
  <id>HIDMDIEFBHCHGOAEGIHPHLGMDNKCMEDEBIGGMJJBPLDGFEOG!M!S!MbUpdOJFBNIEFBHCHGOAEJCKDBGBGODBNBCBEIIDAJOFDEKCIONGC</id>
  </id>
<meta xmlns="">
<execute>
  <resolveTimeout>600000</resolveTimeout>
  <state>Finished</state>
  </execute>
  </meta>
  </SetMbUpdateResult>
  </soapenv:Body>
  </soapenv:Envelope>

JSON-запрос:

{
"SetMbUpdate" :
{
"tMbUpdate" :
{
"id" : "HIDMDIEFBHCHGOAEGIHPHLGMDNKCMEDEBIGGMJJBPLDGFEOG!M!S!MbUpdOJFBNIEFBHCHGOAEJCKDBGBGODBNBCBEIIDAJOFDEKCIONGC"
},
"tArg" :
{
"pattern" :
{
"execute" : "true"
},
"meta" :
{
"execute" :
{
"async" : "false",
"callback" :
{
"onProgress" : ""
}
}
},
"metaGet" :
{
"execute" : "true"
}
}
}
}

JSON-ответ:

{
"SetMbUpdateResult" :
{
"id" :
{
"id" : "HIDMDIEFBHCHGOAEGIHPHLGMDNKCMEDEBIGGMJJBPLDGFEOG!M!S!MbUpdOJFBNIEFBHCHGOAEJCKDBGBGODBNBCBEIIDAJOFDEKCIONGC"
},
"meta" :
{
"execute" :
{
"resolveTimeout" : "600000",
"state" : "Finished"
}
}
}
}
public static SetMbUpdateResult UpdateExecuteState(string moniker)
{
var somClient = new SomPortTypeClient(); // Прокси-объект для выполнения операций
// Параметры выполнения операции
var tSet = new SetMbUpdate()
{
tArg = new SetMbUpdateArg()
{
pattern = new MbUpdateMdPattern()
{
execute = true
},
meta = new MbUpdateMd()
{
execute = new MbUpdateExecute()
{
callback = new MbUpdateExecuteCallback()
{
onProgress = new MbUpdateProgressData() //Чтобы разрешить обратный вызов хода выполнения
},
async = false
},
},
metaGet = new MbUpdateMdPattern()
{
execute = true
}
},
tMbUpdate = new MbUpdateId() { id = moniker }
};
var result = somClient.SetMbUpdate(tSet);
// Циклическое выполнение SetMbUpdate до того момента, пока обновление не установится полностью
do
{
// Продолжение обновления
result = somClient.SetMbUpdate(tSet);
} while ((result.meta.execute.state != MbUpdateExecuteState.Finished) && (result.meta.execute.state != MbUpdateExecuteState.FinishedWithError));
return result;
}

См. также:

SetMbUpdate