一、工作流设计思路
工作流设计是按照一定的规则和流程,将业务逻辑流程化、标准化,让业务的处理过程更加规范、流畅。所以在进行工作流设计时,需要遵循以下思路:
1、需求收集:了解客户的需求和业务流程,把握业务流程的整个逻辑以及各个业务步骤中的具体处理。
2、流程梳理:对业务流程进行细致梳理,明确各个业务阶段的处理流程,明确流程中需要经过哪些步骤,需要哪些角色进行处理,以及要求处理的输入信息是哪些。
3、流程建模:根据业务流程梳理的结果,用相关的建模工具进行流程建模,把业务流程转化为规范的流程图。
4、逻辑处理:对流程图进行逻辑处理,确定各个节点的先后顺序,并实现流程控制逻辑,如条件分支、循环判断等。
5、界面设计:将流程图转化为具体的交互界面,方便用户进行操作和反馈。
二、工作流程设计图
工作流程设计图是工作流程梳理的重要组成部分,也是工作流程设计的重要输出品。它是将业务流程的各个细节通过节点串联在起形成的逻辑图,通常采用流程图形式。工作流程设计图可以更形象、直观地呈现业务流程,从而更清楚地表达流程的处理逻辑。
[
'next' => 'Step1',
],
'Step1' => [
'next' => 'Step2,Step3',
'event' => 'checkContent',
'check' => 'contentCheck',
],
'Step2' => [
'next' => 'Step4',
'event' => 'passReviewA',
'check' => 'reviewCheckA',
],
'Step3' => [
'next' => 'Step4',
'event' => 'passReviewB',
'check' => 'reviewCheckB',
],
'Step4' => [
'next' => 'End',
'event' => 'approve',
],
'End' => [
'next' => '',
],
];
/**
* 流程引擎处理
*/
public function execute() {
$step = 'Start';
while ($step) {
$step = $this->getNextStep($step);
if ($step) {
$this->handleEvent($this->flowchart[$step]['event']);
}
}
}
/**
* 获取下一个步骤
* @param string $step 当前步骤
* @return string|null 下一个步骤
*/
protected function getNextStep($step) {
$next = $this->flowchart[$step]['next'];
if (!$next) {
return null;
}
$nextSteps = explode(',', $next);
foreach ($nextSteps as $nextStep) {
if ($this->checkCondition($nextStep)) {
return $nextStep;
}
}
return null;
}
/**
* 判断是否满足条件
* @param string $step 步骤
* @return bool 是否满足条件
*/
protected function checkCondition($step) {
$condition = $this->flowchart[$step]['check'];
if (!$condition) {
return true;
}
return $this->$condition();
}
protected function contentCheck() {
return true;
}
protected function reviewCheckA() {
return true;
}
protected function reviewCheckB() {
return false;
}
/**
* 按照事件处理
* @param string $event 事件
*/
protected function handleEvent($event) {
echo $event.'
';
}
}
$workflow = new Workflow();
$workflow->execute();
?>
三、工作流设计器
工作流设计器是用于生成业务流程的工具。通过工作流设计器,可以直观地设计出一套规范的业务流程。根据不同的需求,可以选择不同的工作流设计器进行设计,市场上有很多成熟的在线设计器和桌面设计器,也可以进行自研。
四、工作流设计器web版
工作流设计器的web版可以让用户在浏览器上快速设计出标准的业务流程。与桌面版相比,web版没有安装复杂、存储资源占用少的特点,通过云服务,可以实现在线协作。
示例:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>工作流设计器</title>
<link rel="stylesheet" href="https://cdn.staticfile.org/iview/3.3.0-rc.3/styles/iview.css">
<script src="https://cdn.staticfile.org/vue/2.5.17/vue.min.js"></script>
<script src="https://cdn.staticfile.org/iview/3.3.0-rc.3/iview.min.js"></script>
<script src="https://cdn.staticfile.org/gojs/2.0.13/go.js"></script>
</head>
<body>
<div id="app"></div>
<script>
new Vue({
el: '#app',
template: '<WorkflowDesign />',
components: {
WorkflowDesign: WorkflowDesign,
}
});
</script>
</body>
</html>
五、工作流设计模式
工作流设计模式是指根据不同的业务场景,采用不同的设计模式,以实现相应的功能。常用的工作流设计模式有串行模式、并行模式、条件分支模式等。
示例:
/**
* 工作流设计--串行模式示例
*/
class SerialWorkflow {
/**
* 流程执行
*/
public function execute() {
$result = $this->step1();
if ($result) {
$result = $this->step2();
}
if ($result) {
$result = $this->step3();
}
return $result;
}
/**
* 步骤1
*/
protected function step1() {
echo 'step1
';
return true;
}
/**
* 步骤2
*/
protected function step2() {
echo 'step2
';
return true;
}
/**
* 步骤3
*/
protected function step3() {
echo 'step3
';
return true;
}
}
$workflow = new SerialWorkflow();
$workflow->execute();
六、工作流设计软件
工作流设计软件是指一种支持图形化操作,用于实现业务流程和逻辑的应用软件。常见的工作流设计软件有BPMN Designer、流程引擎、Flowable等。
七、工作流设计方案
工作流设计方案是指一套比较完整的设计方案,包括了从需求搜集、流程架构设计、逻辑处理、界面设计、测试、上线等环节的整个流程和具体实现方案。
八、工作流设计特有的元素
工作流设计特有的元素是指用于流程建模的特殊元素。例如,流程、节点、连线、事件、角色、状态、任务等元素。这些元素是构成工作流设计的基础。
九、工作流设计器特有的元素
工作流设计器特有的元素是指用于流程设计器的特殊元素。这些元素通常是一些可拖拽的图形图标,例如矩形、圆形、箭头等。这些元素可以被用户拖放到流程设计界面中,用于建模。
十、工作流设计思路以及数据结构选取
在进行工作流设计时,需要建立一套完整的思路和数据结构模型。常用的思路有BPMN、UML等,常用的数据结构有树形结构、队列、状态机等。根据不同的业务需求,选取不同的思路和数据结构,以实现更加灵活、高效的工作流设计。