Ich frage mich, ob es für den AWS PHPSDK 2+ einen SWF-Workflow PHP-Beispielcode gibt?Amazon AWS einfacher Workflow-Dienst SWF PHP-Beispiele
Antwort
Ich suchte nach einem Tutorial und konnte keins finden. Schließlich ging ich mit Ruby und der Web-API durch die Dokumente und Beispiele und stellte die Grundlagen der Arbeit mit dem PHP SDK zusammen.
Das erste, was Sie tun müssen, ist Ihre Domäne, Workflow und Aktivitäten zu registrieren. Dies kann entweder über die AWS-Konsole oder über das PHP SDK erfolgen. Verwenden Sie das SDK folgendermaßen:
<?php
require_once "path/to/aws.phar";
use Aws\Swf\SwfClient;
// Create an instance of the SWF class
$client = SwfClient::factory(array(
"key" => "your_aws_key",
"secret" => "your_aws_secret_key",
"region" => "your_aws_region"
));
// Register your domain
$client->registerDomain(array(
"name" => "domain name you want",
"description" => "this is a test domain",
"workflowExecutionRetentionPeriodInDays" => "7"
));
// Register your workflow
$client->registerWorkflowType(array(
"domain" => "domain name you registered in previous call",
"name" => "workflow name you want",
"version" => "1.0",
"description" => "this is a sample",
"defaultTaskList" => array(
"name" => "mainTaskList"
),
"defaultChildPolicy" => "TERMINATE"
));
// Register an activity
$client->registerActivityType(array(
"domain" => "domain name you registered above",
"name" => "activity name you want",
"version" => "1.0",
"description" => "first activity in our workflow",
"defaultTaskList" => array(
"name" => "mainTaskList"
)
));
// Follow activity registration example above and register
// more activities as you wish
Der nächste Schritt besteht darin, einen Entscheider zu erstellen. Dies ist das Skript, das als koordinierender Knoten für Ihre Aktivitäts- (Arbeits-) Knoten fungiert.
// Ask SWF for things the decider needs to know
$result = $client->pollForDecisionTask(array(
"domain" => "your domain name",
"taskList" => array(
"name" => "mainTaskList"
),
"identify" => "default",
"maximumPageSize" => 50,
"reverseOrder" => true
));
// Current version of activity types we are using
$activity_type_version = "1.0";
// Parse info we need returned from the pollForDecisionTask call
$task_token = $result["taskToken"];
$workflow_id = $result["workflowExecution"]["workflowId"];
$run_id = $result["workflowExecution"]["runId"];
$last_event = $result["events"][0]["eventId"];
// Our logic that decides what happens next
if($last_event == "3"){
$activity_type_name = "activity to start if last event ID was 3";
$task_list = "mainTaskList";
$activity_id = "1";
$continue_workflow = true;
}
elseif($last_event == "8"){
$activity_type_name = "activity to start if last event ID was 8";
$task_list = "mainTaskList";
$activity_id = "2";
$continue_workflow = false;
}
// Now that we populated our variables based on what we received
// from SWF, we need to tell SWF what we want to do next
if($continue_workflow === true){
$client->respondDecisionTaskCompleted(array(
"taskToken" => $task_token,
"decisions" => array(
array(
"decisionType" => "ScheduleActivityTask",
"scheduleActivityTaskDecisionAttributes" => array(
"activityType" => array(
"name" => $activity_type_name,
"version" => $activity_type_version
),
"activityId" => $activity_id,
"control" => "this is a sample message",
// Customize timeout values
"scheduleToCloseTimeout" => "360",
"scheduleToStartTimeout" => "300",
"startToCloseTimeout" => "60",
"heartbeatTimeout" => "60",
"taskList" => array(
"name" => $task_list
),
"input" => "this is a sample message"
)
)
)
));
}
// End workflow if last event ID was 8
else if($continue_workflow === false){
$client->respondDecisionTaskCompleted(array(
"taskToken" => $task_token,
"decisions" => array(
array(
"decisionType" => "CompleteWorkflowExecution"
)
)
));
}
Der letzte Schritt ist Ihre Aktivität Arbeiter zu schaffen. Sie können sie drehen Sie das folgende Format auf mit:
// Check with SWF for activities
$result = $client->pollForActivityTask(array(
"domain" => "domain name you registered",
"taskList" => array(
"name" => "mainTaskList"
)
));
// Take out task token from the response above
$task_token = $result["taskToken"];
// Do things on the computer that this script is saved on
exec("my program i want to execute");
// Tell SWF that we finished what we need to do on this node
$client->respondActivityTaskCompleted(array(
"taskToken" => $task_token,
"result" => "I've finished!"
));
Die Skripte für Ihre Aktivität Arbeiter und Entscheider auf einem beliebigen Server gestellt werden können. Diese Skripte rufen alle SWF auf, um miteinander zu kommunizieren.
Schließlich, um den Workflow zu starten Sie gerade erstellt haben, verwenden Sie:
// Generate a random workflow ID
$workflowId = mt_rand(1000, 9999);
// Starts a new instance of our workflow
$client->startWorkflowExecution(array(
"domain" => "your domain name",
"workflowId" => $workflowId,
"workflowType" => array(
"name" => "your workflow name",
"version" => "1.0"
),
"taskList" => array(
"name" => "mainTaskList"
),
"input" => "a message goes here",
"executionStartToCloseTimeout" => "300",
'taskStartToCloseTimeout' => "300",
"childPolicy" => "TERMINATE"
));
- 1. amazon swf Speicherdatei oder DB für Amazon Einfacher Arbeitsablauf
- 2. AWS SWF Beispielcode Problem
- 3. AWS SWF-Fluss Java Decider
- 4. Amazon SWF: Mindestens ein Arbeiter muss laufen, warum?
- 5. java mit Amazon AWS NoSuchFieldError
- 6. Amazon AWS Reserve Instanz ablaufen
- 7. Amazon (AWS) API Gateway - Authentifizierung
- 8. Laravel mit Amazon AWS SQS
- 9. Was bedeutet amazon aws "Netzwerkleistung"?
- 10. Amazon AWS erhalten Objekt URI
- 11. Amazon AWS Load Balancer Verfügbarkeitsproblem
- 12. Amazon AWS Zugang zu Feeds.SubmitFeed verweigert
- 13. Ubuntu und www: Datenberechtigungen in Amazon aws
- 14. Schlüsselpaar in Amazon AWS importieren - falscher Fingerabdruck?
- 15. Spam-Mails Joe-Job über Amazon AWS
- 16. Bereitstellen von Azure Stack bei Amazon AWS
- 17. amazon aws sns, sms option nicht verfügbar?
- 18. amazon AWS in Web-App, InstantiationError: com.amazonaws.handlers.b
- 19. Nach Preis sortieren mit Amazon AWS
- 20. Mule Cluster-Konfiguration mit Amazon Cloud (AWS)
- 21. amazon aws-s3 Zugriff verweigert Fehler
- 22. Übergebene Domänen-DNS an Amazon AWS Route53
- 23. Wie installiere ichsible auf amazon aws?
- 24. GO Skript-Laufzeitfehler für Amazon AWS S3
- 25. erhalten Sie über Cross-Origin Ressourcenfreigabe auf Amazon Aws
- 26. Auswirkung der AWS-SWF-Konnektivität auf aktuell ausgeführte Workflows?
- 27. Amazon EC2 vs. Amazon EMR
- 28. Amazon WAF + Amazon API-Gateway
- 29. Angeforderte Version Fehler AWS Einfacher Benachrichtigungsdienst .NET SDK
- 30. AWS SWF - Standardwerte für 60 Sekunden ändern, während Polling für Entscheidungsaufgaben
So wie für Sie swf funktioniert hat insgesamt? Empfehlen? Sehen Sie, wo ich von hier her komme https://devops.stackexchange.com/a/3034/4997 – abbood