如何通过Contract-Based REST API关联员工与用户
21.210版本Contract-Based REST API用户-员工关联绑定实现方案
你提出的「将员工对应ContactID填入用户实体LinkedEntity字段完成关联」的思路完全可行,这就是和SM201010(用户管理屏幕)手动选择「Linked Entity」操作100%等效的标准实现方式,不存在其他绕路的官方方案。
针对你遇到的字段查询异常、关联操作落地的具体问题,对应处理方式如下:
- 你在
Employee/ContactInfo子实体下找不到可映射的ContactID,是字段位置找错了:ContactInfo子实体下的ContactID是子表内部关联字段,默认不对外暴露,你要的关联用ContactID是Employee主实体的顶层字段,创建员工成功后,直接调用员工详情GET接口/entity/Default/21.210.001/Employee/{员工记录ID},不需要加$expand参数,就能在返回结果的顶层字段拿到正确的ContactID值。 - 如果需要在列表查询员工时直接返回ContactID,不需要做二次开发映射字段,只需要在系统自定义接口字段配置中,把Employee实体的顶层ContactID字段设置为对外可见,后续带$expand查询时就能正常返回该字段。
- 执行关联操作时,直接向Users实体端点发送PUT请求即可,请求体示例如下:
{ "Username": {"value": "待绑定的系统用户名"}, "LinkedEntity": {"value": "对应员工的ContactID值"} }
注意:不要传ContactInfo子实体下的无效ContactID,否则会报关联实体不存在的错误;绑定操作触发后系统会自动同步员工对应的角色、部门权限继承逻辑,和界面手动操作触发的业务逻辑完全一致,不需要额外调用权限同步接口。
- 操作完成后可以直接调用Users实体的GET接口校验结果,只要返回的LinkedEntity字段值和传入的ContactID匹配,去SM201010屏幕刷新就能看到关联关系已经正常生效。
内容的提问来源于stack exchange,提问作者MikeNIke
相关产品推荐
相关产品推荐

