Zmiany pomiędzy wersją 4 and wersją 5 dla DeployerGuide/Customization/ProcessAutomation/PluginsCommands

Pokaż
Ignoruj:
Data i czas:
10/20/16 11:29:02 (8 years temu)
Autor:
szczurrek (IP: 79.188.124.105)
Komentarz:

@deprecated

Legend:

Bez zmian
Dodane
Usunięte
Zmienione
  • DeployerGuide/Customization/ProcessAutomation/PluginsCommands

    v4 v5  
    1 = Tworzenie własnych komend =  
     1@deprecated  
    22 
    3 Plik o nazwie kończącej się na Command (np. MyfirstCommand.inc) nalezy wgrać do katalogu apps/edokumenty/commands/ 
    4  
    5 Należy zmienić nazwę klasy i zaimplementować metodę execute.  
    6  
    7 {{{ 
    8 <?php 
    9 require_once(COMMANDS_DIR.'AbsCommand.inc'); 
    10  
    11 /** 
    12  * ExampleCommand 
    13  * Szablon komendy dla Workflow. 
    14  * Należy zaimplementować następujące metody z interfejsu ICommand: 
    15  *      - getDescription 
    16  *      - getExpandedDescription 
    17  *      - getCommandApi 
    18  *      - execute 
    19  * Opis metod poniżej w definicji. 
    20  * 
    21  * Dodatkowo z klasy AbsCommand mamy do dyspozycji: 
    22  *  - $this->action - bean PSAction tabela proc_actions 
    23  *  - $this->stageBean - bean etapu StageOfProc tabela stages 
    24  *   
    25  *  - $stage = $this->getStageDefObj() - zwraca obiekt (klasy Bean) definicji etapu jaki jest wykonywany czyli dane z stages_def - definicja etapu 
    26  *  - $procedure = $this->getProcedure() - zwraca obiekt (klasy Bean) procedury (tabela procedures) * 
    27  *  
    28  * @uses AbsCommand 
    29  * @uses ICommand 
    30  * @final 
    31  * @author Tomasz Świenty  
    32  * @version 0.1 
    33  * @copyright Copyright (c) BetaSoft 
    34  */ 
    35 final class ExampleCommand extends AbsCommand implements ICommand { 
    36  
    37  
    38  
    39     /** 
    40      * getDescription 
    41      * Metoda zwracająca nazwę komendy (krótki opis). Nazwa ta pojawia się na liście wyboru komend. 
    42      *  
    43      * @static 
    44      * @access public 
    45      * @return string 
    46      */ 
    47     public static function getDescription() { 
    48  
    49         return Translator::translate('Moja nowa komenda'); 
    50  
    51     } 
    52  
    53  
    54  
    55     /** 
    56      * getExpandedDescription 
    57      * Metoda zwracająca dłuższy opis komendy. Może zawierać znaki HTML. 
    58      *  
    59      * @param string $params - lista parametrów w formacie json (na razie nie jest obsługiwane) 
    60      * @static 
    61      * @access public 
    62      * @return string 
    63      */ 
    64     public static function getExpandedDescription($params = NULL) { 
    65  
    66         return Translator::translate('Moja nowa komenda - rozszerzony opis');  
    67  
    68     }   
    69  
    70  
    71  
    72     /** 
    73      * getCommandApi 
    74      * Metoda zwracająca API komendy domyślnie jest implementowana przez AbsCommand i zwraca pustą tablicę. 
    75      * Format api to tablica asocjacyjna, której kluczami głównymi są nazwy parametrów (najczęściej 6 znakowe) a każdy z tych kluczy 
    76      * posiada definicję parametru również w postaci tablicy. 
    77      * 
    78      * Definicja parametru określana jest przez 3 atrybuty (klucze) 
    79      *  - (strint)label - krótka nazwa parametru 
    80      *  - (strint)dscrpt - dokładniejszy opis parametru 
    81      *  - (bool)required - oznaczenie czy parametr jest wymagany 
    82      * 
    83      * Dodatkowo w tej tablicy (głównej) może się pojawić klucz example, które podaje przykład listy parametrów - jednak od wersji  
    84      * 3.7 jest to zbędne gdyż parametry są definiowane w dedykowanym formularzu i przechowywane są w formacie json a nie csv! 
    85      *  
    86      * @param string $params - lista parametrów w formacie json (na razie nie jest obsługiwane) 
    87      * @static 
    88      * @access public 
    89      * @return array 
    90      */ 
    91     public static function getCommandApi($params = NULL) { 
    92  
    93         $api = array( 
    94             'contid' => array( 
    95                 'label'     => Translator::translate('Kontrahent'), 
    96                 'dscrpt'    => Translator::translate('identyfikator kontrahenta (contacts.contid, <b>Lista kontrahentów -> Kolumna Id</b>) domyślnie jest przepisywany z kontekstu procedury'), 
    97                 'required'  => TRUE,                 
    98             ),     
    99             'example' => 'contid="1"' 
    100         ); 
    101  
    102         return $api; 
    103  
    104     } 
    105  
    106  
    107  
    108     /** 
    109      * execute 
    110      * Metoda odpowiedzialna za wykonanie komendy. 
    111      * Poniżej znajdują się też najważniejsze rzeczy jakie trzeba zrobić! 
    112      *  
    113      * @param Bean $bean - obiekt formularza dokumentu albo sprawy do dyspozycji w tym obiekcie mamy wartości z pól  
    114      * danego formularza (tabele documents (wraz z dodatkowymi tabelami), processes). 
    115      * Wartości pobieramy metodą $bean->get('dscrpt'); 
    116      * @param string $params - lista parametrów jaka została zdefiniowana dla tej komendy w konkretnej procedurze. 
    117      * @access public 
    118      * @return bool|CommandException 
    119      */ 
    120     public function execute(Bean $bean, $params) { 
    121  
    122         // parsowanie parametrów oraz przekazanie kontekstu beana 
    123         // po wykonaniu tego mamy do dyspozycji atrybut $this->params zawierający tablicę sparsowanych parametrów  
    124         // (jeśli parametr jest w formacie SQL to w tablicy będzie dostępny wynik zapytania, jeśli np featid::89 to wartość cechy) 
    125         parent::parseParams($params, $bean);         
    126  
    127         // jeśli do działania komendy wymagane są jakieś parametry a użytkownik ich nie podał lub nie udało się 
    128         // ich sparsować to należ wykonać poniższe sprawdzenie 
    129         // Wyjątek CommandException przerywa działanie komedny! 
    130         if ((empty($params)) OR (!is_array($this->params))) { 
    131             $this->setMessage(Translator::translate('Komenda nie może zostać wykonana ze względu na brak parametrów lub nieudanej próbie ich utworzenia.'), 'WARNING'); 
    132             $this->setMessage(Translator::translate('Komenda nie została wykonana.'), 'ERROR'); 
    133             throw new CommandException($this); 
    134         } 
    135  
    136         // api komendy do weryfikacji parametrów 
    137         $api = self::getCommandApi(); 
    138  
    139         // walidajca parametrów 
    140         if ((!array_key_exists('contid', $this->params)) OR (!is_numeric($this->params['contid']))) { 
    141             $this->setMessage(sprintf(Translator::translate('Komenda nie może zostać wykonana ze względu na brak parametru contid - %s.'), $api['contid']['dscrpt']), 'WARNING'); 
    142             $this->setMessage(Translator::translate('Komenda nie została wykonana.'), 'ERROR'); 
    143             throw new CommandException($this); 
    144         } 
    145  
    146         // klucz główny tabeli doc_id lub prc_id (kontekst procedury) 
    147         $keyval = $bean->getPkeyValue(); 
    148  
    149         // $this->action - bean PSAction tabela proc_actions 
    150         // $this->stageBean - bean etapu StageOfProc tabela stages 
    151  
    152         // Zwraca obiekt (klasy Bean) definicji etapu jaki jest wykonywany czyli dane z stages_def - definicja etapu 
    153         $stage = $this->getStageDefObj(); 
    154  
    155         // Zwraca obiekt (klasy Bean) procedury (tabela procedures) 
    156         $procedure = $this->getProcedure(); 
    157  
    158         // Informacja o tym co zostało zrobione 
    159         $this->setMessage(sprintf(Translator::translate('Kontakt o identyfikatorze %d został dodany do dokumentu.'), $this->params['contid']), 'SUCCESS'); 
    160  
    161         return TRUE; 
    162  
    163     }  
    164  
    165 } // class ExampleCommand 
    166  
    167 ?> 
    168  
    169 }}} 
    170  
    171 Przykładowe komendy są dostępne pod adresem http://support.edokumenty.eu/download/deployment/commands/ 
     3Strona została przeniesiona pod nowy adres [http://dokumentacja.edokumenty.eu/index.php/dokumentacja-online-systemu-edokumenty/przetwarzanie-danych/komendy/]