simple-swf
Version:
Actually simple API layer for AWS SWF
44 lines (41 loc) • 1.63 kB
text/typescript
import { SWF } from 'aws-sdk'
import { SWFConfig, ConfigGroup, ConfigDefaultUnit } from '../SWFConfig'
import { Workflow } from './Workflow'
import { DecisionTask } from '../tasks/DecisionTask'
export abstract class Decider {
workflow: Workflow
swfClient: SWF
config: SWFConfig
constructor(workflow: Workflow) {
this.workflow = workflow
this.config = workflow.config
this.swfClient = workflow.swfClient
}
abstract makeDecisions(task: DecisionTask, cb: {(err: Error, decision: DecisionTask)})
static getDefaultConfig(): ConfigGroup {
return {
startToCloseTimeout: {
description: 'The maximum amount of time a decision task can take to complete. 0 or NONE inidcate no limit',
mappings: [
{api: 'startWorkflowExecution', name: 'taskStartToCloseTimeout'},
{api: 'registerWorkflowType', name: 'defaultTaskStartToCloseTimeout'},
{api: 'respondDecisionTaskCompleted', attribute: 'continueAsNewWorkflowExecutionDecisionAttributes', name: 'taskStartToCloseTimeout'},
{api: 'respondDecisionTaskCompleted', attribute: 'startChildWorkflowExecutionDecisionAttributes', name: 'taskStartToCloseTimeout'}
],
value: 120,
unit: ConfigDefaultUnit.Second,
},
taskList: {
description: 'Specifies the taskList name for a specific decision, see SWF docs for more stails',
mappings: [
{api: 'pollForDecisionTask', name: 'taskList'}
],
value: 'simple-swf',
format: function(name) {
return {name}
},
unit: ConfigDefaultUnit.String
}
}
}
}