Класс wAjaxWorkflow служит для создания схемы Workflow-процесса.
Основные параметры класса
| Параметр | Значение по умолчанию | Описание |
| с | null | Объект класса wPrototype. Отображает святи между контейнерами (connection object) |
| f | null | Объект класса wPrototype. Отображает контейнеры с даннями (transition object) |
| container | workflow | Id для блока div, в котором находится схема бизнес-процесса. |
| caption | Заголовок страницы. | |
| resizable | false | Возможность контейнеров менять размеры. |
| draggable | false | Возможность контейнеров к перетаскиванию. |
| jajaxworkflow | Подключение main/js/jquery.workflow.js. | |
| jquery | true | Подключение main/js/jquery.js |
| jqueryui | true | Подключение main/js/jqueryui.js |
| jcontextmenu | Подключение main/js/contextmenu.js | |
| adding | false | Возможность добавления записей |
| editing | false | Возможность редактирования записей. |
| copying | true | Возможность копирования записей. |
| editing | false | Возможность редактирования записей. |
| deleting | false | Возможность удаления записей. |
| cardurl | URL для карточки объекта. | |
| casecardurl | Callback-функция, которая срабатывает при клике на дочернем элементе. | |
| opercardurl | Название Callback-функции, которая вызывается при открытии диалогового окна. | |
| connector | Bezier | Название Callback-функции, которая вызывается при закрытии диалогового окна. |
| caseid | 0 | Родительское поле в редактируемой таблице. |
| headerclass | ui-widget-header | Код (id) объекта, начиная с которого надо рисовать элементы списка. |
| contentclass | wfcontent | Дополнительные ячейки таблицы над списком. |
Пример отображения Workflow-процесса:
$wfid = 4; //"живой" процесс
$objtype = (isset($_REQUEST['objtype'])) ? $_REQUEST['objtype'] : 0;
$objid = (isset($_REQUEST['objid'])) ? $_REQUEST['objid'] : 0;
$caseid = 7; //шаблон процесса
$parent = (isset($_POST["parent"])) ? $_POST["parent"] : 0;
include_once('main/classes/workflow.class.php');
class wwf extends wAjaxWorkFlow
{
public $workflowid = 0;
public $caseid = 0;
public function getXml($trans = 0)
{
$f = new wworkflow_models_wflow();
$f->id = $this->workflowid;
$f->caseid = $this->caseid;
return $f->getXml($trans);
}
public function moveforward($trans = 0)
{
$_SESSION['wwf_wflow_trans'] = array();
$w = new wworkflow_models_wfoper();
$w->caseid = $this->caseid;
return array('mess' => $w->fire($this->caseid, $trans), 'trans' => implode(',', $_SESSION['wwf_wflow_trans']));
}
public function movebackward($trans = 0)
{
$_SESSION['wwf_wflow_trans'] = array();
$w = new wworkflow_models_wfoper();
$w->caseid = $this->caseid;
return array('mess' => $w->goback($this->caseid, $trans), 'trans' => implode(',', $_SESSION['wwf_wflow_trans']));
}
public function getlastchanges()
{
if(!isset($_SESSION['wwf_wflow_trans'])) return 0;
if(!sizeof($_SESSION['wwf_wflow_trans'])) return 0;
return implode(',', $_SESSION['wwf_wflow_trans']);
}
}
$w = new wwf('wwf_wftrans', 'wwf_conns');
$name = $parser->utils->getFieldFromSql('SELECT title FROM wwf_wflow WHERE id='.$wfid, '');
$w->caption = $name;
$w->workflowid = $wfid;
$w->caseid = $caseid;
$w->f = new wworkflow_models_wftrans();
$w->f->setFieldVal('wfid', $wfid);
$w->f->setFieldAttr('wfid', 'refval', $name);
$w->f->setFieldAttr('wfid', 'ro', true);
$name = $parser->utils->getFieldFromSql('SELECT title FROM wwf_wftrans WHERE id='.$parent, '');
$w->c = new wworkflow_models_conns();
$w->c->wfid = $wfid;
$w->c->setFieldVal('fromtrans', $parent);
$w->c->setFieldAttr('fromtrans', 'refval', $name);
$w->c->setFieldVal('totrans', $parent);
$w->c->setFieldAttr('totrans', 'refval', $name);
$w->addHidden('wfid', $wfid);
$w->addHidden('objtype', $objtype);
$w->addHidden('objid', $objid);
$w->addHidden('caseid', $caseid);
$w->cardurl = $parser->makeUrl('wwf_wftrans_card');
$w->casecardurl = $parser->makeUrl('wwf_wfcase_card');
$w->show();