   DecisionTaskScheduled: (event) ->
   DecisionTaskStarted: (event) ->
   DecisionTaskCompleted: (event) ->
-  ActivityTaskScheduled: (event) ->
   ActivityTaskStarted: (event) ->
+  # default decisions
+  ScheduleActivityTask: (activityTypeName, input) ->
+    decisionType: "ScheduleActivityTask"
+    scheduleActivityTaskDecisionAttributes:
+      activityType:
+        name: activityTypeName
+        version: "1.0.0"
+      activityId: activityTypeName
+      input: JSON.stringify input
+  # workflow helpers
+  createBarrier: (name, obstacles) ->
+    @barriers[name] = obstacles
+  removeBarrierObstacle: (name, obstacle) ->
+    @barriers[name] = _.without @barriers[name], obstacle
+  isBarrierPassed: (name) ->
+    not @barriers[name].length
 
 module.exports = DecisionTask
  execute: ->
    new Promise (resolve, reject) =>
      try
        @decisions = []
        @modifier = {}
        for event in @events
          if @[event.eventType]
            @[event.eventType](event)
          else
            throw new errors.EventHandlerNotImplementedError
              message: "Event handler '#{event.eventType}' not implemented"

_ = require "underscore"
camelize = require "underscore.string/camelize"
Promise = require "bluebird"
Match = require "mtr-match"
errors = require "../../helper/errors"
