掌桥专利:专业的专利平台
掌桥专利
首页

代码输出方法、装置、设备及存储介质

文献发布时间:2024-04-29 00:47:01


代码输出方法、装置、设备及存储介质

技术领域

本发明实施例涉及计算机技术领域,尤其涉及一种代码输出方法、装置、设备及存储介质。

背景技术

目前在交付方将软件产品的代码交付给被交付方的场景中,为了使得被交付方能够根据实际需求对获得的代码进行二次开发,即在交付代码的同时可以保证客户能够进行灵活定制化开发,交付方往往是将软件产品的代码直接输出给被交付方的系统。

然而,上述直接将代码输出给被交付方的系统的方式,无法保证软件产品核心代码的安全性,即交付后的核心代码容易被查看甚至篡改。因此,如何在保证被交付方能够灵活定制化开发代码的同时确保核心代码的安全性,是目前亟待解决的问题。

发明内容

本发明实施例提供一种代码输出方法、装置、设备及存储介质,用以解决现有的代码输出方式无法保证软件产品核心代码的安全性的问题。

第一方面,本发明实施例提供了一种代码输出方法,包括:

获取将目标软件系统的源代码进行划分后得到的第一部分代码和第二部分代码;

将第一部分代码进行混淆编译,得到编译代码包,并基于编译代码包生成用于支持被交付方本地运行编译代码包的第一工程;

将第一工程和第二部分代码输出给被交付方。

第二方面,本发明实施例还提供了一种代码输出装置,该装置包括:

代码获取模块,用于获取将目标软件系统的源代码进行划分后得到的第一部分代码和第二部分代码;

工程生成模块,用于将第一部分代码进行混淆编译,得到编译代码包,并基于编译代码包生成用于支持被交付方本地运行编译代码包的第一工程;

代码输出模块,用于将第一工程和第二部分代码输出给被交付方。

第三方面,本发明实施例还提供了一种电子设备,电子设备包括:

至少一个处理器;以及

与至少一个处理器通信连接的存储器;其中,

存储器存储有可被至少一个处理器执行的计算机程序,计算机程序被至少一个处理器执行,以使至少一个处理器能够执行本发明任一实施例的代码输出方法。

第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明任一实施例的代码输出方法。

第五方面,本发明实施例还提供了一种计算机程序产品,包括计算机程序,计算机程序在被处理器执行时实现如本发明任一实施例的代码输出方法。

本发明实施例中,获取将目标软件系统的源代码进行划分后得到的第一部分代码和第二部分代码;将第一部分代码进行混淆编译,得到编译代码包,并基于编译代码包生成用于支持被交付方本地运行编译代码包的第一工程;将第一工程和第二部分代码输出给被交付方。即本发明实施例可以获取将目标软件系统的源代码进行划分后得到的第一部分代码和第二部分代码,其中,第一部分代码可以是属于公共核心部分的代码,第二部分代码可以是属于业务应用部分的代码,接着对第一部分代码进行混淆编译,得到被交付方无法修改的编译代码包,降低了第一部分代码的可读性,保护了第一部分代码的安全;然后基于编译代码包生成用于支持本地运行编译代码包的第一工程,并将第一工程和第二部分代码输出给被交付方,以使被交付方可以在本地运行第一部分代码并对第二部分代码进行业务方面的二次定制化开发,实现了代码输出功能,保证了软件系统核心代码的安全性,同时提高了软件系统应对不同用户的业务灵活性,解决了现有的代码输出方式无法保证软件产品核心代码的安全性的问题,从而提升了用户体验。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1为本发明实施例提供的代码输出方法的一个流程示意图;

图2为本发明实施例提供的代码输出方法的另一个流程示意图;

图3为本发明实施例提供的代码输出方法的又一个流程示意图;

图4为本发明实施例提供的代码输出装置的一个结构示意图;

图5为本发明实施例提供的电子设备的一个结构示意图。

具体实施方式

下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本发明的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。本发明技术方案中对数据的获取、存储、使用、处理等均符合国家法律法规的相关规定。

现有技术中,直接将代码输出给被交付方的系统的方式,无法保证软件产品核心代码的安全性,即交付后的核心代码容易被查看甚至篡改。

针对上述现有技术存在的问题,本实施例可以获取将目标软件系统的源代码进行划分后得到的第一部分代码和第二部分代码,其中,第一部分代码可以是属于公共核心部分的代码,第二部分代码可以是属于业务应用部分的代码,接着对第一部分代码进行混淆编译,得到被交付方无法修改的编译代码包,降低了第一部分代码的可读性,保护了第一部分代码的安全;然后基于编译代码包生成用于支持本地运行编译代码包的第一工程,并将第一工程和第二部分代码输出给被交付方,以使被交付方可以在本地运行第一部分代码并对第二部分代码进行业务方面的二次定制化开发,实现了代码输出功能,保证了软件系统核心代码的安全性,同时提高了软件系统应对不同用户的业务灵活性,解决了现有的代码输出方式无法保证软件产品核心代码的安全性的问题,从而提升了用户体验。

下面详细描述本发明实施例提供的代码输出方法。图1为本发明实施例提供的代码输出方法的一个流程示意图,本实施例可适用于交付方将软件产品的代码交付给被交付方的情况,该方法可以由本发明实施例中的代码输出装置来执行,该装置可采用软件和/或硬件的方式实现。在一个具体的实施例中,该装置可以集成在电子设备中,电子设备比如可以是计算机或服务器。以下实施例将以该装置集成在电子设备中为例进行说明,参考图1,该方法具体可以包括如下步骤:

S110、获取将目标软件系统的源代码进行划分后得到的第一部分代码和第二部分代码。

其中,目标软件系统为交付方需要向被交付方交付的软件产品。可选的,目标软件系统采用微前端的代码架构,其源代码可以包括多个工程。微前端借鉴了微服务的架构理念,是一种多个团队通过独立发布功能的方式来共同构建现代化Web应用的技术手段及方法策略,既可以将多个项目融合为一,又可以减少项目之间的耦合。示例地,针对信贷业务流程的目标软件系统可以采用基于Vue实现的微前端框架。

第一部分代码为目标软件系统的源代码中属于公共核心部分的代码,被交付方不可查看和修改第一部分代码。第二部分代码为目标软件系统的源代码中属于业务应用部分的代码,被交付方可以对第二部分代码进行业务方面的二次定制化开发。

具体地,在交付方将软件产品的代码交付给被交付方之前,可以划分目标软件系统的源代码,将属于公共核心部分的代码划分为第一部分代码,并将属于业务应用部分的代码划分为第二部分代码,然后获取第一部分代码和第二部分代码。

S120、将第一部分代码进行混淆编译,得到编译代码包,并基于编译代码包生成用于支持被交付方本地运行编译代码包的第一工程。

其中,编译代码包为对第一部分代码进行混淆编译之后得到的代码,编译代码包无法被还原为第一部分代码,可以防止被交付方查看和修改第一部分代码。第一工程为可以在本地运行编译代码包的工程,即可以支持被交付方在本地运行第一部分代码。

具体地,在划分得到第一部分代码和第二部分代码之后,可以利用混淆工具对第一部分代码进行混淆编译,例如可以根据设置对函数名、变量名、类名等关键代码进行重命名和混淆处理,降低第一部分代码的可读性,得到第一部分代码的编译代码包。之后,可以基于编译代码包和相关代码文件生成支持本地运行编译代码包的第一工程。

示例地,当目标软件系统采用基于Vue实现的微前端框架时,可以在Vue控制台运行“npm run build”命令,对第一部分代码进行混淆编译,得到编译代码包(dist),然后对编译代码包和相关代码文件进行打包,得到可以在本地运行第一部分代码的第一工程。

S130、将第一工程和第二部分代码输出给被交付方。

具体地,在得到第一工程和和第二部分代码之后,可以将第一工程和第二部分代码输出给被交付方,以使被交付方可以运行第一工程并对第二部分代码进行二次定制化开发,同时可以将本地服务构建、开发手册、组件文档、开发人员账号、密码、在线参数配置功能和配置手册发送给被交付方,以帮助被交付方运行第一工程以及在二次开发时理解代码。

本实施例中,可以获取将目标软件系统的源代码进行划分后得到的第一部分代码和第二部分代码,其中,第一部分代码可以是属于公共核心部分的代码,第二部分代码可以是属于业务应用部分的代码,接着对第一部分代码进行混淆编译,得到被交付方无法修改的编译代码包,降低了第一部分代码的可读性,保护了第一部分代码的安全;然后基于编译代码包生成用于支持本地运行编译代码包的第一工程,并将第一工程和第二部分代码输出给被交付方,以使被交付方可以在本地运行第一部分代码并对第二部分代码进行业务方面的二次定制化开发,实现了代码输出功能,保证了软件系统核心代码的安全性,同时提高了软件系统应对不同用户的业务灵活性,解决了现有的代码输出方式无法保证软件产品核心代码的安全性的问题,从而提升了用户体验。

图2为本发明实施例提供的代码输出方法的另一个流程示意图,参考图2,本实施例的方法具体包括如下步骤:

S210、将目标软件系统的主工程的源代码和系统管理工程的源代码,划分为第一部分代码。

其中,主工程是指提供能够全局使用的组件和方法,以及支持页面链接跳转功能的工程。示例地,主工程可以以“sy+组件含义”的形式对能够全局使用的组件进行命名,例如sy-customers为客户查询组件;主工程可以以this.$utils的形式提供能够全局使用的方法,例如this.$store.dispatch表示向服务端提交数据;主工程可以以this.$router.push实现页面链接跳转功能。

系统管理工程是指支持可视化参数配置功能的工程。

示例地,当目标软件系统是针对信贷业务流程的系统时,目标软件系统的源代码可以包括多个工程,其中主工程(main)和系统管理工程(manage)属于目标软件系统的公共核心部分,被交付方不可直接查看和修改这部分工程的源代码,可以将主工程(main)的源代码和系统管理工程(manage)的源代码划分为第一部分代码。

S220、将目标软件系统的除主工程和系统管理工程之外的其他工程的源代码,划分为第二部分代码。

示例地,当目标软件系统是针对信贷业务流程的系统时,目标软件系统的源代码可以包括多个工程,例如,主工程(main)、系统管理工程(manage)、开发手册工程(demo)、公共功能工程(common)、系统功能工程(system)、授信组件工程(credit)、业务组件工程(business)、合同支用组件工程(contract)、贸融保理组件工程(tradeFinance)、评级组件工程(rating)、贷后组件工程(postloan)、担保组件工程(collateral)、贴现组件工程(billsDiscount)和批处理组件工程(batch)等,其中除主工程(main)和系统管理工程(manage)之外的其他工程的源代码属于业务应用部分的代码,被交付方可以对这部分工程的源代码进行二次定制化开发,可以将这部分工程的源代码划分为第二部分代码。

S230、获取将目标软件系统的源代码进行划分后得到的第一部分代码和第二部分代码。

S230与S110的实现过程和技术原理相同,此处不再赘述。

S240、将第一部分代码进行混淆编译,得到编译代码包。

S240与S120的实现过程和技术原理相同,此处不再赘述。

S250、获取运行脚本。

其中,运行脚本是在被调用时能够从目标软件系统的服务端获取编译代码包并运行编译代码包的脚本。

可选的,运行脚本中包含授权处理代码,授权处理代码用于在运行编译代码包之前与目标软件系统的服务端确认是否具备运行权限,只有具备运行权限的被交付方才可以运行编译代码包。

S260、生成包含运行脚本和编译代码包的第一工程。

示例地,当目标软件系统采用基于Vue实现的微前端框架时,在得到编译代码包和运行脚本之后,可以对运行脚本和编译代码包进行打包,得到可以在本地运行编译代码包的第一工程,第一工程主要包括dist、node_modules、package-lock.json、package.json和serve.js,其中dist为编译代码包;node_modules为一个文件夹,包括运行目标软件系统所需要的所有插件;package-lock.json和package.json为插件的配置文件;serve.js为运行脚本。

S270、将第一工程和第二部分代码输出给被交付方。

S270与S130的实现过程和技术原理相同,此处不再赘述。

本实施例中,可以将目标软件系统的主工程的源代码和系统管理工程的源代码,划分为第一部分代码,并将目标软件系统的除主工程和系统管理工程之外的其他工程的源代码,划分为第二部分代码,接着获取第一部分代码和第二部分代码,并对第一部分代码进行混淆编译,得到被交付方无法修改的编译代码包,降低了第一部分代码的可读性,保护了第一部分代码的安全;然后获取能够从目标软件系统的服务端获取编译代码包并运行编译代码包的运行脚本,并对运行脚本和编译代码包进行打包,得到第一工程,实现了支持在本地运行编译代码包的功能,提高了在本地运行编译代码包的计算效率,降低了实现复杂度,进一步保证了软件系统核心代码的安全性;最后将第一工程和第二部分代码输出给被交付方,实现了代码输出功能,使得被交付方可以在本地运行第一部分代码并对第二部分代码进行业务方面的二次定制化开发。

图3为本发明实施例提供的代码输出方法的又一个流程示意图,参考图3,本实施例的方法具体包括如下步骤:

S310、在被交付方运行编译代码包时,生成并显示菜单界面。

具体地,在被交付方运行编译代码包时,首先执行第一工程中的运行脚本,运行脚本中的授权处理代码向目标软件系统的服务端确认是否具备运行权限,即:运行脚本中的授权处理代码生成验证命令,验证命令包括被交付方标识,并将验证命令发送至目标软件系统的服务端;目标软件系统的服务端在接收到被交付方的验证命令之后,查看预先存储的授权列表,如果授权列表中存在被交付方标识,则表明被交付方具备运行权限,此时服务端生成运行命令,并将运行命令发送至被交付方的电子设备;否则,表明被交付方不具备运行权限,此时服务端生成异常命令,并将异常命令发送至被交付方的电子设备。其中,验证命令用于验证被交付方是否具备编译代码包的运行权限;运行命令表示验证成功,用于通知被交付方具备编译代码包的运行权限;异常命令表示验证失败,用于通知被交付方不具备编译代码包的运行权限;被交付方标识是被交付方的唯一标志;授权列表为服务端预先存储的列表,用于保存具备运行权限的用户标识。

之后,当被交付方的电子设备在接收到服务端的运行命令时,可以继续执行运行脚本,即从服务端拉取编译代码包,并运行编译代码包,接着生成登录界面,并在浏览器显示登录界面,然后获取被交付方在登录界面输入的账号和密码,并在接收到服务端的登录响应之后,生成并显示菜单界面。其中,登录响应表示登录成功,即被交付方在登录界面输入的账号和密码正确,可以跳转至其他界面。

示例地,当目标软件系统是针对信贷业务流程的系统时,被交付方可以在登录界面输入S130获取的开发人员账号和密码,并点击“登录”按钮,在登录验证成功之后即可跳转到菜单界面,菜单界面左侧显示的菜单可以包括机构员工、系统管理、使用手册、意见反馈、任务、风险预警和担保管理等,点击左侧菜单之后,即可在右侧显示对应的可视化配置功能菜单,例如,点击“系统管理”之后,右侧显示的菜单可以包括字段库、模板库、模板目录、组合模板、组合模板预览、页面配置(包括页面库和页面组)、流程配置中心、帮助中心管理、业务属性标签、产品中心、样式配置、公共代码和版本同步等。

S320、获取通过菜单界面选择的目标配置项,生成并显示目标配置项对应的配置界面。

其中,目标配置项为被交付方可以进行二次开发的功能配置项,可以为字段、模板、模板组、页面、页面链接或页面链接组。其中,模板引用至少一个字段,模板组引用至少一个模板,页面引用至少一个字段、至少一个模板、至少一个模板组、至少一个页面链接以及至少一个页面链接组中的至少一项,页面链接组引用至少一个页面链接。可以理解,模板和模板组可以对应页面中的显示区域,若任一模板引用任一字段,则需在该模板对应的页面显示区域中显示该字段的内容;若任一模板组引用任一模板,则需在该模板组对应的页面显示区域中显示该模板所引用的字段的内容;若任一页面引用任一字段,则需在该页面中显示该字段的内容,若任一页面引用任一模板,则需在该页面中显示该模板所引用的字段的内容,若任一页面引用任一模板组,则需在该页面中显示该模板组引用的各模板所分别引用的字段的内容,若任一页面引用任一页面链接,则需在该页面中显示该页面链接,若任一页面引用任一页面链接组,则需在该页面中显示该页面链接组所引用的各页面链接。

具体地,在生成并显示菜单界面之后,可以获取被交付方在菜单界面点击的目标配置项。之后,可以根据目标配置项生成并显示目标配置项对应的配置界面。

示例地,当点击“字段库”时,选择的目标配置项为字段;当点击“模板库”时,选择的目标配置项为模板;当点击“模板目录”时,选择的目标配置项为模板组;当点击“组合模板”时,选择的目标配置项为页面;当点击“页面配置中的页面库”时,选择的目标配置项为页面链接;当点击“页面配置中的页面组”时,选择的目标配置项为页面链接组。

进一步地,生成并显示目标配置项对应的配置界面,包括:

步骤a1、从目标软件系统的服务端获取数据库中存储的目标配置项的各配置项数据,基于各配置项数据生成并显示配置项列表界面。

其中,配置项数据为目标配置项对应的各个配置项的数据,示例地,字段的一个配置项数据可以为{“ID”:1001,“字段名”:“违法信贷资产类型”,“属性”:radio,“配置”:{“key”:3,“name”:“字段1”},“codeType”:“ast110000”,“备注”:“修改为单选”,“创建时间”:“2023-10-07”,“创建人”:“李四”,“更新时间”:“2023-11-01”,“更新人”:“李四”},模板的一个配置项数据可以为{“ID”:100111,“模板名称”:“项目法人-首次检查-客户”,“keyCode”:legal_firstCheck_custom,“状态”:“正常”,“备注”:“测试”,“创建时间”:“2023-10-07”,“创建人”:“张三”,“更新时间”:“2023-10-10”,“更新人”:“张三”}。

具体地,在获取被交付方通过菜单界面选择的目标配置项之后,可以生成获取命令,获取命令包括目标配置项,并将获取命令发送至目标软件系统的服务端。之后,目标软件系统的服务端可以接收获取命令,并根据获取命令中的目标配置项查找数据库,得到目标配置项对应的各个配置项数据,然后将目标配置项对应的各个配置项数据发送至被交付方的电子设备。

之后,被交付方的电子设备可以接收服务端发送的目标配置项对应的各个配置项数据,然后根据各个配置项数据生成配置项列表界面,并在浏览器显示配置项列表界面。

示例地,当目标配置项为字段时,配置项列表界面上方显示“名称”、搜索框、“搜索”按钮和“新增”按钮,下方显示用于分页的组件,中间显示一个表格,用于显示字段的各个配置项数据,例如ID、字段名、属性、配置、codeType、备注、创建时间、创建人、更新时间和更新人,在表格的最后一列显示操作,即查看、修改和历史;当目标配置项为模板时,配置项列表界面上方显示“名称”、“字段名”、两个搜索框、“搜索”按钮和“新增”按钮,下方显示用于分页的组件,中间显示一个表格,用于显示模板的各个配置项数据,例如ID、模板名称、keyCode、状态、备注、创建时间、创建人、更新时间和更新人,在表格的最后一列显示操作,即修改、复制和历史。

步骤a2、获取通过配置项列表界面选择的配置操作类型。

其中,配置操作类型包括增加新配置项数据、修改已有配置项数据、删除已有配置项数据、查看已有配置项数据或搜索已有配置项数据。

具体地,在生成并显示配置项列表界面之后,可以获取被交付方通过配置项列表界面选择的配置操作类型,例如增加新配置项数据、修改已有配置项数据、删除已有配置项数据、查看已有配置项数据或搜索已有配置项数据。

示例地,当点击配置项列表界面的“新增”按钮时,选择的配置操作类型为增加新配置项数据;当点击配置项列表界面的“修改”按钮时,选择的配置操作类型为修改已有配置项数据。

步骤a3、生成并显示与配置操作类型对应的配置界面。

具体地,在获取被交付方通过配置项列表界面选择的配置操作类型之后,可以生成与配置操作类型对应的配置界面,并在浏览器显示配置界面。

示例地,当目标配置项为字段时,被交付方点击配置项列表界面上方的“新增”按钮之后,可以以弹窗的形式显示新增对应的配置界面,配置界面的左侧显示“字段名”、“属性”、“组件选择”、“配置”和对应的输入框;下方显示“取消”按钮和“确定”按钮,点击“取消”按钮可以取消新增功能,点击“确定”按钮可以新增一个字段;右侧显示“组件展示”和一个显示框,用于显示左侧中各个配置项数据对应的组件。当目标配置项为模板时,被交付方点击配置项列表界面上方的“新增”按钮之后,可以以弹窗的形式显示新增对应的配置界面,配置界面的上方显示“模板名称”、“模板key”、两个文本框和一个“预览”按钮;左侧显示“字段”、“规则”和“配置”,以及对应的选择列表,点击“字段”选择列表中的选择项即可在右侧添加对应的字段,点击“规则”选择列表中的选择项即可设置字段对应的规则,点击“配置”选择列表中的选择项即可设置字段对应的配置;右侧显示被交付方在左侧选择的选择项对应的字段。

S330、获取通过配置界面输入的针对目标配置项的配置信息,并根据配置信息进行代码更新。

其中,配置信息可以包括配置项唯一标识和被交付方在配置界面输入的各个数据。配置项唯一标识是配置项的唯一标志,示例地,模板的配置项唯一标识可以为keyCode,页面的配置项唯一标识可以为templateCode。

具体地,在生成并显示与配置操作类型对应的配置界面之后,可以获取被交付方通过配置界面输入的针对目标配置项的配置信息,即被交付方在配置界面输入的各个数据。之后,可以根据配置信息进行代码更新。

可选的,一种实现方式中,目标配置项为字段、模板、模板组、页面、页面链接或页面链接组;根据配置信息进行代码更新,包括:获取配置信息中的配置项唯一标识,将配置项唯一标识赋值给编译代码包中封装的组件,以能够在组件中显示配置项唯一标识对应的字段、模板、模板组、页面、页面链接或页面链接组,即:可以将配置项唯一标识作为参数赋值给编译代码包中已经封装的组件,即可在组件中显示配置项唯一标识对应的字段、模板、模板组、页面、页面链接或页面链接组,以进行代码更新。其中,配置项唯一标识对应的字段、模板、模板组、页面、页面链接或页面链接组即为被交付方在配置界面输入的各个配置项数据对应的字段、模板、模板组、页面、页面链接或页面链接组。

示例地,当目标配置项为模板,被交付方在模板的配置项列表界面点击“新增”按钮,并在新增的配置界面新增一个文本框、一个下拉框、一个单选框和两个按钮时,可以生成一个专属于该新增模板(即一个文本框、一个下拉框、一个单选框和两个按钮)的配置项唯一标识keyCode,并将keyCode赋值给编译代码包中封装的组件,之后被交付方可以在Vue控制台运行“npm run serve”命令,即可在组件所在的界面中显示新增的一个文本框、一个下拉框、一个单选框和两个按钮,以验证功能页面是否正确显示。

可选的,另一种实现方式中,目标配置项为页面链接;根据配置信息进行代码更新,包括:获取配置信息中的配置项唯一标识,将配置项唯一标识赋值给编译代码包中封装的链接跳转方法,以实现对配置项唯一标识对应的页面链接的跳转,即:可以将配置项唯一标识作为参数赋值给编译代码包中的链接跳转方法,即可实现对配置项唯一标识对应的页面链接的跳转。之后,可以获取被交付方针对页面链接对应的页面的开发代码,然后基于开发代码对第二部分代码进行更新,并运行开发代码,即可在界面显示页面链接对应的页面。

示例地,当目标配置项为页面链接时,被交付方可以撰写针对页面链接对应的页面的开发代码,并在Vue控制台运行“npm run serve”命令,即可在浏览器显示页面链接对应的页面,以验证功能页面是否正确显示。

可选的,在根据配置信息进行代码更新之后,可以将配置信息发送给目标软件系统的服务端,然后服务端可以接收配置信息,并将配置信息保存至数据库,之后根据新增之后的数据库更新对应的配置项列表界面。

需要说明的是,对于第一部分代码的更新,交付方重新对更新后的第一部分代码进行混淆编译和打包,并将更新后的第一工程输出给被交付方;对于第二部分代码的更新,被交付方将更新后的信息发送给目标软件系统的服务端。

本实施例中,可以在被交付方运行编译代码包时,执行第一工程中的运行脚本,并在目标软件系统的服务端确认具备运行权限之后,继续执行运行脚本,生成并显示菜单界面,实现了权限验证的功能,进一步保证了软件系统代码的安全性;获取被交付方在菜单界面点击的目标配置项,并从目标软件系统的服务端获取数据库中存储的目标配置项的各配置项数据,接着基于各配置项数据生成并显示配置项列表界面,并获取被交付方通过配置项列表界面选择的配置操作类型,然后生成并显示与配置操作类型对应的配置界面,并获取被交付方通过配置界面输入的针对目标配置项的配置信息,之后根据配置信息进行代码更新,实现在组件中显示配置项唯一标识对应的字段、模板、模板组、页面、页面链接或页面链接组,并在目标配置项为页面链接时,获取被交付方针对页面链接对应的页面的开发代码,以基于开发代码对第二部分代码进行更新,实现了对第二部分代码进行二次定制化开发的功能,提高了二次定制化开发的计算效率,降低了实现复杂度,进一步提高了软件系统的业务灵活性。

图4为本发明实施例提供的代码输出装置的一个结构示意图。本实施例可适用于交付方将软件产品的代码交付给被交付方的情况,该装置可采用软件和/或硬件的方式实现,该装置可集成在电子设备中,如图4所示,该代码输出装置具体包括:

代码获取模块410,用于获取将目标软件系统的源代码进行划分后得到的第一部分代码和第二部分代码;

工程生成模块420,用于将第一部分代码进行混淆编译,得到编译代码包,并基于编译代码包生成用于支持被交付方本地运行编译代码包的第一工程;

代码输出模块430,用于将第一工程和第二部分代码输出给被交付方。

进一步地,该装置还包括:

第一代码划分模块,用于将目标软件系统的主工程的源代码和系统管理工程的源代码,划分为第一部分代码;其中,主工程是指提供能够全局使用的组件和方法,以及支持页面链接跳转功能的工程,系统管理工程是指支持可视化参数配置功能的工程;

第二代码划分模块,用于将目标软件系统的除主工程和系统管理工程之外的其他工程的源代码,划分为第二部分代码。

可选的,工程生成模块420基于编译代码包生成用于支持被交付方本地运行编译代码包的第一工程,包括:

获取运行脚本;其中,运行脚本是在被调用时能够从目标软件系统的服务端获取编译代码包并运行编译代码包的脚本;

生成包含运行脚本和编译代码包的第一工程。

可选的,工程生成模块420中的运行脚本中包含授权处理代码,授权处理代码用于在运行编译代码包之前与目标软件系统的服务端确认是否具备运行权限。

进一步地,该装置还包括:

菜单显示模块,用于在被交付方运行编译代码包时,生成并显示菜单界面;

配置显示模块,用于获取通过菜单界面选择的目标配置项,生成并显示目标配置项对应的配置界面;

代码更新模块,用于获取通过配置界面输入的针对目标配置项的配置信息,并根据配置信息进行代码更新。

可选的,配置显示模块生成并显示目标配置项对应的配置界面,包括:

从目标软件系统的服务端获取数据库中存储的目标配置项的各配置项数据,基于各配置项数据生成并显示配置项列表界面;

获取通过配置项列表界面选择的配置操作类型;其中,配置操作类型包括增加新配置项数据、修改已有配置项数据或删除已有配置项数据;

生成并显示与配置操作类型对应的配置界面。

可选的,目标配置项为字段、模板、模板组、页面、页面链接或页面链接组;其中,模板引用至少一个字段、模板组引用至少一个模板、页面引用至少一个字段、至少一个模板、至少一个模板组、至少一个页面链接以及至少一个页面链接组中的至少一项、页面链接组引用至少一个页面链接;

代码更新模块根据配置信息进行代码更新,包括:

获取配置信息中的配置项唯一标识,将配置项唯一标识赋值给编译代码包中封装的组件,以能够在组件中显示配置项唯一标识对应的字段、模板、模板组、页面、页面链接或页面链接组。

可选的,目标配置项为页面链接;

代码更新模块根据配置信息进行代码更新,包括:

获取配置信息中的配置项唯一标识,将配置项唯一标识赋值给编译代码包中封装的链接跳转方法,以实现对配置项唯一标识对应的页面链接的跳转。

进一步地,该装置还包括:

链接更新模块,用于获取针对页面链接对应的页面的开发代码,基于开发代码对第二部分代码进行更新。

可选的,代码获取模块410中的目标软件系统采用微前端的代码架构。

本发明实施例所提供的代码输出装置可执行本发明任意实施例所提供的代码输出方法,具备执行方法相应的功能模块和有益效果。

图5为本发明实施例提供的电子设备的一个结构示意图。图5示出了适于用来实现本发明实施方式的示例性电子设备11的框图。图5显示的电子设备11仅仅是一个示例,不应对本实施例的功能和使用范围带来任何限制。

如图5所示,电子设备11以通用计算电子设备的形式表现。电子设备11的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。

总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。

电子设备11典型地包括多种计算机系统可读介质。这些介质可以是任何能够被电子设备11访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。

系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。电子设备11可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图5未显示,通常称为“硬盘驱动器”)。尽管图5中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。系统存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。

具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如系统存储器28中,这样的程序模块42包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。

电子设备11也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该电子设备11交互的设备通信,和/或与使得该电子设备11能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,电子设备11还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。

如图5所示,网络适配器20通过总线18与电子设备11的其它模块通信。应当明白,尽管图5中未示出,可以结合电子设备11使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。

处理单元16通过运行存储在系统存储器28中的程序,从而执行各种功能应用以及页面显示,例如实现本实施例所提供的代码输出方法,包括:

获取将目标软件系统的源代码进行划分后得到的第一部分代码和第二部分代码;

将第一部分代码进行混淆编译,得到编译代码包,并基于编译代码包生成用于支持被交付方本地运行编译代码包的第一工程;

将第一工程和第二部分代码输出给被交付方。

当然,本领域技术人员可以理解,处理器还可以实现本发明任意实施例所提供的代码输出方法的技术方案。

本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明任意实施例所提供的代码输出方法。

本实施例的计算机存储介质,可以采用一个或者多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是但不限于:电、磁、光、电磁、红外线、或者半导体的系统、装置或者器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或者多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或者闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或者存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或者上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。

计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。

可以以一种或者多种程序设计语言或者其组合来编写用于执行本发明操作的计算机程序代码,程序设计语言包括面向对象的程序设计语言,诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或者类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或者服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络,包括局域网(LAN)或者广域网(WAN),连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。

本发明实施例还提供了一种计算机程序产品,包括计算机程序,该计算机程序在被处理器执行时实现如本发明任一实施例所提供的代码输出方法。

计算机程序产品在实现的过程中,可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,程序设计语言包括面向对象的程序设计语言,诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。

本领域普通技术人员应该明白,上述的本发明的各模块或者各步骤可以用通用的计算装置来实现,它们可以集中在单个计算装置上,或者分布在多个计算装置所组成的网络上,可选地,他们可以用计算机装置可执行的程序代码来实现,从而可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或者步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件的结合。

另外,本发明技术方案中对数据的获取、存储、使用、处理等均符合国家法律法规的相关规定。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

相关技术
  • 一种代码转换方法、装置及设备、存储介质
  • 代码测试方法及装置、存储介质、电子设备
  • 脚本代码检测方法、装置、计算机设备及存储介质
  • 一种代码覆盖率分析方法、装置、设备及存储介质
  • 理赔数据代码匹配方法、装置、计算机设备和存储介质
  • 日志输出代码的生成方法、装置、电子设备及存储介质
  • 代码生成方法、代码显示方法、装置、设备及存储介质
技术分类

06120116595219