From 3510f9a8bc7dce0b0ef3d3717bdf27936095f8d3 Mon Sep 17 00:00:00 2001 From: Dennis Eichhorn Date: Thu, 21 Jul 2016 21:06:57 +0200 Subject: [PATCH] Wrokflow draft --- Controller.php | 12 +-- Docs/workflow_components.md | 17 ++++ Models/WorkflowInterface.php | 32 +++++++ Templates/Permission/PermissionStatus.php | 36 ++++++++ Templates/Permission/States.php | 37 ++++++++ Templates/Permission/Workflow.php | 77 +++++++++++++++++ Templates/Permission/permission-info.tpl.php | 0 Templates/Permission/template.tpl.php | 0 Theme/Backend/workflow-list.tpl.php | 86 ------------------- .../Backend/workflow-template-create.tpl.php | 19 ++++ Theme/Backend/workflow-template-list.tpl.php | 22 +++++ Theme/Backend/workflow-template.tpl.php | 50 ----------- 12 files changed, 246 insertions(+), 142 deletions(-) create mode 100644 Docs/workflow_components.md create mode 100644 Models/WorkflowInterface.php create mode 100644 Templates/Permission/PermissionStatus.php create mode 100644 Templates/Permission/States.php create mode 100644 Templates/Permission/Workflow.php create mode 100644 Templates/Permission/permission-info.tpl.php create mode 100644 Templates/Permission/template.tpl.php delete mode 100644 Theme/Backend/workflow-list.tpl.php create mode 100644 Theme/Backend/workflow-template-create.tpl.php create mode 100644 Theme/Backend/workflow-template-list.tpl.php delete mode 100644 Theme/Backend/workflow-template.tpl.php diff --git a/Controller.php b/Controller.php index 624871d..8c21b85 100644 --- a/Controller.php +++ b/Controller.php @@ -89,8 +89,8 @@ class Controller extends ModuleAbstract implements WebInterface public function viewWorkflowTemplates(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable { $view = new View($this->app, $request, $response); - $view->setTemplate('/Modules/Workflow/Theme/Backend/task-dashboard'); - $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1001101001, $request, $response)); + $view->setTemplate('/Modules/Workflow/Theme/Backend/workflow-template-list'); + $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1005501001, $request, $response)); return $view; } @@ -109,7 +109,7 @@ class Controller extends ModuleAbstract implements WebInterface { $view = new View($this->app, $request, $response); $view->setTemplate('/Modules/Workflow/Theme/Backend/task-single'); - $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1001101001, $request, $response)); + $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1005501001, $request, $response)); return $view; } @@ -128,7 +128,7 @@ class Controller extends ModuleAbstract implements WebInterface { $view = new View($this->app, $request, $response); $view->setTemplate('/Modules/Workflow/Theme/Backend/task-create'); - $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1001101001, $request, $response)); + $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1005501001, $request, $response)); return $view; } @@ -146,8 +146,8 @@ class Controller extends ModuleAbstract implements WebInterface public function viewWorkflowTemplateCreate(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable { $view = new View($this->app, $request, $response); - $view->setTemplate('/Modules/Workflow/Theme/Backend/task-analysis'); - $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1001101001, $request, $response)); + $view->setTemplate('/Modules/Workflow/Theme/Backend/workflow-template-create'); + $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1005501001, $request, $response)); return $view; } diff --git a/Docs/workflow_components.md b/Docs/workflow_components.md new file mode 100644 index 0000000..2326e8e --- /dev/null +++ b/Docs/workflow_components.md @@ -0,0 +1,17 @@ +# Workflow Components + +Every workflow has to provide a set of components in order to work. Other files are optional but can be used in order to enhance the experience. Additional files may be provided for better templating or for additional models but are not a necessety. + +## Template + +The `template.tpl.php` file contains the UI of the workflow. + +## States + +A `States.php` file contains all workflow states. This is especially important in order to show different content inside of the `template.tpl.php` depending on the state or in order to trigger state depended actions. + +## Workflow + +The `Workflow.php` file is the heart of every workflow. This file is responsible for executing state driven actions and it can also be seen as the API for a workflow. All workflow related actions will be forwarded to this file and can be handled inside including database queries. + +## \ No newline at end of file diff --git a/Models/WorkflowInterface.php b/Models/WorkflowInterface.php new file mode 100644 index 0000000..bf759df --- /dev/null +++ b/Models/WorkflowInterface.php @@ -0,0 +1,32 @@ + + * @author Dennis Eichhorn + * @copyright 2013 Dennis Eichhorn + * @license OMS License 1.0 + * @version 1.0.0 + * @link http://orange-management.com + */ +namespace Modules\Workflow\Models; + +/** + * Task status enum. + * + * @category Workflow + * @package Modules + * @author OMS Development Team + * @author Dennis Eichhorn + * @license OMS License 1.0 + * @link http://orange-management.com + * @since 1.0.0 + */ +interface WorkflowInterface +{ + +} \ No newline at end of file diff --git a/Templates/Permission/PermissionStatus.php b/Templates/Permission/PermissionStatus.php new file mode 100644 index 0000000..4e62c79 --- /dev/null +++ b/Templates/Permission/PermissionStatus.php @@ -0,0 +1,36 @@ + + * @author Dennis Eichhorn + * @copyright 2013 Dennis Eichhorn + * @license OMS License 1.0 + * @version 1.0.0 + * @link http://orange-management.com + */ +namespace Modules\Workflow\Templates\Permission; + +use phpOMS\Datatypes\Enum; + +/** + * Task status enum. + * + * @category Tasks + * @package Modules + * @author OMS Development Team + * @author Dennis Eichhorn + * @license OMS License 1.0 + * @link http://orange-management.com + * @since 1.0.0 + */ +abstract class PermissionStatus extends Enum +{ + const PENDING = 1; + const APPROVED = 2; + const DISMISSED = 3; +} diff --git a/Templates/Permission/States.php b/Templates/Permission/States.php new file mode 100644 index 0000000..51dbf46 --- /dev/null +++ b/Templates/Permission/States.php @@ -0,0 +1,37 @@ + + * @author Dennis Eichhorn + * @copyright 2013 Dennis Eichhorn + * @license OMS License 1.0 + * @version 1.0.0 + * @link http://orange-management.com + */ +namespace Modules\Workflow\Templates\Permission; + +use phpOMS\Datatypes\Enum; + +/** + * Task status enum. + * + * @category Tasks + * @package Modules + * @author OMS Development Team + * @author Dennis Eichhorn + * @license OMS License 1.0 + * @link http://orange-management.com + * @since 1.0.0 + */ +abstract class States extends Enum +{ + const DEFAULT = 0; + const PENDING = 1; + const APPROVED = 2; + const DISMISSED = 3; +} diff --git a/Templates/Permission/Workflow.php b/Templates/Permission/Workflow.php new file mode 100644 index 0000000..de77d45 --- /dev/null +++ b/Templates/Permission/Workflow.php @@ -0,0 +1,77 @@ + + * @author Dennis Eichhorn + * @copyright 2013 Dennis Eichhorn + * @license OMS License 1.0 + * @version 1.0.0 + * @link http://orange-management.com + */ +namespace Modules\Media; + +use Modules\Workflow\Models\WorkflowInterface; +use Modules\Workflow\Templates\Permission\States; +use phpOMS\DataStorage\Database\Connection\ConnectionAbstract; + +/** + * Media class. + * + * @category Modules + * @package Modules\Media + * @author OMS Development Team + * @author Dennis Eichhorn + * @license OMS License 1.0 + * @link http://orange-management.com + * @since 1.0.0 + */ +class Workflow implements WorkflowInterface +{ + private $id = 0; + private $state = 0; + private $con = null; + + public function __construct(ConnectionAbstract $con) + { + $this->con = $con; + } + + public function run($data) : int + { + switch ($this->state) { + case States::DEFAULT: + $this->state = $this->runRequest($data); + break; + case States::PENDING: + $this->state = $this->runPending($data); + break; + default: + + } + + return $this->state; + } + + public function runRequest($data) + { + // todo: create workflow + // todo: create task + // todo: set state + } + + public function runPending($data) + { + // todo: approve?! + // todo: + } + + public function getState() : int + { + return $this->state; + } +} \ No newline at end of file diff --git a/Templates/Permission/permission-info.tpl.php b/Templates/Permission/permission-info.tpl.php new file mode 100644 index 0000000..e69de29 diff --git a/Templates/Permission/template.tpl.php b/Templates/Permission/template.tpl.php new file mode 100644 index 0000000..e69de29 diff --git a/Theme/Backend/workflow-list.tpl.php b/Theme/Backend/workflow-list.tpl.php deleted file mode 100644 index d459c6d..0000000 --- a/Theme/Backend/workflow-list.tpl.php +++ /dev/null @@ -1,86 +0,0 @@ - - * @author Dennis Eichhorn - * @copyright 2013 Dennis Eichhorn - * @license OMS License 1.0 - * @version 1.0.0 - * @link http://orange-management.com - */ -/** - * @var \phpOMS\Views\View $this - * @var \Modules\Tasks\Models\Task[] $tasks - */ -$tasks = $this->getData('tasks'); -echo $this->getData('nav')->render(); ?> - -
- - - - - - $task) : $c++; - $url = \phpOMS\Uri\UriFactory::build('/{/lang}/backend/task/single?id=' . $task->getId()); - $color = 'darkred'; - if($task->getStatus() === \Modules\Tasks\Models\TaskStatus::DONE) { $color = 'green'; } - elseif($task->getStatus() === \Modules\Tasks\Models\TaskStatus::OPEN) { $color = 'darkblue'; } - elseif($task->getStatus() === \Modules\Tasks\Models\TaskStatus::WORKING) { $color = 'purple'; } - elseif($task->getStatus() === \Modules\Tasks\Models\TaskStatus::CANCELED) { $color = 'red'; } - elseif($task->getStatus() === \Modules\Tasks\Models\TaskStatus::SUSPENDED) { $color = 'yellow'; } ;?> - -
l11n->getText('Tasks', 'Backend', 'Tasks'); ?>
l11n->getText('Tasks', 'Backend', 'Status'); ?> - l11n->getText('Tasks', 'Backend', 'Due'); ?> - l11n->getText('Tasks', 'Backend', 'Title'); ?> - l11n->getText('Tasks', 'Backend', 'Creator'); ?> - l11n->getText('Tasks', 'Backend', 'Created'); ?> -
l11n->getText('Tasks', 'Backend', 'S' . $task->getStatus()); ?> - getDue()->format('Y-m-d H:i'); ?> - getTitle(); ?> - getCreatedBy(); ?> - getCreatedAt()->format('Y-m-d H:i'); ?> - -
l11n->getText(0, 'Backend', 'Empty'); ?> - -
-
- -
-
-

l11n->getText('Tasks', 'Backend', 'Settings'); ?>

-
-
- -
-
-
-
-
-
- -
-

l11n->getText('Tasks', 'Backend', 'Settings'); ?>

-
- -
l11n->getText('Tasks', 'Backend', 'Received'); ?>0 -
l11n->getText('Tasks', 'Backend', 'Created'); ?>0 -
l11n->getText('Tasks', 'Backend', 'Forwarded'); ?>0 -
l11n->getText('Tasks', 'Backend', 'AverageAmount'); ?>0 -
l11n->getText('Tasks', 'Backend', 'AverageProcessTime'); ?>0 -
l11n->getText('Tasks', 'Backend', 'InTime'); ?>0 -
-
-
-
diff --git a/Theme/Backend/workflow-template-create.tpl.php b/Theme/Backend/workflow-template-create.tpl.php new file mode 100644 index 0000000..9dd9c79 --- /dev/null +++ b/Theme/Backend/workflow-template-create.tpl.php @@ -0,0 +1,19 @@ + + * @author Dennis Eichhorn + * @copyright 2013 Dennis Eichhorn + * @license OMS License 1.0 + * @version 1.0.0 + * @link http://orange-management.com + */ +/** + * @var \phpOMS\Views\View $this + */ +echo $this->getData('nav')->render(); ?> diff --git a/Theme/Backend/workflow-template-list.tpl.php b/Theme/Backend/workflow-template-list.tpl.php new file mode 100644 index 0000000..b787d24 --- /dev/null +++ b/Theme/Backend/workflow-template-list.tpl.php @@ -0,0 +1,22 @@ + + * @author Dennis Eichhorn + * @copyright 2013 Dennis Eichhorn + * @license OMS License 1.0 + * @version 1.0.0 + * @link http://orange-management.com + */ +/** + * @var \phpOMS\Views\View $this + * @var \Modules\Tasks\Models\Task[] $tasks + */ +$tasks = $this->getData('tasks'); +echo $this->getData('nav')->render(); ?> + diff --git a/Theme/Backend/workflow-template.tpl.php b/Theme/Backend/workflow-template.tpl.php deleted file mode 100644 index 548281f..0000000 --- a/Theme/Backend/workflow-template.tpl.php +++ /dev/null @@ -1,50 +0,0 @@ - - * @author Dennis Eichhorn - * @copyright 2013 Dennis Eichhorn - * @license OMS License 1.0 - * @version 1.0.0 - * @link http://orange-management.com - */ -/** - * @var \phpOMS\Views\View $this - */ -echo $this->getData('nav')->render(); ?> - -
-

l11n->getText('Tasks', 'Backend', 'Account'); ?>

-
-
- -
-
-
-
-
-
-
-
-
-
-
- -
-

l11n->getText('Tasks', 'Backend', 'Statistics'); ?>

-
- -
l11n->getText('Tasks', 'Backend', 'Received'); ?>0 -
l11n->getText('Tasks', 'Backend', 'Created'); ?>0 -
l11n->getText('Tasks', 'Backend', 'Forwarded'); ?>0 -
l11n->getText('Tasks', 'Backend', 'AverageAmount'); ?>0 -
l11n->getText('Tasks', 'Backend', 'AverageProcessTime'); ?>0 -
l11n->getText('Tasks', 'Backend', 'InTime'); ?>0 -
-
-