架构篇:整体架构设计观察
不管是从刚开始接触Workday,还是现在去回想Workday的各种使用体验,一个很深入人心的感受就是“简洁、统一”。
这让我想到了一家走标准化路线的酒店的广告词:“需要的我们都有,不需要的我们都没有”,没有多余的动作,没有违和感。
仔细回想Workday是怎么做到的,可以观察到Workday在产品设计层面把人力资源工作的现实世界抽象成了两个极其简单的东西,一个是流程,一个是业务对象,所有系统的操作都被抽象成了流程对一个业务对象或者多个业务对象的作用。
流程代表的是现实中的操作(入职、离职、转调等),业务对象代表的事件中涉及到的物(人、部门、岗位、地点等),对象背后同时承载了结果数据。流程的发生,会引发对象的属性发生改变(比如通过调动,人的状态、职位、部门信息会发生变化)。
每次流程的发生都会产生流程记录,而流程记录里也记载了所有参与对象在流程发生之前和之后的属性,流程记录把流程和对象的数据集合起来,也就记录了系统中所有的业务数据。
Workday抽象出有限种类的流程和业务对象来模拟整个人力资源工作的现实世界,如果把Workday系统看作一个房子