Transitionコンポーネント - automate() について

checkData/checkPrevに続いて Transition#automate ですが、これまたおおざっぱにいうと checkPrev した後に checkData をしてくれるメソッドになります。
またまた適当に展開したコード

class FooController extends AppController {
  public $uses = 'Foo';
         :
  public function step2() {
    // $this->Transition->automate('step3', 'Bar', 'step1') のおおざっぱな展開コード
    $this->Transaction->checkPrev('step1');
    $this->Transaction->checkData('step3', 'Bar');
  }
}

さらに展開するとこんな感じかな

class FooController extends AppController {
  public $uses = 'Foo';
         :
  public function step2() {
    // $this->Transition->automate('step3', 'Bar', 'step1') のおおざっぱな展開コード
    $data = $this->Session->read('session_key');
    if (!isset($data['Foo']['step1']) {
      $this->redirect('step1');
    } 
    if (!empty($this->data)) {
      $this->Bar->set($this->data);
      if ($this->Bar->validates()) {
        $this->Session->write('session_key.Foo.step2', $this->data);
        $this->redirect('step3');
      }
    } 
  }
}

これだけのコードを1行で書けるってのはやっぱり素敵ですね。