【问题标题】:AWS Simple Workflow - respondDecisionTaskCompleted Not Working?AWS 简单工作流程 - respondDecisionTaskCompleted 不起作用?
【发布时间】:2014-12-09 22:52:51
【问题描述】:

我目前正在使用适用于 SWF 的 PHP SDK。我使用以下方法成功拉取决策任务:

$result = $client->pollForDecisionTask(array(
    "domain" => "test",
    "taskList" => array(
        "name" => "mainTaskList"
    ),
    "identify" => "default",
    "maximumPageSize" => 50,
    "reverseOrder" => true
));

$activity_type_version = "1.0";

$task_token = $result["taskToken"];
$run_id = $result["workflowExecution"]["runId"];
$last_event = $result["events"][0]["eventId"];

if($last_event == "3"){
    $activity_type_name = "SlamStart";
}

然后我尝试使用以下内容注册我已完成的决策任务:

$result = $client->respondDecisionTaskCompleted(array(
    "taskToken" => $task_token,
    "decisions" => array(
        "decisionType" => "ScheduleActivityTask",
        "scheduleActivityTaskDecisionAttributes" => array(
            "activityType" => array(
                "name" => $activity_type_name,
                "version" => $activity_type_version
            ),
            "activityId" => "1",
            "control" => "something",
            "scheduleToCloseTimeout" => "300",
            "scheduleToStartTimeout" => "300",
            "startToCloseTimeout" => "300",
            "heartbeatTimeout" => "300",
            "taskList" => array(
                "name" => "mainTaskList"
            ),
            "input" => "test input"
        )
    )
));

echo "respondDecisionTaskCompleted call went through";

上述内容永远不会通过,并且永远不会到达带有echo 的最后一行。

为什么会这样?

【问题讨论】:

    标签: amazon-web-services amazon-swf aws-php-sdk


    【解决方案1】:

    decisions 属性将一个数组包裹在第二个数组中。而不是

    "decisions" => array(
        "decisionType" => "ScheduleActivityTask",
        "scheduleActivityTaskDecisionAttributes" => array(
            "activityType" => array(
                "name" => $activity_type_name,
                "version" => $activity_type_version
            ),
            "activityId" => "1",
            "control" => "something",
            "scheduleToCloseTimeout" => "300",
            "scheduleToStartTimeout" => "300",
            "startToCloseTimeout" => "300",
            "heartbeatTimeout" => "300",
            "taskList" => array(
                "name" => "mainTaskList"
            ),
            "input" => "test input"
        )
    )
    

    不得不改成:

    "decisions" => array(
        array(
            "decisionType" => "ScheduleActivityTask",
            "scheduleActivityTaskDecisionAttributes" => array(
                "activityType" => array(
                    "name" => $activity_type_name,
                    "version" => $activity_type_version
                ),
                "activityId" => "1",
                "control" => "something",
                "scheduleToCloseTimeout" => "300",
                "scheduleToStartTimeout" => "300",
                "startToCloseTimeout" => "300",
                "heartbeatTimeout" => "300",
                "taskList" => array(
                    "name" => "mainTaskList"
                ),
                "input" => "test input"
            )
        )
    )
    

    【讨论】:

      猜你喜欢
      • 2012-03-13
      • 2015-08-30
      • 1970-01-01
      • 2017-12-29
      • 2017-11-25
      • 2017-04-07
      • 2014-05-11
      • 2014-05-04
      • 1970-01-01
      相关资源
      最近更新 更多