陈幸琦Kiqi: 2019-1-11 10:42


各位大佬,请教个问题


在做业务用例时(针对公司内部的业务),发现部分业务执行者是业务工人,这样有问题吗?如果有是不是目标组织没找准?


UMLChina潘加宇:


不会的,再看一遍第三章


陈幸琦Kiqi:


好滴


游戏人生:


业务执行者,应该在业务提供组织外面。医院的医生给医生看病,会不会出现像他所说@陈幸琦Kiqi 的情况


无处惹尘埃:


@游戏人生 我的理解是,即便医生给他自己看病,也要抽象成两个身份,一个是用例外的执行者,一个是用例内的业务工人


游戏人生:


@无处惹尘埃 我也这么想。


麻雀飞飞!:


@陈幸琦Kiqi 这其实是角色问题,就像您作为孩子的家长,同时也是您父母的孩子,角色这个概念很重要! 一个人在社会中有多个角色


潘加宇:


@陈幸琦Kiqi 如果你问的是其他同学说的这个问题,第三章还确实没说到这个问题,下次改版时再补上


陈幸琦Kiqi:


是上面各位大佬提到的场景,感谢�


潘加宇:


@游戏人生 @无处惹尘埃 说的是对的。但不是"用例"里面外面,是"组织"里面外面


P.69


[答疑]医院里医生给医生看病的业务建模_用例

P.147

[答疑]医院里医生给医生看病的业务建模_序列图_02

其实你的问题第三章也讲到了


陈幸琦Kiqi:


OK,晚上回去再好好读读书


潘加宇:


我把医生给医生看病的问题整理一下,借此可以澄清一些模糊的概念。


这里面最大的问题是研究对象的混淆。


以医院为研究对象,患者→看病是用例。用例图如下。


[答疑]医院里医生给医生看病的业务建模_建模_03

注意,此处的研究对象是医院,患者是通过和医院这个组织打交道达到治疗疾病的目的。为了达到这个目的,需要经过很多个步骤,从挂号、检查、交费到最终的治疗。


医院可能通过医生、护士这样的业务工人来实现用例的步骤,也可能全部通过外星黑科技医疗智能系统这样的业务实体来实现用例的步骤,当然,目前很可能是部分业务工人部分业务实体。


也就是说,医院的"看病"这个用例实际上是医院里很多条业务流程的总称,而经常容易混淆的地方就在这里,很多人把"看病"这个用例和"医生给患者检查"或"医生给患者开处方"这样的步骤等同了。


放在系统用例中,也会有这样的混淆。


就拿最常见的ATM机的"储户→取现金"为例。"储户→取现金"这个用例包含了多条路径和很多步骤,但很多人的思想中也经常把"储户→取现金"用例等同于用例的某个步骤例如"系统从账户扣除取现金额",甚至等同于"储户从存取款口取走钞票"(这甚至不属于用例的步骤),然后引出各种奇葩图形。


回到"医生给医生看病"。我们来看看它是什么个东西。


我们不先入为主说"医生给医生看病",我们只说看到的现象:张攻给李受检查身体;张攻、李受都是某医院的医生。


[答疑]医院里医生给医生看病的业务建模_用例_04

(1)如果张攻给李受检查身体是个人行为,不属于医院业务流程的一部分,那它什么也不是。张攻给李受两人在一起还可以打麻将、喝啤酒、啪啪啪,建模哪管得了那么多。


(2)如果张攻给李受检查身体的事情医院要管,那么它会成为医院业务流程的一个步骤。注意,不是用例。可以探讨的是,这个步骤属于哪个用例?


如果李受想要走到被张攻检查身体这一步,需要像其他患者一样走下来,那么李受就是患者。这个事情,不需要额外建模。


如果某医院另外为某个特殊人群(例如卫生系统干部)提供特殊服务,李受走的就是这个通道,那么李受就是卫干,这个步骤属于"卫干→特服"用例,可能位于该用例的基本路径中。


[答疑]医院里医生给医生看病的业务建模_序列图_05

如果张攻给李受检查身体是某医院内部福利,那么这个事情和年会、聚餐、乒乓球赛没有区别,属于"患者→看病"用例里扩展路径里的步骤。


[答疑]医院里医生给医生看病的业务建模_用例_06


参见《软件方法》3.3.2 识别业务用例的思路和常犯错误。