Version 2 (modified by viani, 17 years ago) (diff) |
---|
CRIAÇÃO DE NOVAS INSTÂNCIAS A PARTIR DE STANDALONES / OUTRAS INSTÂNCIAS
Através de modificações feitas na engine do Workflow, foi disponibilizada a possibilidade de criar novas instâncias a partir de uma outra instância ou a partir de atividades standalone.
A criação destas instâncias tem como base a simulação da ação do usuário em uma atividade start.
Por exemplo, supondo que para finalizar a atividade "Compor Solicitação", do tipo start, o usuário precise fornecer um título e uma descrição para a solicitação e executar a ação "Enviar". O código abaixo representa dois métodos da model da atividade "Compor Solicitação":
function validar() { $erros = array(); if (empty($this->_titulo)) $erros[] = "Insira um título"; if (empty($this->_descricao)) $erros[] = "Insira uma descrição"; return $erros; } function enviarAction() { if (count($this->activity->error = $this->validar()) == 0) { /* salva os dados e finaliza a instância */ } else return false; }
Neste caso se quisermos, a partir de uma standalone, criar instâncias com base na atividade start "Compor Solicitação", devemos simular a ação do usuário no ato de composição de solicitação. Isto pode ser feito da seguinte forma (para o caso citado), na model.
$_REQUEST['action'] = 'enviar'; $_REQUEST['_titulo'] = 'meu título'; $_REQUEST['_descricao'] = 'minha descrição';
A chamada que faz a simulação para a atividade "Compor Solicitação", pode ser vista abaixo (chamada na model):
$this->instance->createChildInstance('Compor Solicitação');
Assim sendo, o código completo que coloca os dados desejados e simula a ação "Enviar" da atividade "Compor Solicitação" fica assim:
$_REQUEST['action'] = 'enviar'; $_REQUEST['_titulo'] = 'meu título'; $_REQUEST['_descricao'] = 'minha descrição'; $this->instance->createChildInstance('Compor Solicitação');
Também é possível fazer um loop para a criação de várias instâncias. Por exemplo:
function criarAction() { $_REQUEST['action'] = 'enviar'; for ($i = 0; $i < 3; $i++) { $_REQUEST['_titulo'] = 'meu título: ' . date("Hhimss"); $_REQUEST['_descricao'] = 'descrição'; $this->instance->createChildInstance('Compor Solicitação'); } }
Outros parâmetros disponíveis para o {{createChildInstance}} podem ser vistos na Documentação do código fonte do Workflow, gerada com phpDocumentor