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
Resourceelement with the domain name to limit the action to only specified domains. - Use an
Actionelement to allow or deny permission to call this action. - Constrain the following parameters by using a
Conditionelement with the appropriate keys.defaultTaskList: String constraint. The key isswf:defaultTaskList.name.name: String constraint. The key isswf:name.version: String constraint. The key isswf: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 |
|---|---|---|---|
|
|
Optional |
An associative array of parameters that can have the following keys:
|
Returns
Type |
Description |
|---|---|
|
A |
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

