基于ESB权限初始化流程开发总结
Posted 数通畅联
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于ESB权限初始化流程开发总结相关的知识,希望对你有一定的参考价值。
在集团信息化系统的建设过程中,由于应用系统数量日益增多,很多集团缺少一个能有效地将众多系统身份认证、账号管理,授权等功能集成的软件系统。由此IDM应运而生,在IDM中统一权限的功能资源模块是对下游系统的平台进行功能资源的统一管控。在管控之前需要将下游系统的功能资源导入到IDM系统中进行管理。但是在统一管理之前,需要将系统的历史数据进行初始化导入。后续通过新增、修改将数据逐步调整为符合设定标准的数据。
权限数据导入需要调用IDM的导入接口,所以需要ESB进行权限数据的流程开发,对接IDM与下游系统,ESB可以快速开发各种服务流程,满足各种数据的对接,数据映射等需求,通过服务流程开发将下游系统的出参数据进行调整和修改,并根据IDM提供的入参信息,通过ESB进行数据处理将功能部分的权限数据进行初始化导入。本次介绍服务流程的开发思路和过程为后续项目人员流程调整提供参考。
1需求说明
IDM的统一权限模块是通过对标准角色、实际角色、功能资源等进行统一规划,在IDM中进行权限的管控,在下游系统对相应模块进行操作时会读取我们IDM的对应接口查看该模块是否对于对应人员或角色进行授权,实现统一权限的管理。
1.1业务背景
在IDM中,如果想要进行下游系统功能的统一权限管理,需要获取各个下游系统的功能资源数据进行权限赋值,通过IDM提供的标准,功能菜单、功能节点,控制器数据和操作信息四层数据,在权限管理模块进行节点数据的授权,也为后续对其他业务系统的历史数据进行清洗和更新,为此需要将下游系统的功能菜单等数据导入到IDM中。
1.2需求沟通
1.IDM需要通过接口导入将控制器节点下的操作信息数据进行导入;
2.与相关人员进行沟通,提出IDM需要的入参数据,相关人员为来源数据获取提供接口;
3.接口获取后需要进行接口功能的测试,明确拼接成导入接口所需要的入参格式,实现快速将数据导入到IDM中。
2实现思路
在开发ESB流程之前需要明确流程的作用,知道这个流程的最终目的。由于是获取数据并进行数据导入,所以要明确源系统的数据出参和IDM系统提供的入参格式。
2.1数据提供
本次对接的下游系统一共需要提供四层数据,分别是功能菜单、功能节点、控制器和对应的操作。
根据提供的数据格式,在功能菜单根据固定入参获取到对应的数据后需要通过id循环获取功能节点,在通过功能节点的id循环获取控制器,最后通过控制器的id循环获取对应的操作信息。
2.2数据导入
在IDM提供的数据接口中,可以根据层级的格式将功能菜单、功能节点、控制器和操作信息拼接成一个大的Json导入到功能资源中,但是功能菜单和功能节点只是依靠一个字段进行区分并且层级是相同的,而且功能菜单并不会关联控制器,所以在通过接口获取完第一层数据后,直接将功能菜单数据拼接成单独的一个入参格式,再后续进行第二、三、四层的数据拼接,拼接成第二个Json然后调用IDM的数据导入接口进行功能的实现。
3服务开发
基于数据提供和数据导入的实现思路进行服务的开发,由于本次是直接获取的全量数据并且也只会进行一次导入,所以开发Http流程在浏览器执行后,一次性将数据导入到IDM中即可,在参考原有的流程思路的同时也根据实际的新需求,进行流程的调整和优化。
3.1数据获取
如果想要获取本次对接的下游系统数据,需要通过两次认证拿到的access_token进行数据获取。在SoapUi中先对两个认证接口进行测试,明确出参格式,利用Http的调用节点和扩展代码节点获取到对应的入参所需数据。
后续的四次数据调用都需要用到access_token才能获取到数据,结合token和对应的id依次对接口调用,整理好出参。
3.2开发思路
1.在开发前需要将来源业务系统提供的接口和IDM的接口进行测试,检查出参和入参数据;
2.通过流程接口调用获取来源业务系统的数据获取令牌;
3.通过令牌获取来源系统的功能菜单的数据;
4.将功能菜单的数据调整为两种出参:
第一种:直接将获取到的数据存进一个自定的JsonArray中,后续功能节点进行调用时循环获取每个功能菜单的id数据;
第二种:将功能菜单的数据拼接成IDM对应的入参格式,在后边的节点首先将功能菜单的数据导入到IDM中;
5.在通过循环获取到的功能节点数据依次存入到一个JsonArray中,为后续控制器提供数据。
6.由于想要将功能节点、控制器和操作类型导入到IDM中需要拼接三层Json才能够一次性导入,所以虽然这样会让流程的运行速度很慢,也需要获取到控制器后需要嵌套循环操作信息,在获取好操作信息后将控制器和操作信息拼接成IDM的入参格式,在通过这层功能节点将数据拼接起来。
7.最后当功能节点全部拼接完毕后根据IDM的入参需求拼接成对应的入参信息,在功能菜单调用完节点后,再用功能节点拼接好的入参信息调用IDM的数据导入节点。
3.3开发过程
1.在开始设置四个节点、用于获取access_token。
2.通过调用苍穹接口获取功能菜单的数据。
3.根据IDM的导入接口,将出参数据拼接成需要的格式。
4.拼接完数据后,声明oneResult对象后续直接调用接口将数据导入到IDM中。循环获取的onePermJsonArray主要用于查询后续功能菜单。
5.通过循环设置功能菜单和控制器的数据获取,在控制器循环中在插入对操作信息进行循环。在业务应用权限数据处理节点。将循环的控制器和操作信息拼接到一个大的返回值中。
6.当操作信息的流程循环结束后,需要对控制器和操作的json信息拼接到功能菜单的json中。
7.将拼接出来的控制器Json用FUNC_HANDLER作为key放到功能菜单中,并且每次循环的功能菜单放到一个JsonArray中。
8.最后将结果数据拼写后分两次导入到IDM中。
4流程测试
至此权限初始化流程已经开发完毕,在开发结束后需要对流程进行测试,功能菜单的数据一次查询并存储即可,但是功能节点所牵扯的流程引用次数较多,需要对整个流程运行进行监控并排查是否有疏漏的地方。
4.1功能菜单
1.首先将两个分支节点的流程设置不走,便于快速查看功能菜单数据是否可以导入。
2.打印出参信息,然后到网页中进行测试。
3.用Xshell查看ESB后台检查是否有报错信息。
4.确认无误后可以将第一个节点的数据导入到IDM中。
5.执行成功后可以在功能资源页面看到已经导入到IDM中。
4.2功能节点
1.在HANDLER的循环出参后将连线直接连接在出参节点中。并进行参数调整确保循环不会进入到HANDLER循环中。
2.在功能菜单循环节点打印输出目标,可以在后台检查循环中是否有报错信息。
3.在浏览器中执行流程并用Xshell查看后台是否报错。
4.确认无误后调整流程,关闭IDM的接口调用并将整个流程执行。
5.打印循环节点和两个接口调用节点的信息。然后执行该流程并查看后台日志。
6.在循环过程中如果出现报错情况,退出日志信息,记录循环节点信息。
7.设置初始化节点信息以及流程结束节点约束,确保再一次检查时能够快速定位到节点。
8.再次执行流程就可以快速看到日志的报错信息。
9.根据日志报错信息对扩展代码进行调整。
10.逐步排查问题和报错信息完善流程。
11.当没有报错信息后连接所有节点执行该流程。
5心得总结
本次的权限初始化流程是对其他业务系统的数据进行调整并调用IDM接口导入到IDM中,在对接过程中我也积累了很多的开发流程和系统对接时的所需的准备工作经验和对接经验。
5.1数据对接
首先在对接前需要对本次流程所需要的所有接口进行测试,确保接口,如果出现了一些不明确的入参问题和出参类型,或者接口的数据调用不符合业务规范,需要与相关人员及时沟通和解决,避免在写流程时出现问题,其次明确入参和出参情况,知晓调用的业务系统的出参格式和IDM接口的入参格式,这样才能在ESB的流程中通过扩展代码将数据进行调整和拼接以实现最终目的。
5.2思维发散
在项目级的流程开发中,每一个流程都不是凭空出现的,它们都有着属于自己的作用,在开发流程前需要明确自己开发的流程如何去调用,作用如何,这样在开发完成后才能够知道自己的流程好不好使,如何去使用。如果其他业务系统的接口出现问题后不要急着去询问为什么不好使,要先检查自己入参是否有问题、参数地址等是否有问题,确认无误后再与相关人员进行协商。在数据导入过程中,在测试时要检查出参是否为目标系统所需数据,如果没有也需要进行沟通。
5.3心得体会
工作中,后续对于这种业务系统之间的数据交互流程开发会越来越多,在本次流程开发过程中学习到的东西要记录下来。在工作中不要只会想象,而不去具体实践自己的所思所想,只有通过实践去发现问题、改正问题,才能进一步提升自己的能力。
在今后的工作过程中,要不断总结自己学习到的知识,在接口测试等过程遇到不会或不懂的地方,要明确问题原因或,有自己的理解后及时向相关负责人进行反馈,反馈过程中的东西要做到随时随记等等,每天进步一些,在本次的流程开发中也用到了许多以前记录的知识,相信自己在今后的工作中能力可以不断地提升,在这条路上越走越远。
以上是关于基于ESB权限初始化流程开发总结的主要内容,如果未能解决你的问题,请参考以下文章