本文目标:业务分析师,在了解业务建模流程模型制作方法的条件下,进行流程模型制作,达到结构化、标准化描述业务操作过程的程度。
文章目录
1 场景
业务建模,使用数据模型、流程模型、产品模型,3个维度展示业务系统的全貌。
流程模型是核心,能够结构化、标准化描述业务操作过程,依赖数据模型输入的数据标准设计(包含实体、属性、属性域、代码值),以及产品模型输入的产品条件(产品工厂相关)。
一般的,业务种类繁多,才会涉及抽象出产品模型,大部分只涉及流程模型、数据模型。
首先列举流程模型相关的概念,便于后文理解。
(1)活动:由内部事件或外部事件触发,为满足特定业务目的,与干系人之间的交互过程;
(2)交易:活动中,与干系人之间的1次交互;
(3)任务:交易中,单一角色执行,具备明确业务目的的工作事项集合;
(4)步骤:任务中,单个工作事项;
(5)业务规则:步骤中,最细粒度的,具体数据项的加工逻辑;
流程模型的建设过程为,以数据模型为输入,按顺序进行描述业务规则、编排步骤、划分任务3步,得到“业务规则”、“步骤任务清单”、“输入输出参数”。
本文以微信公众号实现吉他调音功能,介绍流程模型的建设过程。
先看一下流程模型建设结果:
(1)业务规则
按照ICPro顺序(input输入、check检查、process处理、register登记、output输出),以及标准话术模版进行编写。
业务规则精确到伪代码级别,可以清晰的描述业务过程。
(2)步骤任务清单
业务规则按照单个工作事项合并成若干步骤,步骤按照明确业务目的的工作事项集合合并成若干任务。
交易对应微服务Controller层,任务对应微服务中Service层中的方法,步骤是更下一级的封装,该清单可以直接用于详细设计阶段,设计多少服务、以及服务内的方法。
(3)参数梳理
梳理得到的步骤级、任务级、交易级输入/输出参数,可以直接用于接口设计。
一般的,传达信息时“字不如图、图不如表”,业务建模得到流程模型后,能直观的看到伪代码级的流程描述,以及对应微服务模块的任务步骤划分,为后续详细设计打好了基础。
下面来看如果得到流程模型。
2 步骤
2.1 熟悉前置工作的输入
进行流程模型分析前,整体业务流程粗粒度分析已完成,数据模型初步建设也已完成。
微信公众号实现吉他调音功能,整体业务流程为:
可以看到,处理吉他调音活动中,分为2支交易,微信用户首先发送一次请求给微信公众号后台,配置“音调”、“弦号”,再发送语音进行频率计算。
1个流程模型Excel,只包含1支交易,本次以流程较复杂的计算音频频率交易为例。
四色分析法,初步梳理过相关实体(绿色表示实体、蓝色表示实体属性):
进一步完善的数据模型为:
熟悉了前面同事的工作结果后,可以正式开始进行流程模型分析。
2.2 描述业务规则
按照ICPro顺序(input输入、check检查、process处理、register登记、output输出),以及标准话术模版进行编写。
模版内容见“3 要点”章节。
根据模板,得到“计算音频频率”交易的业务规则如下:
业务规则1、接收输入入参
1、接收微信后台转发的用户请求,输入参数包含【微信用户ID】、【音频文件号】;
业务规则2、检查输入参数
1、若输入的【微信用户ID】为空,则报错“【微信用户ID】不可为空!”;
2、若输入的【音频文件号】为空,则报错“【音频文件号】不可为空!”;
业务规则3、下载音频文件
1、根据输入的【音频文件号】,调用<微信平台>《下载音频文件》方法,获取临时音频文件数据;
(1)若临时音频文件数据下载失败,则报错“音频文件下载失败!”;
2、根据临时音频文件数据,写入文件,生成amr音频文件;
业务规则4、处理音频文件格式转换
1、根据amr音频文件,调用<ffmpeg>《处理文件转换》方法,生成pcm音频文件;
(1)若pcm音频文件生成失败,则报错“pcm文件生成失败!”;
2、读取pcm音频文件,得到临时pcm音频文件数据;
业务规则5、计算频率
1、根据临时pcm音频文件数据,调用《fft傅里叶变换计算频率》方法,获取临时音频频率;
(1)若临时音频频率计算失败,则报错“音频频率计算失败!”
2、通过输入的【微信用户ID】,获取{调音参数表}记录;
3、通过{调音参数表}【音调】、{调音参数表}【弦号】,获取{频率标准对照表}记录;
4、计算临时偏差值,临时偏差值=临时音频频率-{频率标准对照表}【频率】;
(1)若临时偏差值大于0,则设置临时偏差方向为“1-偏高”,设置临时偏差绝对值为临时偏差值;
(2)若临时偏差值小于0,则设置临时偏差方向为“2-偏低”,设置临时偏差绝对值为临时偏差值的绝对值;
(3)临时偏差值等于0,则设置临时偏差方向为“0-无偏差”,设置临时偏差绝对值为0;
5、设置【调音结果描述】为“音频为”拼接临时音频频率,拼接“,偏差方向为:”,拼接临时偏差方向,拼接“,偏差值为:”,拼接临时偏差绝对值;
业务规则6、登记音频下载信息
1、登记{音频下载记录表}记录:
【音频文件号】赋值为输入的【音频文件号】;
【微信用户ID】赋值为输入的【微信用户ID】;
【交易日期】赋值为当前【交易日期】;
【交易时间】赋值为当前【交易时间】;
【文件下载状态】赋值为“1-成功”;
业务规则7、登记音频文件转换信息
1、登记{音频文件转换记录表}记录;
【音频文件号】赋值为输入的【音频文件号】;
【微信用户ID】赋值为输入的【微信用户ID】;
【交易日期】赋值为当前【交易日期】;
【交易时间】赋值为当前【交易时间】;
【文件转换状态】赋值为“1-成功”;
业务规则8、登记音频计算结果信息
1、登记{音频计算结果记录表}记录
【音频文件号】赋值为输入的【音频文件号】;
【微信用户ID】赋值为输入的【微信用户ID】;
【音调】赋值为{调音参数表}【音调】;
【弦号】赋值为{调音参数表}【弦号】;
【频率】赋值为临时音频频率;
【偏差方向】赋值为临时偏差方向;
【偏差值】赋值为临时偏差绝对值;
【交易日期】赋值为当前【交易日期】;
【交易时间】赋值为当前【交易时间】;
如果是面向过程的开发模式,其实可以直接拿业务规则描述结果进行业务代码开发了,按顺序实现所有过程即可。
面向对象设计,需要增加代码复用,所以需要进一步识别步骤、任务,封装到更高级别的模块里,碰到可能通用的,就独立开发给各个交易复用。
2.3 编排步骤
业务规则按照单个工作事项合并成若干步骤。
(1)下载音频文件步骤:包含业务规则3;
(2)处理音频文件格式转换步骤:包含业务规则4;
(3)计算频率步骤:包含业务规则5;
(4)登记吉他调音信息步骤:包含业务规则6、7、8;
可以看出,下载音频文件步骤是通用的,其他和音频有关的交易,可以服用该功能,不需要重复开发。
2.4 划分任务
步骤按照明确业务目的的工作事项集合合并成若干任务。
(1)处理音频文件下载任务:包含下载音频文件步骤;
(2)处理音频频率计算:包含处理音频文件格式转换步骤、计算频率步骤、登记吉他调音信息步骤;
可以看出,处理音频文件下载任务是通用的,其他和音频有关的交易,可以服用该功能,不需要重复开发。
2.5 梳理输入输出参数
如果想要为后续的接口设计提供更好的输入材料,可以额外梳理出步骤、任务、交易的输入输出参数。
3 要点
3.1 标准话术模版
标准话术模板很重要,决定业务规则是否能标准化描述整个交易的处理流程。
建模话术统一模板
1.括号使用规则:表名为{},字段名为【】,系统名为<>,交易名称和服务名称为《》,字段值和码值为“”
2.序号层次使用规则:第一层阿拉伯数字(比如1);第二层中文小括号阿拉伯数字(比如(1));第三层阿拉伯数字后面加中文反小括号(比如1));第四层小括号大写字母(比如(A));第五层小括号小写字母(比如(a));
1、
(1)
1)
(A)
(a)
3.补充信息描述:用括号包裹,比如(xxx);
4.表操作话术:
(1)查询:通过【xx1】、【xx2】、【xx3】,获取{table}【xxx】/获取{table}记录
(2)更新:更新{table}的【xx1】为“0001-基本户”
(3)登记:登记{table}(竖向排列)
5.判断条件话术:描述清晰规则的执行前提条件
(1)简单分支条件:
①单个条件逻辑:“若……,则……,否则……”
②多个条件逻辑:“若……,且……,且……,则……,否则……”
(2)复杂分支条件:
①当……时,……(描述接下来要处理的内容)
A. 若……,则……
B. 若……,则……
C. 若……,则……
②当……时,……(描述接下来要处理的内容)
A.处理功能1
B.处理功能2
C.处理功能3
6.报错话术(要求必须定错误码):
(1)若……,则报错“...[value]……”([value]表示存在变量值)
(2)若……,则报错“……”
7.金额计算话术:
(1)完整描述计算公式,可以采用“……=……加上/减去/乘以/除以……”的表达式,例如:
【xxx金额】=【xxx金额1】+【xxx金额2】+……
8.调用基础方法话术:
(1)内部调用逻辑:
①根据【xxx】、【yyy】、【zzz】,调用《xxx》方法,获取【xxx】/处理…
(2)外调逻辑(微服务名称要统一)
①根据【xxx】、【yyy】、【zzz】,外调<公共服务>《xxx》方法,获取【xxx】/处理…
9.循环类话术:
获取【XXX list】
开始循环
执行操作
结束循环
10.返回话术:
(1)输出响应信息:【xx1】、【xx2】、【xx3】、【xx4】、【xx5】、【xx6】
11.引用字段描述来源:
(1)输入的【客户账号】
(2){table}【启用标志】
(3)xxx步骤计算得出的【余额】
(4)当前【发起渠道】
3.2 命名规范
(1)活动名、交易名、任务名、步骤名、业务规则名,大原则按照“动词+名词”描述,能一眼看出描述的内容是什么。
(2)任务名,特殊按照“实体操作类型+实体”描述,能更精确,因为封装到任务级,一般要求至少对1个实体进行了创建、更新操作。
3.3 任务划分依据
(1)划分原则
1)对实体有信息创建、更新操作;
2)一个任务只能归属于1个领域,不同微服务领域不同;
3)外调的任务,要单独拆分出来,调用其他微服务的方法需要在Service级操作;
4)通用任务,要单独拆分出来,封装给其他人使用;
5)可按照不同操作功能进行任务拆分,比如“新增”、“修改”、“删除”不同的操作类型;
(2)非强制性原则:
1)对业务实体的检查步骤一般放在实体操作任务里;
2)角色不同的,拆分成不同任务;同一角色连续做的事情宜合并成一个任务;
4 总结/练习
本文介绍了业务建模中流程模型的分析过程,分析结果Excel截图可在“1 场景”章节查看。
流程模型包含了数据模型的结果,按标准话术描述了业务规则,并编写出步骤,划分了任务,更好的与微服务不同层级进行对应,有利于详细设计阶段的分析。
可以参照前“1 场景”、“2 步骤”、“3 要点”内容,尝试在自己的项目中,进行业务建模的流程模型分析,结构化、标准化描述业务操作过程。