register_workflow_type ( $opt )

Registers a new workflow type and its configuration settings in the specified domain.

The retention period for the workflow history is set by the RegisterDomain action.

If the type already exists, then a TypeAlreadyExists fault is returned. You cannot change the configuration settings of a workflow type once it is registered and it must be registered as a new version.

Access Control

You can use IAM policies to control this action’s access to Amazon SWF resources as follows:

  • Use a Resource element with the domain name to limit the action to only specified domains.
  • Use an Action element to allow or deny permission to call this action.
  • Constrain the following parameters by using a Condition element with the appropriate keys.
    • defaultTaskList: String constraint. The key is swf:defaultTaskList.name.
    • name: String constraint. The key is swf:name.
    • version: String constraint. The key is swf:version.

If the caller does not have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails by throwing OperationNotPermitted. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows.

Access

public

Parameters

Parameter

Type

Required

Description

$opt

array

Optional

An associative array of parameters that can have the following keys:

  • domain - string - Required - The name of the domain in which to register the workflow type.
  • name - string - Required - The name of the workflow type. The specified string must not start or end with whitespace. It must not contain a : (colon), / (slash), | (vertical bar), or any control characters (\u0000-\u001f | \u007f - \u009f). Also, it must not contain the literal string “arn”.
  • version - string - Required - The version of the workflow type.

    The workflow type consists of the name and version, the combination of which must be unique within the domain. To get a list of all currently registered workflow types, use the ListWorkflowTypes action.

    The specified string must not start or end with whitespace. It must not contain a : (colon), / (slash), | (vertical bar), or any control characters (\u0000-\u001f | \u007f - \u009f). Also, it must not contain the literal string “arn”.
  • description - string - Optional - Textual description of the workflow type.
  • defaultTaskStartToCloseTimeout - string - Optional - If set, specifies the default maximum duration of decision tasks for this workflow type. This default can be overridden when starting a workflow execution using the StartWorkflowExecution action or the StartChildWorkflowExecution Decision. The valid values are integers greater than or equal to 0. An integer value can be used to specify the duration in seconds while NONE can be used to specify unlimited duration.
  • defaultExecutionStartToCloseTimeout - string - Optional - If set, specifies the default maximum duration for executions of this workflow type. You can override this default when starting an execution through the StartWorkflowExecution Action or StartChildWorkflowExecution Decision. The duration is specified in seconds. The valid values are integers greater than or equal to 0. Unlike some of the other timeout parameters in Amazon SWF, you cannot specify a value of “NONE” for defaultExecutionStartToCloseTimeout; there is a one-year max limit on the time that a workflow execution can run. Exceeding this limit will always cause the workflow execution to time out.
  • defaultTaskList - array - Optional - If set, specifies the default task list to use for scheduling decision tasks for executions of this workflow type. This default is used only if a task list is not provided when starting the execution through the StartWorkflowExecution Action or StartChildWorkflowExecution Decision.
    • name - string - Required - The name of the task list.
  • defaultChildPolicy - string - Optional - If set, specifies the default policy to use for the child workflow executions when a workflow execution of this type is terminated, by calling the TerminateWorkflowExecution action explicitly or due to an expired timeout. This default can be overridden when starting a workflow execution using the StartWorkflowExecution action or the StartChildWorkflowExecution Decision. The supported child policies are:
    • TERMINATE: the child executions will be terminated.
    • REQUEST_CANCEL: a request to cancel will be attempted for each child execution by recording a WorkflowExecutionCancelRequested event in its history. It is up to the decider to take appropriate actions when it receives an execution history with this event.
    • ABANDON: no action will be taken. The child executions will continue to run.
    [Allowed values: TERMINATE, REQUEST_CANCEL, ABANDON]
  • curlopts - array - Optional - A set of values to pass directly into curl_setopt(), where the key is a pre-defined CURLOPT_* constant.
  • returnCurlHandle - boolean - Optional - A private toggle specifying that the cURL handle be returned rather than actually completing the request. This toggle is useful for manually managed batch requests.

Returns

Type

Description

CFResponse

A CFResponse object containing a parsed HTTP response.

Examples

Workflow Type CRUD.

Shows an example of workflow type CRUD methods.

This sample uses anonymous functions, which are only available in PHP 5.3+. For PHP 5.2 users, you must used named functions instead of anonymous ones.

$swf = new AmazonSWF();

// Setup
$timestamp = time();
$workflow_domain = 'my-domain' . $timestamp;
$workflow_type_name = 'my-workflow-type';

//-----------------------------------------------------------------//
// Register a new workflow type

echo '# Registering a new workflow type...' . PHP_EOL;
$workflow_type = $swf->register_workflow_type(array(
	'domain'             => $workflow_domain,
	'name'               => $workflow_type_name,
	'version'            => '1.0',
	'description'        => 'A test task to show how this thing works.',
	'defaultChildPolicy' => AmazonSWF::POLICY_TERMINATE,
	'defaultTaskList'    => array(
		'name' => 'my-task-list'
	),
));

if ($domain->isOK())
{
	echo 'Waiting for the workflow type to become ready...' . PHP_EOL;

	do {
		sleep(1);

		$describe = $swf->describe_workflow_type(array(
			'domain'       => $workflow_domain,
			'workflowType' => array(
				'name'    => $workflow_type_name,
				'version' => '1.0'
			)
		));
	}
	while ((string) $describe->body->typeInfo->status !== AmazonSWF::STATUS_REGISTERED);

	echo 'Worktype flow was created successfully.' . PHP_EOL;
}
else
{
	echo 'Workflow type creation failed.';
}

echo PHP_EOL;

//-----------------------------------------------------------------//
// List all registered workflow types

echo "# Listing all registered workflow types for the \"${workflow_domain}\" domain..." . PHP_EOL;

// Anonymous callbacks require PHP 5.3. PHP 5.2 users can create a
// named function and pass it to the each() method.
$swf->list_workflow_types(array(
	'domain' => $workflow_domain,
	'registrationStatus' => AmazonSWF::STATUS_REGISTERED,
))
->body->typeInfos()->each(function($item)
{
	echo (string) $item->status . ': ' .
	     (string) $item->workflowType->name . ' ' .
	     (string) $item->workflowType->version . PHP_EOL;
});

echo PHP_EOL;

//-----------------------------------------------------------------//
// Describing a specific workflow type

echo "# Describing the \"${workflow_type_name}\" workflow type from the \"${workflow_domain}\" domain..." . PHP_EOL;

// Describe a domain
$describe = $swf->describe_workflow_type(array(
	'domain'       => $workflow_domain,
	'workflowType' => array(
		'name'    => $workflow_type_name,
		'version' => '1.0'
	)
));

print_r($describe->body);
echo PHP_EOL;

//-----------------------------------------------------------------//
// Deprecate a workflow type

echo '# Deprecating a workflow type...' . PHP_EOL;
$deprecate_workflow_type = $swf->deprecate_workflow_type(array(
	'domain'       => $workflow_domain,
	'workflowType' => array(
		'name'    => $workflow_type_name,
		'version' => '1.0',
	)
));

if ($domain->isOK())
{
	echo 'Worktype flow was deprecated successfully.' . PHP_EOL;
}
else
{
	echo 'Worktype flow deprecation failed.';
}

echo PHP_EOL;

Source

Method defined in services/swf.class.php | Toggle source view (6 lines) | View on GitHub

public function register_workflow_type($opt = null)
{
    if (!$opt) $opt = array();
    
    return $this->authenticate('RegisterWorkflowType', $opt);
}

Copyright © 2010–2013 Amazon Web Services, LLC


Feedback