何为工作库?
这是一个项目里大家叫的概念,就是提供了一个对外的查询接口,调用方可以根据自己的需要,在入参上填入想要查询的字段,即可返回对应的值。不需要接口提供方因为返回值的变化而做接口代码的修改。
为什么会出现工作库?
不论做什么业务系统,系统之间一定有交互,那系统间的交互按什么方式比较好呢?数据变更的时候选择推的方式还是主动拉的方式?这个时候需要按具体业务去考量。针对订单系统里面一个业务场景就是订单状态发生变化,或者说订单这边某些业务变化时,需要其他相关系统同步做对应的变更。
这个时候订单采取发送MQ消息,消息内容里有对业务变更的内容事件,相关系统会订阅该MQ,然后根据消息体内对内容事件的判断,判断是否是他自己需要关注的业务,不是,则抛弃直接return,是,则需要做他自己对应的业务,做他自己对应业务的时候,一定需要相关的数据,这个时候就需要通过查询接口来查咱们订单组的接口数据。当对接的业务增长起来,对接的组多起来之后,为别的组提供查询接口是一个非常痛苦的事情,首先接口多,然后重复字段多,然后业务变成频繁导致订单组提供的接口变更需求多,怎么解决呢?就用到了工作库的方式去查,这一个接口就解决了所有的接口,提上概念就是解决了接口数据反向依赖的问题。
工作库的查询实现?
首先查询字段到表名在配置文件里有映射关系配置好的,然后重要配置文件里有的字段在查寻SQL里if not null 的方式,都查出来,实现是相对笔比较简单的,主要是从给对接方推消息,然后他们反查我们接口的设计方式比较重要,当然业务规则下只允许入参有订单号和需要查询的数据字段,没有其他的过滤条件,也不是所有业务都能用,但对订单来讲,以订单号主键作为条件的查询能满足绝大多数需求。