用于PHP表单提交的UML序列图

3

我正在尝试创建两个UML图,以描述一个php应用程序的提交过程(在设计更改之前/之后)。我意识到我的UML已经非常生疏了,我怀疑我的图表是否正确,尽管我认为它很好地描述了这个过程。

第一个图表(在我改变设计之前)。

  1. 用户进入CMS页面(manage.php)
  2. Manage.php开始构建HTML,需要一些数据库数据。
  3. 5-10秒钟后,CMS准备好并显示给用户作为HTML。
  4. 用户选择要编辑的某个包含表单的页面(有多个页面,每个页面都有自己的表单,可以编辑不同的内容)。
  5. 用户编辑/更改表单(所有表单在步骤2中加载了当前设置)。
  6. 用户点击提交按钮。所有表单数据都发送到processor.php,cms页面死机?(表单刷新页面)。
  7. 用户使用一些会话工具进行验证(Facebook SDK)返回成功。
  8. 处理器标识操作(哪些表单被编辑)。
  9. 处理器验证接收到的数据(它是OK)返回成功。
  10. 处理器向数据库发送CRUD操作。成功!
  11. 处理器设置一些头文件并向客户端发送响应。
  12. CMS重新加载所有内容并从数据库获取新数据。
  13. 完成加载后,用户再次获得HTML页面。

enter image description here 如何显示CMS及其js死机?(红色X),如何显示它是如何重新实例化的(蓝色->)?

设计更改

由于这个设计很差,我决定进行更改。我决定使用jQuery ajax请求异步提交更改,而不是每次编辑一个小表单时重新加载整个CMS。CMS页面从未刷新,现在“保存”过程比5-10秒快得多。

  1. 用户进入CMS页面(manage.php)
  2. Manage.php开始构建HTML,需要一些数据库数据。
  3. 加载屏幕尽早显示。
  4. 5-10秒后,CMS准备就绪,并以HTML形式显示给用户。
  5. 用户选择要编辑的包含表单的页面....
  6. 用户编辑/更改表单....
  7. 用户点击保存按钮并触发一个函数。
  8. 收集表单数据并分配给一个变量。
  9. 在进行ajax请求之前,按钮变为橙色以表示它还未读取。同时禁用该按钮。
  10. 进行ajax请求。
  11. 对用户进行验证...成功。
  12. 处理器识别操作....
  13. 处理器验证接收到的数据....成功。
  14. 处理器向数据库发送CRUD操作。成功!
  15. 处理器设置状态200并向客户端发送响应。
  16. 然后ajax函数调用success()函数,将按钮变为绿色以表示现在已完成。

enter image description here 验证过程相同。但其余部分是新的,我也不确定这是否正确。两者都对我来说很合理,但当涉及到UML时,我的逻辑感通常不是正确的解决方案。


乍一看这个问题似乎没问题。但是细节方面,你的问题太过宽泛了。 - qwerty_so
1个回答

2
至少在第一个方案中,我可以提供以下评论: - 不错,我不知道你的工具,但它能从代码生成图表,对吧?
    • 选择页面:前一结束之前的奇怪起点
  • 无法删除manage.php并发送响应

  • 迭代应该是一个循环:17.6.3.17 循环 interactionOperator循环表示CombinedFragment表示循环。 loop操作数将重复多次。 有一个保护来定义循环条件。

  • 所有信息都不符合逻辑的长时间执行。 它不由信息执行...

  • 一些邮件跨越了此执行,这似乎是不合逻辑的,因为所有邮件都是同步的...

红框是ExecutionSpecification。 “ExecutionSpecification是行为或动作单元在生命线内执行的规范。”

对我来说,它模拟了通过邮件激活的操作。


你好。感谢你的帮助。我更新了两张图片,进行了一些小修正。--“选择页面”是由演员执行的操作,JavaScript 处理该请求并更改 CMS(manage.php)的内容,它仍然在运行吗?红框表示正在运行/活动中,对吗?还是表示正在操作?-- manage.php 首先发送一个 post 请求,然后接收响应并刷新。你的意思是它在接收到响应后应该关闭(X)吗?或者我应该如何在视觉上显示它的当前状态已经被完全替换,因为页面重新加载了? - Rasmus Puls
@ Rasmus Puls,你的红色框是ExecutionSpecification,我已经添加了一条评论。分类器是否活动由生命线(垂直虚线)显示。 - granier
啊哈,所以在第二张图中,我应该将“长”的垂直执行框缩短,只有在该通道中执行代码时才出现。如果它调用另一个通道中的方法(并等待返回),我会停止红色框,并在另一个通道上方放置箭头,从而可以继续红色框。如果它启动了一个线程并继续运行,而另一个通道中的调用也在运行,则我可以在两个通道中都继续红色框? - Rasmus Puls
1
@Rasmus Puls 更好,我今晚会检查(法国时间) - granier
1
在这种情况下,@Rasmus Puls,“橙色按钮箭头”与其他调用一样,并不是返回消息。对于一个执行,在返回消息之后,您不能发送其他消息。成功的关键是两个黑色箭头,每个调用一个,所以您会得到两个调用?我觉得“橙色按钮”并不是发给演员,而是发给管理者。我只谈第二个模式。 - granier
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接