2.8 Asinhronie pieprasījumi

Asinhrons izsaukums tiks uzsākts, izsaucot metodi Submit. Par metodes parametru nepieciešams izmantot struktūru IVISRequest. Veiksmīga izsaukuma gadījumā izsaucējam tiks atgriezta struktūra IVISResponse ar aizpildītu CorrelationID. Šis elements tiks lietots, lai oriģinālo pieprasījumu sasaistītu ar back-end sistēmas sniegto atbildi. To var lietot arī kā parametru Pieprasījumu servisa metodēm Poll, GetStatus un Dispose. Asinhronajā scenārijā elements <Body> netiks atgriezts.

Kļūdas gadījumā struktūra <Errors> saturēs vienu vai vairākus kļūdas paziņojumus, kas sastāvēs no kļūdas identifikatora <ErrorCode> un kļūdas ziņojuma <ErrorDescription>.

Metode GetStatus atgriezīs sagatavotās atbildes statusu. To nepieciešams izsaukt pēc metodes Submit izsaukuma, lai uzzinātu, vai atbilde jau ir sagatavota. Par parametru tai jānodod CorrelationID. Pieprasījuma servisa metodes GetStatus implementācijai paredzēts izmantot Asinhrono pieprasījumu rezultātu krātuvi.

Metode Poll atgriezīs sagatavoto atbildes ziņojumu. To nepieciešams izsaukt pēc metodes Submit izsaukuma, lai iegūtu atbildes ziņojumu. Vispirms ar metodi GetStatus noskaidro, vai atbilde jau ir sagatavota: ja atbilde ir sagatavota, tad to iespējams iegūt ar metodi Poll. Metodi Poll var izsaukt vairākas reizes. Kamēr atbilde nebūs dzēsta ar metodi Dispose, to joprojām varēs saņemt. Par parametru tai jānodod CorrelationID. Metode Poll atgriež struktūru IVISResponse. Kļūdas gadījumā tiks aizpildīts elements <Errors>. Pieprasījuma servisa metode Poll izmantos Asinhrono pieprasījumu rezultātu krātuvi.

Metode Dispose tiek lietota asinhrona scenārija gadījumā. Šī metode obligāti jāizsauc, lai Pieprasījumu servisam paziņotu, ka atbilde ir veiksmīgi saņemta un to var turpmāk neuzglabāt, pretējā gadījumā – atbilde pēc noteikta laika perioda tiks automātiski izdzēsta. Pieprasījuma servisa metode Dispose izmantos Asinhrono pieprasījumu rezultātu datu bāzi.

Attēlā ir parādīta sinhrona pieprasījuma blokshēma:

  1. Tiek pārbaudīts, vai padotais „Request” ir tukšs (is NULL);
  2. “Sender” tiek aizpildīts no drošības talona;
  3. Tiek pārbaudīts pieprasījums, kā arī tiek pārbaudīts, vai lietotājs ir saglabājis attiecīgo atbildi;
  4. Pieprasījums tiek saglabāts datu bāze;
  5. Process tiek uzstādīts uz statusu “start”;
  6. Tiek izsaukts IS serviss vai IDDV forma;

Asinhrons pieprasījums