可以用chatgpt写会议纪要吗 ChatGPT+PlantUML说说话就能搞定所有建模图
序言
业务需求的研发过程中,无论是产品依据业务画流程状态图,还是研发画类图,测试画用例分析图都会耗费大量的时间。+可以作为一种效率工具快速出底稿,并且学习成本约等于零。
本文讲述了如何利用+快速生出建模图,有助于消弭多方角色(包括业务方,产品,开发和测试等)间的认知差。文中所用工具和,选用是因为作图能力不够完善,所以需要有一种工具能将文本转换成图文形式,图文形式信息量更丰富,更易于理解。是将代码转为图文,可以随时将代码作为的前置知识,不用丢失上下文信息。
正文
接下来会用文字模拟一个业务需求会看如何快速生成建模图。灰底的文字块为回答的内容,出现的图均使用进行绘制。
我:业务方和产品经理开会谈业务需求,产品将会议纪要转为成业务流程图给到技术开发,技术开发根据流程图设计技术方案画出UML图并转化成代码语言,开发完成后测试人员根据业务设计各种测试用例分析来验证代码的正确性。 请将以上的流程转为成
@startuml
actor 业务方
actor 产品经理
actor 技术开发
actor 测试人员
业务方 -> 产品经理 : 提出业务需求
产品经理 -> 技术开发 : 会议记录转为业务流程图
技术开发 -> 技术开发 : 设计技术方案
技术开发 -> 技术开发 : 画出 UML 图
技术开发 -> 技术开发 : 转化成代码语言
技术开发 -> 测试人员 : 提供代码
测试人员 -> 测试人员 : 设计各种测试用例
测试人员 -> 测试人员 : 分析验证代码的正确性
@enduml
业务方说我想要一个工作流。产品经理说:流程的运转简单吗。业务方说简单的。产品经理说:那设计一个有限状态机的工作流程就行了,请设计一个有限状态机的工作流程
好的,下面是一个简单的有限状态机工作流程设计:
1. 初始状态(Start):工作流开始的状态,表示还未开始处理任务。
2. 待处理状态(Ready):在这个状态下,工作流已收到任务,但还未开始处理。
3. 处理中状态(In Progress):在这个状态下,工作流正在处理任务,可能需要花费一定的时间和资源。
4. 审核状态(Review):在这个状态下,工作流已完成任务,但需要进行审核或确认。
5. 完成状态(Done):在这个状态下,工作流已完成任务,并且已经得到认可或批准。
根据实际情况,状态之间可以有不同的转换行为。比如:
1. 从初始状态到待处理状态:在这个步骤中,工作流接收任务并准备处理。
2. 从待处理状态到处理中状态:在这个步骤中,工作流开始处理任务,并进入执行阶段。
3. 从处理中状态到审核状态:在这个步骤中,工作流已经处理完任务并准备提交审核。
4. 从审核状态到完成状态:在这个步骤中,工作流已经得到审核结果,并确认任务完成。
以上仅为示例设计,具体的有限状态机工作流程还需要根据具体业务场景进行进一步的设计和调整。
产品:稍等我去画个流程状态图。要不你用给我画个图吧。
好的,下面是使用PlantUML画的有限状态机工作流程图:
@startuml
[*] --> Start
Start --> Ready
Ready --> InProgress
InProgress --> Review
Review --> Done
Done --> [*]
@enduml
以上是一个简单的有限状态机工作流程图,其中 Start 表示初始状态,[*] 表示终止状态,
Ready 表示待处理状态,InProgress 表示处理中状态,Review 表示审核状态,Done 表示完成状态。
箭头表示状态之间的转换,其中 Ready --> InProgress 表示从待处理状态到处理中状态的转换,
依次类推。通过这个图形化的表示,业务方可以更加直观地了解有限状态机工作流程。
业务方:看这张图就好懂多了,但是内容太单薄了,能否体现一下人工处理任务的过程
当涉及到人工处理任务时,以下是一个可能的过程:
1. 任务指派:一个任务被指派给一个工作人员或团队。
2. 理解任务:工作人员开始阅读任务说明和要求,确保他们理解任务的目的和目标。
3. 数据收集:工作人员开始搜集和整理任务所需的数据和信息,这可能包括查找数据库、文件或与其他人交流。
4. 数据处理:一旦数据被收集,工作人员开始分析、分类、整理和清洗数据以满足任务要求。
5. 解决问题:任务可能涉及到困难、复杂或技术性的问题。工作人员需要花时间研究这些问题并提出解决方案。
6. 审核和验证:一旦任务完成,工作人员需要进行审核和验证以确保工作的准确性、完整性和合规性。
7. 交付结果:一旦任务获得批准,工作人员将任务结果提交给业务方或其他相关方。
8. 反馈和调整:如果任务结果未达到预期目标,工作人员需要接受反馈并作出调整以确保任务成功完成。
以上是人工处理任务的基本过程。随着业务的不同以及任务的性质,该过程可能会有所不同。
产品经理:用来描述,下面我说的画图的意思都是用来描述
好的,PlantUML是一种轻量级的图形描述语言,它可以很方便地描述软件系统架构、流程图、时序图等等,以下是一个可能的人工处理任务过程的PlantUML描述:
@startuml
title 人工处理任务过程
|任务指派|
:一个任务被指派给
一个工作人员或团队;
|理解任务|
:工作人员开始阅读任务说明和要求,
确保他们理解任务的目的和目标;
|数据收集|
:工作人员开始搜集和整理任务所需的数据和信息,
这可能包括查找数据库、文件或与其他人交流;
|数据处理|
:一旦数据被收集,工作人员开始分析、分类、
整理和清洗数据以满足任务要求;
|解决问题|
:任务可能涉及到困难、复杂或技术性的问题
工作人员需要花时间研究这些问题并提出解决方案;
|审核和验证|
:一旦任务完成,工作人员需要进行审核
和验证以确保工作的准确性、完整性和合规性;
|交付结果|
:一旦任务获得批准,工作人员将
任务结果提交给业务方或其他相关方;
|反馈和调整|
:如果任务结果未达到预期目标,工作人员需要
接受反馈并作出调整以确保任务成功完成;
@enduml
以上是一个使用PlantUML来描述人工处理任务过程的示例。每一个步骤都用一个盒子和对应的说明表示,箭头表示步骤之间的关系。这种简单的语法和图形化方式,使得人们更容易理解整个过程的流程和步骤。
业务方说,那我想要一个财务工作流,大致流程如下:开始--->出纳制单---> 付款审核 ---> 付款 ---> 付款结果回填 ---> 结束,也画张图吧
好的,以下是使用PlantUML描述财务工作流的示意图:
@startuml
title 财务工作流
|开始|
start
:财务流程开始;
|出纳制单|
: 出纳根据需求制单;
|付款审核|
:付款审核人员根据
付款单核查付款信息;
|付款|
:出纳负责支付;
|付款结果回填|
: 付款后将回填付款结果;
|结束|
:财务流程结束;
end
@enduml
业务:内容有点单薄,我想体现各个节点间的流转过程。产品经理经理说:那你给一下流程条件啊。业务说:我相信,勇敢地画吧。
好的,我可以为您使用PlantUML绘制一张更加详细的财务工作流程图,展现各个节点之间的流转过程,同时增加流程条件来作为判断的依据。以下是示例:
@startuml
title 财务工作流程图
start
if (是否需要付款) then (是)
:出纳制单;
if (订单信息是否正确) then (是)
:付款审核;
if (审核通过) then (是)
:付款;
if (付款是否成功) then (是)
:付款结果回填;
else (否)
:付款失败;
endif
else (否)
:付款审核不通过;
endif
else (否)
:订单信息有误;
endif
else (否)
:不需要付款;
endif
stop
@enduml
以上示意图中,使用了循环和判断条件,形成了一个完整的条件流程。如果需要付款,则进入出纳制单环节,然后再进行相关的校验和审核,并根据审核结果选择是否要付款。如果付款成功,则回填结果,否则流程到此结束。如果不需要付款,则直接退出流程。这样的方式可以更加直观地展示整个流程,并且让人一目了然地看到各个步骤之间的关联。
业务方你看吧,我就知道它行的。但是这张图是流程图,我还要一张状态图。产品经理说:你还要啥自行车。
好的,以下是使用PlantUML描述财务工作流的状态图示例:
@startuml
title 财务工作状态图
[*] --> 未开始
state 出纳制单 {
state 待制单
state 制单中
state 制单完成
}
state 付款审核 {
state 待审核
state 审核中
state 审核完成
}
state 付款 {
state 待付款
state 付款中
state 付款完成
}
state 付款结果回填 {
state 待回填
state 回填中
state 回填完成
}
[*] --> 出纳制单
出纳制单 --> 付款审核 : 制单完成
付款审核 --> 付款 : 审核通过
付款 --> 付款结果回填 : 付款成功
付款 --> 出纳制单 : 付款失败
付款结果回填 --> [*] : 回填完成
@enduml
以上示意图中,使用了状态图的方式来描述整个过程的不同状态,每种步骤都是一个状态,状态之间使用箭头进行切换。初始状态是未开始,然后进入到出纳制单的状态,处理完毕后进入下一个状态,以此类推。这样的状态图更加清晰地展示了整个财务工作流程的状态变化,便于人们了解整个流程的状态。
业务:太棒了,那能用活动图来表示吗
@startuml
|初始状态|
start
:员工填写申请表并提交;
|出纳制单|
if (是否需要出纳制单?) then (yes)
:申请单送至出纳制单节点;
if (出纳是否制单?) then (yes)
:出纳制单;
:将申请单和制单结果提交给付款审核节点;
else (no)
:制单未完成;
endif
else (no)
:不需要出纳制单;
:将申请单提交给付款审核节点;
endif
|付款审核|
:付款审核节点审核申请单;
if (是否审核通过?) then (yes)
:将申请单提交给付款节点;
else (no)
:审核未通过;
|结束状态|
end
endif
|付款|
:付款节点进行付款;
if (是否付款成功?) then (yes)
:将付款结果回填到申请单中;
else (no)
:付款未成功;
endif
|付款结果回填|
:将申请单及付款结果送回申请人确认;
if (申请人是否确认?) then (yes)
:将申请单及付款结果提交给财务部;
else (no)
|结束状态|
end
endif
|结束状态|
end
@enduml
这时候测试插话了,这个状态话还没有流程图清晰好懂,帮我也设计一下用例分析吧.
好的,以下是使用PlantUML描述的财务工作的用例图示例:
@startuml
title 财务工作用例
actor 业务
actor 财务
actor 出纳
usecase "制单" as make_bill
usecase "审核" as audit
usecase "付款" as pay
usecase "回填" as fill
业务 --> make_bill
make_bill --> 出纳
出纳 --> audit
audit --> 财务
财务 --> pay
pay --> 出纳
出纳 --> fill
@enduml
以上示意图中,使用用例图的方式来描述了此财务工作流程中的各个参与者和操作。其中,有三个参与者:业务,财务和出纳。业务向出纳提交需要财务处理的单据或请求,出纳通过制单环节生成单据并移交给审核人员进行审核,审核完成后移交给财务处理付款事宜,财务通过付款环节进行支付。在支付过程中,出纳需要进行实际操作,并回填支付结果。这样的用例图能够更好地展示每个参与者的作用和职责,同时展现了各个步骤之间的关联。
测试说业务你看符合你的需求吗,业务说最好能再丰富一下信息,各个节点通过和拒绝都会到哪个角色哪个状态。产品说继续靠你了.
@startuml
|业务|
start
:登录系统并具有提交单据请求的权限;
:提交单据或请求;
|系统|
:正确接收并记录单据或请求信息;
|业务|
:确认系统能够正确记录并保存单据或请求信息;
|系统|
:保存单据或请求信息;
|业务|
stop
@enduml
@startuml
|出纳|
start
:登录系统并具有制单的权限;
:根据业务提交的单据或请求信息生成单据;
:移交审核人员进行审核;
|系统|
:正确接收并记录单据信息;
:将单据移交给审核人员;
|审核人员|
:根据单据信息进行审核;
:将审核完成的单据移交给财务进行支付处理;
|系统|
:正确接收并记录单据审核状态信息;
:将审核完成的单据正确移交给财务;
|财务|
:根据审核完成的单据信息进行付款操作;
|系统|
:正确处理付款事宜;
:将付款结果回填给出纳;
|出纳|
:回填支付结果,确认支付完成;
|系统|
:正确接收并记录付款结果信息;
:将已完成支付的单据标记为已完成状态;
|出纳|
stop
@enduml
测试说你真的太棒了。产品说这图我咋这么眼熟,真的是一秒出图啊。开发这时候发话了,能帮我把上述的信息整理成UML类模型吗。同时我想实现节点可配置,体现一个工作流对应多个流程节点,且每个节点之间有先后顺序。对了把节点的状态也加进去。
@startuml
interface I状态{
审批中: int
通过: int
拒绝: int
}
interface I节点{
+进入节点(): void
+处理(): void
+拒绝(): void
}
class 工作流{
-开始: I节点
-结束: I节点
-当前节点: I节点
-节点列表: List[I节点]
+添加节点(I节点): void
+启动流程(): void
+进入下一个节点(): void
+结束流程(): void
}
abstract class 流程节点 implements I节点{
#名称: string
#状态: int
-下一节点: I节点
-拒绝节点: I节点
#处理方法: Function
#拒绝方法: Function
+进入节点(): void
+处理(): void
+拒绝(): void
+修改状态(I状态): void
}
class 出纳制单节点 extends 流程节点{
+制单(): void
}
class 付款审核节点 extends 流程节点{
+审核(): void
+发送审核通知(): void
}
class 付款节点 extends 流程节点{
+付款(): void
+发送付款通知(): void
}
class 付款结果回填节点 extends 流程节点{
+回填(): void
}
enum 状态 implements I状态{
审批中
通过
拒绝
}
工作流 -> I节点
I节点 <|.. 流程节点
I节点 <|.. I状态
流程节点 o-- I状态
@enduml
开发:请将上述的模型转换成PHP代码,并且只有审批中的节点才能进行具体的业务逻辑操作
<?php
interface IStatus {
const 审批中 = 0;
const 通过 = 1;
const 拒绝 = 2;
}
interface INode {
public function 进入节点();
public function 处理();
public function 拒绝();
}
class 工作流 {
private $开始;
private $结束;
private $当前节点;
private $节点列表 = array();
public function 添加节点($节点) {
$this->节点列表[] = $节点;
}
public function 启动流程() {
$this->开始->进入节点();
$this->当前节点 = $this->开始;
}
public function 进入下一个节点() {
$下一节点 = $this->当前节点->get下一节点();
if ($下一节点 != null) {
$下一节点->进入节点();
$this->当前节点 = $下一节点;
} else {
$this->结束流程();
}
}
public function 结束流程() {
$this->结束->进入节点();
}
}
abstract class 流程节点 implements INode {
protected $名称;
protected $状态 = IStatus::审批中;
protected $下一节点;
protected $拒绝节点;
protected $处理方法;
protected $拒绝方法;
public function 进入节点() {
// do something
}
public function 处理() {
if ($this->状态 == IStatus::审批中) {
$this->处理方法();
$this->修改状态(IStatus::通过);
}
}
public function 拒绝() {
if ($this->状态 == IStatus::审批中) {
$this->拒绝方法();
$this->修改状态(IStatus::拒绝);
}
}
public function 修改状态($状态) {
$this->状态 = $状态;
}
public function get下一节点() {
if ($this->状态 == IStatus::通过) {
return $this->下一节点;
} else if ($this->状态 == IStatus::拒绝) {
return $this->拒绝节点;
} else {
return null;
}
}
}
class 出纳制单节点 extends 流程节点 {
public function 制单() {
if ($this->状态 == IStatus::审批中) {
// do something
}
}
}
class 付款审核节点 extends 流程节点 {
public function 审核() {
if ($this->状态 == IStatus::审批中) {
// do something
}
}
public function 发送审核通知() {
// do something
}
}
class 付款节点 extends 流程节点 {
public function 付款() {
if ($this->状态 == IStatus::审批中) {
// do something
}
}
public function 发送付款通知() {
// do something
}
}
class 付款结果回填节点 extends 流程节点 {
public function 回填() {
if ($this->状态 == IStatus::审批中) {
// do something
}
}
}
?>
在 流程节点 类中的 处理 和 拒绝 方法中添加了状态检查,只有 审批中 的节点才能执行具体的业务逻辑操作。
例如,在 出纳制单节点 类中的 制单 方法,只有在该节点处于 审批中 状态时才能进行具体的制单操作。
后记
+完全可以作为一种效率工具,前期快速出底稿和搭建相应代码框架。特别是基础知识这一块的表现得非常优秀,作为人类知识库它基本能覆盖到所有场景。但是切记一定要,有时候也会抽风。