¤Þ¤È¤á ¥Ö¥í¥° ¥À¥¦¥ó¥í¡¼¥É ·Ç¼¨ÈÄ ¥á¡¼¥ë

¤ì¤Ö¤í¤°

< 2007-02-15 (ÌÚ) 2007-02-20 (²Ð) > ºÇ¿·


2007-02-17 (ÅÚ)

¢£ Piece Framework ¤Î¥µ¥ó¥×¥ë¥«¥¦¥ó¥¿

Piece Framework ¤ò»î¤·¤Æ¤ß¤Æ¤¤¤ë¡£ Piece_Flow ¤Î¥¢¡¼¥«¥¤¥Ö¤ÎÃæ¤Ë¤¢¤Ã¤¿¥Æ¥¹¥ÈÍѤΥե¡¥¤¥ë¤ò¾¯¤·¼êľ¤·¤·¤Æ¡¢ ¤´¤¯¤´¤¯´Êñ¤Ê¥µ¥ó¥×¥ë¤òºî¤Ã¤Æ¤ß¤¿¡£ ¥«¥¦¥ó¥¿¤È¤¤¤¦¤«¡¢¤Ø¤§¥Ü¥¿¥ó¤ß¤¿¤¤¤Ê¤ä¤Ä¤À¡£ ¤¿¤À¤³¤Î¥µ¥ó¥×¥ë¤Ï¡¢É¬¤ºÆ±¤¸ state ¤ËÌá¤Ã¤ÆÍè¤ë¤È¤¤¤¦ÅÀ¤¬¤¢¤Þ¤ê¤è¤í¤·¤¯¤Ê¤¤¡£ ¤½¤Î¤»¤¤¤Ç¡ÖÌá¤ë¡×¥Ü¥¿¥ó¤ò²¡¤·¤¿»þ¤Îưºî¤¬¤ª¤«¤·¤¤¤¬¡¢ ¤¢¤¯¤Þ¤Ç¤âÎý½¬¤È¤¤¤¦¤³¤È¤ÇÂçÌܤ˸«¤ÆÍߤ·¤¤¡£

  • config/flows/Counter.yaml
firstState: DisplayForm

viewState:
  - name: DisplayForm
    view: Counter
    activity:
      method: setView
    transition:
      - event: increase
        nextState: done
        action:
          class: CounterAction
          method: increase
      - event: reset
        nextState: done
        action:
          class: CounterAction
          method: reset

actionState:
  - name: done
    transition:
      - event: succeed
        nextState: DisplayForm

initial:
  class: CounterAction
  method: initialize
  • actions/CounterAction.php
<?php

require_once 'Piece/Flow/Action.php';

class CounterAction extends Piece_Flow_Action
{
    function initialize()
    {
        $this->_flow->setAttribute('counter', 1);
    }

    function increase()
    {
        $counter = $this->_flow->getAttribute('counter');
        $this->_flow->setAttribute('counter', $counter + 1);
        return 'succeed';
    }

    function reset()
    {
        $this->initialize();
        return 'succeed';
    }

    function setView()
    {
        $counter = $this->_flow->getAttribute('counter');
        $viewElement =& $this->_payload->getViewElement();
        $viewElement->setElement('counter', $counter);
    }
}

?>
  • templates/Counter/Counter.html
<p>Counter: {counter}</p>
<form>
  <input type="hidden" name="{__flowExecutionTicketKey}" value="{__flowExecutionTicket}" id="flowExecutionTicket" />
  <input type="submit" name="{__eventNameKey}_increase" value="Increase" />
  <input type="submit" name="{__eventNameKey}_reset" value="Reset" />
</form>

¤¢¤È¤Ï piece-unity-config.yaml ¤Ë¤³¤Î¥Õ¥í¡¼¤òÄɲ乤ë¤È¤¤¤Ã¤¿ºî¶È¤âɬÍפÀ¤¬¡¢ ¤È¤ê¤¢¤¨¤º¤³¤ì¤Ï¤³¤ì¤Ç¤Á¤ã¤ó¤Èưºî¤¹¤ë¡£

¤µ¤Æ¡¢¤³¤³¤«¤é¤¬ËÜÂê¡£ ¥Þ¥Ë¥å¥¢¥ë¤Ë½ñ¤«¤ì¤Æ¤¤¤ë¥¢¥¯¥·¥ç¥ó·Ñ³¤ÎÀâÌÀ¤òÆÉ¤ó¤Ç¡¢ ¤½¤Î»þ¤Ï¡¢¤Õ¡¼¤ó¡¢¤È»×¤Ã¤Æ¤¤¤¿¤Î¤À¤¬¡¢ ¤·¤Ð¤é¤¯·Ð¤Ã¤¿¸å¤Ç¡¢½ñ¤«¤ì¤Æ¤¤¤ë¤³¤È¤Î°ÕÌ£¤¬Æ¬¤ËÀ÷¤ßÅϤäƤ­¤¿¡£ ¥Õ¥í¡¼ÊÑ¿ô¤ò°Õ¼±¤¹¤ëɬÍפ¬Ìµ¤¤¤À¤Ã¤Æ¡© ¤â¤·¤«¤·¤Æ¡¢¥¢¥¯¥·¥ç¥ó·Ñ³¤Îµ¡Ç½¤òÍ­¸ú¤Ë¤¹¤ì¤Ð¤³¤¦¤¤¤¦É÷¤Ë½ñ¤±¤ë¤Î¤«¡©

<?php

require_once 'Piece/Flow/Action.php';

class CounterAction extends Piece_Flow_Action
{
    var $_counter;

    function initialize()
    {
        $this->_counter = 1;
    }

    function increase()
    {
        $this->_counter++;
        return 'succeed';
    }

    function reset()
    {
        $this->initialize();
        return 'succeed';
    }

    function setView()
    {
        $viewElement =& $this->_payload->getViewElement();
        $viewElement->setElement('counter', $this->_counter);
    }
}

?>

»î¤·¤Æ¤ß¤¿¤È¤³¤í¡¢¤³¤ì¤Ç¤Á¤ã¤ó¤Èư¤¤¤¿¡£¤³¤ê¤ã¤¹¤´¤¤¤ä¡£

Íפ¹¤ë¤Ë¡¢º£¤Þ¤Ç¤ÎÄ̾ï¤Î Web ¥¢¥×¥ê¤À¤Ã¤¿¤é¡¢ ¥»¥Ã¥·¥ç¥ó¤ËÃͤòÊݸ¤·¤Æ¤ª¤¤¤Æ¡¢ ¼¡¤Î²èÌ̤ǥ»¥Ã¥·¥ç¥ó¤«¤éÃͤò¼è¤ê½Ð¤·¤Æ¡¢ ¤È¤¤¤Ã¤¿¤³¤È¤ò¤Û¤Ü¼êºî¶È¤Ç¤ä¤Ã¤Æ¤¤¤¿¤Î¤Ë¡¢ ¤½¤¦¤¤¤Ã¤¿½èÍý¤ò²¿¤â½ñ¤«¤Ê¤¯¤ÆºÑ¤à¡£ Piece Framework ¤Ï¥¹¥Æ¡¼¥È¥Õ¥ë¡¢¤È½ñ¤«¤ì¤Æ¤¤¤¿¤Î¤¬¤è¤¦¤ä¤¯¼Â´¶¤Ç¤­¤¿¡£

Tags: Piece | ¤³¤Î¥¨¥ó¥È¥ê¤ò´Þ¤à del.icio.us | ¤³¤Î¥¨¥ó¥È¥ê¤ò´Þ¤à¤Ï¤Æ¤Ê¥Ö¥Ã¥¯¥Þ¡¼¥¯ | ¤³¤Î¥¨¥ó¥È¥ê¤ò´Þ¤à livedoor ¥¯¥ê¥Ã¥× | Permalink
ËÜÆü¤Î¥ê¥ó¥¯¸µ

ÊÔ½¸