register_activity_type ( $opt )

Registers a new activity type along with its configuration settings in the specified domain.

A TypeAlreadyExists fault is returned if the type already exists in the domain. You cannot change any configuration settings of the type after its registration, 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 this activity is to be registered.
  • name - string - Required - The name of the activity type within the domain. 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 activity type.

    The activity type consists of the name and version, the combination of which must be unique within the domain.

    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 - A textual description of the activity type.
  • defaultTaskStartToCloseTimeout - string - Optional - If set, specifies the default maximum duration that a worker can take to process tasks of this activity type. This default can be overridden when scheduling an activity task using the ScheduleActivityTask 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.
  • defaultTaskHeartbeatTimeout - string - Optional - If set, specifies the default maximum time before which a worker processing a task of this type must report progress by calling RecordActivityTaskHeartbeat. If the timeout is exceeded, the activity task is automatically timed out. This default can be overridden when scheduling an activity task using the ScheduleActivityTask Decision. If the activity worker subsequently attempts to record a heartbeat or returns a result, the activity worker receives an UnknownResource fault. In this case, Amazon SWF no longer considers the activity task to be valid; the activity worker should clean up the activity task. 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.
  • defaultTaskList - array - Optional - If set, specifies the default task list to use for scheduling tasks of this activity type. This default task list is used if a task list is not provided when a task is scheduled through the ScheduleActivityTask Decision.
    • name - string - Required - The name of the task list.
  • defaultTaskScheduleToStartTimeout - string - Optional - If set, specifies the default maximum duration that a task of this activity type can wait before being assigned to a worker. This default can be overridden when scheduling an activity task using the ScheduleActivityTask 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.
  • defaultTaskScheduleToCloseTimeout - string - Optional - If set, specifies the default maximum duration for a task of this activity type. This default can be overridden when scheduling an activity task using the ScheduleActivityTask 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.
  • 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

Activity Type CRUD.

Shows an example of activity 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.

// Instantiate the class
$swf = new AmazonSWF();

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

//-----------------------------------------------------------------//
// Register a new activity type

echo '# Registering a new activity type...' . PHP_EOL;
$workflow_type = $swf->register_activity_type(array(
	'domain'             => $workflow_domain,
	'name'               => $activity_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 activity type to become ready...' . PHP_EOL;

	do {
		sleep(1);

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

	echo 'Activity type was created successfully.' . PHP_EOL;
}
else
{
	echo 'Activity type creation failed.';
}

echo PHP_EOL;

//-----------------------------------------------------------------//
// List all registered activity types

echo "# Listing all registered activity 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_activity_types(array(
	'domain' => $workflow_domain,
	'registrationStatus' => AmazonSWF::STATUS_REGISTERED,
))
->body->typeInfos()->each(function($item)
{
	echo (string) $item->status . ': ' .
	     (string) $item->activityType->name . ' ' .
	     (string) $item->activityType->version . PHP_EOL;
});

echo PHP_EOL;

//-----------------------------------------------------------------//
// Describing a specific activity type

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

// Describe a domain
$describe = $swf->describe_activity_type(array(
	'domain'       => $workflow_domain,
	'activityType' => array(
		'name'    => $activity_type_name,
		'version' => '1.0'
	)
));

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

//-----------------------------------------------------------------//
// Deprecate a activity type

echo '# Deprecating an activity type...' . PHP_EOL;
$deprecate_activity_type = $swf->deprecate_activity_type(array(
	'domain'       => $workflow_domain,
	'activityType' => array(
		'name'    => $activity_type_name,
		'version' => '1.0',
	)
));

if ($domain->isOK())
{
	echo 'Activity flow was deprecated successfully.' . PHP_EOL;
}
else
{
	echo 'Activity 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_activity_type($opt = null)
{
    if (!$opt) $opt = array();
    
    return $this->authenticate('RegisterActivityType', $opt);
}

Copyright © 2010–2013 Amazon Web Services, LLC


Feedback