Please disable Adblockers and enable JavaScript for domain CEWebS.cs.univie.ac.at! We have NO ADS, but they may interfere with some of our course material.
[Info]
Phase2
Aufgabe 4-1: Phase 2 – Korrelation (7 Punkte)
Schreiben und registieren sie ihr Korrelations Service
- Services Registrieren unter «http://donatello.cs.univie.ac.at/tools_lehre/interop/2016/correlation_phase2/»
Implementieren sie folgende Logik Korrelation Logik
- Um eine Prozessinstanz zu erzeugen, verändern sie die Endpoints im Prozesstemplate für ihre Bestellung und POSTen sie es an cpee.org:9296
- Sie erhalten die Instanzid zurück um den Prozess zu beobachten. «http://cpee.org/~demo/cpee-cockpit/»
Beispiel für Callback.
- Ein Callback in der CPEE ermöglicht es ihnen später zu antworten. Meistens weil sie die Antwort noch nicht kenne.
<call id="a4" endpoint="correlation">
<parameters>
<label>"Warten auf Fortschritt"</label>
<method>:post</method>
<parameters>
<pid>data.pid</pid>
</parameters>
</parameters>
<finalize>data.progress = result["progress"]</finalize>
</call>
- Für diese Aktivität kennen sie die Antwort noch nicht. Sie erhalten die passenede Antwort auf ihren Korrelator in einem bestimmten Intervall
<finalize>data.progress = result["progress"]</finalize>
- Diese Zeile sagt ihnen, dass die CPEE ein JSON Objekt mit einem key "progress" erwartet. Loggen sie alel Messages in ihrem Korrelator um diese Nachrichten zu finden und zuzuordnen.
- Logging + Callback Beispiel. Zu finden auch unter «http://wwwlab.cs.univie.ac.at/~stertzf9/callback/server.phps»
<?php
include('rest_handle.php');
$rest = handleREST($_SERVER,$_GET);
//CPEE POST empfangen. CPEE kann auch GET PUT und DELETE Requests absetzen.
if($rest->method=="POST"){
//Der Korrelator kann auch so loggen.
$fh = fopen("log.log","a");
//ALLE Header in ein File schreiben.
fwrite($fh,print_r(getallheaders(),true));
//Header damit die CPEE weiss, dass wir spaeter antworten.
header('CPEE_CALLBACK : true');
}
/*
Die Header wuerden so z.B. aussehen.
Sie brauchen [Cpee_callback]. Ein PUT Request auf diese Adresse laesst den Prozess weiterlaufen.
(
[Cpee_base] => http://cpee.org:9298
[Cpee_instance] => http://cpee.org:9298/194
[Cpee_callback] => http://cpee.org:9298/194/callbacks/22b728c475d6f70ec970ce0a130a22fa
[Cpee_activity] => a1
[Cpee_label] => Wir werden warten
[Cpee_attr_info] => ss
[Cpee_attr_modeltype] => CPEE
[Accept-Encoding] => gzip;q=1.0,deflate;q=0.6,identity;q=0.3
[Accept] => *//*
[User-Agent] => Ruby
[Content-Type] => text/plain
[Content-Length] => 0
[Host] => wwwlab.cs.univie.ac.at
)
*/
?>
- Passen sie den Endpoint an ihrem Korrelator zum Beispiel an, speichern sie sich die Callback URL. Die Prozessinstanz sollte auf "running" weiter stehen und der Task weiter aktiv sein.
- Senden sie nun einen PUT Request an diese Callback URL. Die Instanz sollte nun "finished" sein.
PUT via PHP
<?
$opts = array('http' =>
array(
'method' => 'PUT',
'header' => 'Content-type: application/json',
'content' => JSON_DATA
)
);
$context = stream_context_create($opts);
$result = file_get_contents('http://...', false, $context);
exit;
?>
Abzugeben: Sourcecode des Korrelators.
Letzte Änderung: 31.05.2016, 11:48 | 423 Worte