3.1.2 环境准备(windows版)

一、后端基础环境准备

安装JDK1.8 ,高于1.8_221以上(下载地址见书籍【附件一】

  1. 打开Windows环境变量配置页

    此电脑 => 右键属性 => 系统高级设置 => 环境变量

  2. 配置环境变量

    在用户环境变量中新建变量为JAVA_HOME的项,值为JDK安装之后的路径

3.1.2 环境准备(windows版)

图3-1-27 新建环境变量JAVA_HOM

编辑变量为Path的项添加一个值%JAVA_HOME%\bin

3.1.2 环境准备(windows版)

图3-1-28 添加一个环境变量值%JAVA_HOME%\\bin

  1. PowerShell或者CMD中验证,输出类似信息为安装配置成功

3.1.2 环境准备(windows版)

图3-1-29 验证JAVA是否安装成功

安装 Apache Maven 3.8+ (下载地址见书籍【附件一】

  1. 删除Maven安装目录下的conf/settings.xml

  2. 配置mvn的settings,下载附件settings-open.xml,并重命名为settings.xml,建议直接放在【C:\Users\你的用户名.m2】下面。下载地址见oinone开源社区群公告,也可以联系oinone合作伙伴或服务人员

  3. 配置环境变量 在用户环境变量中新建变量为M2_HOME的项,值为Maven安装路径

3.1.2 环境准备(windows版)

图3-1-30 新建变量M2_HOME

编辑变量为Path的项添加一个值%M2_HOME%\bin

3.1.2 环境准备(windows版)

图3-1-31 添加一个值%M2_HOME%\\bin

  1. 验证

3.1.2 环境准备(windows版)

图3-1-32 验证Maven是否安装成功

安装 Jetbrains IDEA (下载地址见书籍【附件一】

  1. 插件安装 下载地址 密码: mdji

  2. 如果IDEA安装了Lombok插件,请禁用Lombok插件

  3. 点击菜单项File => Settings => Plugins

3.1.2 环境准备(windows版)

图3-1-33 插件管理页面操作示意

下载插件包 (联系Oinone官方客服)

3.1.2 环境准备(windows版)

图3-1-35 操作指引

3.1.2 环境准备(windows版)

图3-1-36 操作指引

安装MySQL 8 (下载地址见书籍【附件一】)

  1. 解压下载的ZIP安装包, 复制到自定义安装目录

  2. 设置环境变量 MYSQL_BASE_DIR

提换成MySQL安装目录路径

  1. 把 %MYSQL_BASE_DIR%\bin 加入到系统环境变量中

在PowerShell中可以使用 Get-Command mysqld 命令验证环境变量是否配置成功,执行成功输出mysqld的所在路径

  1. 初始化

在命令行中执行 mysqld --initialize-insecure --user=mysql

  1. 安装

    mysqld -install

  2. 启动MySQL服务

    mysqld -install

  3. 设置root用户密码

    alter user \'root\'@\'localhost\' identified with mysql_native_password by \'oinone\'; flush privileges;

安装DB GUI工具

Datagrip、MySQLWorkbench、DBEaver 选其一 ### 安装Git (下载地址见书籍【附件一】)

安装GraphQL测试工具Insomnia(下载地址见书籍【附件一】)

安装RocketMQ(下载地址见书籍【附件一】)

  1. 修改安装目录下bin中对应文件的默认配置

    a. runserver.cmd文件内容 -Xms2g -Xmx2g为 -Xms1g -Xmx1g

    b. runbroker.cmd文件内容 -Xms2g -Xmx2g为 -Xms1g -Xmx1g,以及-XX:G1HeapRegionSize=1m

  2. 启动RocketMQ NameServer命令 RocketMQ安装目录\bin\mqnamesrv.cmd start

  3. 启动RocketMQ Broker命令 RocketMQ安装目录\bin\mqbroker.cmd -n localhost:9876

  4. 停止 RocketMQ命令 mqshutdown.cmd broker mqshutdown.cmd namesrv

安装ElasticSearch 版本 8.4.1(下载地址见书籍【附件一】) (非必须)

ES运行时需要JDK18及以上版本JDK运行环境, ES安装包中包含了一个JDK18版本

set JAVA_HOME=ES安装路径\jdk

  1. 启动

ES安装路径\bin\elasticsearch.bat

  1. 停止 ctrl+c 或者关闭cmd、PowerShell的窗口

安装Redis (下载地址见书籍【附件一】)

  1. 解压安装包到安装目录

  2. 在PowerShell进入到Redis安装目录

  3. 在PowerShell中执行.\redis-server.exe,输出图中类似信息(如下图3-35所示):

3.1.2 环境准备(windows版)

图3-1-37 验证redis是否安装成功

  1. 新开PowerShell窗口, 进入到Redis安装目录, 执行 .\redis-cli.exe回车,输入 ping 回车输出 PONG即表示Redis安装成功

3.1.2 环境准备(windows版)

图3-1-38 验证redis是否安装成功

Zookeeper安装(下载地址见书籍【附件一】)

  1. 解压安装, 在 PowerShell中执行 tar zxvf 安装包路径(tar.gz包) -C Zk安装目录

  2. 进入 Zk安装目录\conf\ 复制 zoo_sample.cfg文件为 zoo.cfg

  3. 修改zoo.cfg文件的内容 (其中dataDir需要自己设定)

tickTime=2000
initLimit=10
syncLimit=5
clientPort=2181
dataDir=需要设置路径用来保存zk数据
maxClientCnxns=120
autopurge.snapRetainCount=3
autopurge.purgeInterval=1
admin.enableServer=false

图3-1-39 配置zk参数

  1. 进入 Zk安装目录\bin\执行 zkServer.cmd 5新开PowerShell窗口, 进入到Zk安装目录, 执行 zkCli.cmd, 连接成功后输入 ls /输出类似信息即安装成功

3.1.2 环境准备(windows版)

图3-1-40 验证zk是否安装成功

二、前端环境准备

  1. 安装nodejs 版本12.12.0 (下载地址见书籍【附件一】)

a.下载zip包之后解压到安装目录

b. 配置环境变量

ⅰ. 添加NODE_HOME环境变量

3.1.2 环境准备(windows版)

图3-1-41 添加NODE_HOME环境变量

ⅱ. 编辑PATH环境变量

3.1.2 环境准备(windows版)

图3-1-42 编辑PATH环境变量

c. 打开PowerShell输入

node --version
npm --version

图3-1-43 验证node和npm是否安装成功

输出类似信息,即为成功安装node与npm

3.1.2 环境准备(windows版)

图3-1-44 验证node和npm是否安装成功

  1. 安装vue-cli
npm install @vue/cli@4.5.17 -g

图3-1-45 安装vue-cli

安装完成之后执行vue --version,输出类似信息,即为成功安装vue-cli

3.1.2 环境准备(windows版)

图3-1-46 验证vue-cli是否安装成功

  1. 配置NPM源
npm config set registry http://nexus.shushi.pro/repository/kunlun/

图3-1-47 配置NPM源

  1. 登录NPM源账
npm login --registry "http://nexus.shushi.pro/repository/kunlun/"
# username、password、email 请见oinone开源社区群公告,也可以联系oinone合作伙伴或服务人员
npm info underscore

图3-1-48 登入NPM源的账号指令

3.1.2 环境准备(windows版)

图3-1-49 登入NPM源是否成功

3.1.2 环境准备(windows版)

图3-1-50 登入NPM源是否成功

  1. 安装cnpm (参见https://www.npmjs.com/package/cnpm
    npm install cnpm -g --registry=https://registry.npmmirror.com
    cnpm.cmd --version

    图3-1-51 安装cnpm

3.1.2 环境准备(windows版)

图3-1-51 验证cnpm安装是否成功

Oinone社区 作者:史, 昂原创文章,如若转载,请注明出处:https://doc.oinone.top/oio4/9226.html

访问Oinone官网:https://www.oinone.top获取数式Oinone低代码应用平台体验

(3)
史, 昂的头像史, 昂数式管理员
上一篇 2024年5月23日
下一篇 2024年5月23日

相关推荐

  • 4.2.2 框架之MessageHub

    一、MessageHub 请求出现异常时,提供”点对点“的通讯能力 二、何时使用 错误提示是用户体验中特别重要的组成部分,大部分的错误体现在整页级别,字段级别,按钮级别。友好的错误提示应该是怎么样的呢?我们假设他是这样的 与用户操作精密契合 当字段输入异常时,错误展示在错误框底部 按钮触发服务时异常,错误展示在按钮底部 区分不同的类型 错误 成功 警告 提示 调试 简洁易懂的错误信息 在oinone平台中,我们怎么做到友好的错误提示呢?接下来介绍我们的MessageHub,它为自定义错误提示提供无限的可能。 三、如何使用 订阅 import { useMessageHub, ILevel } from "@kunlun/dependencies" const messageHub = useMessageHub('当前视图的唯一标识'); /* 订阅错误信息 */ messageHub.subscribe((errorResult) => { console.log(errorResult) }) /* 订阅成功信息 */ messageHub.subscribe((errorResult) => { console.log(errorResult) }, ILevel.SUCCESS) 图4-2-2-1 订阅的示例代码 销毁 /** * 在适当的时机销毁它 * 如果页面逻辑运行时都不需要销毁,在页面destroyed是一定要销毁,重要!!! */ messageHub.unsubscribe() 图4-2-2-2 销毁的示例代码 四、实战 让我们把3.5.7.5【自定义视图-表单】一文中的自定义表单进行改造,加入我们的messageHub,模拟在表单提交时,后端报错信息在字段下方给予提示。 Step1 (后端)重写PetType的创建函数 重写PetType的创建函数,在创建逻辑中通过MessageHub返回错误信息,返回错误信息的同时要设置paths信息方便前端处理 @Action.Advanced(name = FunctionConstants.create, managed = true) @Action(displayName = "确定", summary = "创建", bindingType = ViewTypeEnum.FORM) @Function(name = FunctionConstants.create) @Function.fun(FunctionConstants.create) public PetType create(PetType data){ List<Object> paths = new ArrayList<>(); paths.add("demo.PetType"); paths.add("kind"); PamirsSession.getMessageHub().msg(new Message().msg("kind error").setPath(paths).setLevel(InformationLevelEnum.ERROR).setErrorType(ErrorTypeEnum.BIZ_ERROR)); List<Object> paths2 = new ArrayList<>(); paths2.add("demo.PetType"); paths2.add("name"); PamirsSession.getMessageHub().msg(new Message().msg("name error").setPath(paths2).setLevel(InformationLevelEnum.ERROR).setErrorType(ErrorTypeEnum.BIZ_ERROR)); // data.create(); return data; } 图4-2-2-3 (后端)重写PetType的创建函数 Step 2 修改PetForm.vue <template> <div class="petFormWrapper"> <form :model="formState" @finish="onFinish"> <a-form-item label="品种种类" id="name" name="kind" :rules="[{ required: true, message: '请输入品种种类!', trigger: 'focus' }]"> <a-input v-model:value="formState.kind" @input="(e) => onNameChange(e, 'kind')" /> <span style="color: red">{{ getServiceError('kind') }}</span> </a-form-item> <a-form-item label="品种名" id="name" name="name" :rules="[{ required: true, message: '请输入品种名!', trigger: 'focus' }]"> <a-input v-model:value="formState.name" @input="(e) => onNameChange(e, 'name')" /> <span style="color: red">{{ getServiceError('name') }}</span> </a-form-item> </form> </div> </template>- <script lang="ts"> import { defineComponent, reactive…

    2024年5月23日
    1.4K00
  • 3.5.2.2 构建View的Template

    我们在很多时候需要自定义模型的管理页面,而不是直接使用默认页面,比如字段的展示与隐藏,Action是否在这个页面上出现,搜索条件自定义等等,那么本章节带您一起学习如何自定义View的Template。 自定义View的Template 在使用默认layout的情况下,我们来做几个自定义视图Template,并把文件放到指定目录下。 图3-5-2-14 自定义View的Template 第一个Tabel Step1 自定义PetTalent的列表 我们先通过数据库查看默认页面定义,找到base_view表,过滤条件设置为model =\’demo.PetTalent\’,我们就看到该模型下对应的所有view,这些是系统根据该模型的ViewAction对应生成的默认视图,找到类型为【表格(type = TABLE)】的记录,查看template字段。 图3-5-2-15 base_view表查看template字段 <view name="tableView" cols="1" type="TABLE" enableSequence="false"> <template slot="actions" autoFill="true"/> <template slot="rowActions" autoFill="true"/> <template slot="fields"> <field invisible="true" data="id" label="ID" readonly="true"/> <field data="name" label="达人"/> <field data="dataStatus" label="数据状态"> <options> <option name="DRAFT" displayName="草稿" value="DRAFT" state="ACTIVE"/> <option name="NOT_ENABLED" displayName="未启用" value="NOT_ENABLED" state="ACTIVE"/> <option name="ENABLED" displayName="已启用" value="ENABLED" state="ACTIVE"/> <option name="DISABLED" displayName="已禁用" value="DISABLED" state="ACTIVE"/> </options> </field> <field data="createDate" label="创建时间" readonly="true"/> <field data="writeDate" label="更新时间" readonly="true"/> <field data="createUid" label="创建人id"/> <field data="writeUid" label="更新人id"/> </template> <template slot="search" autoFill="true" cols="4"/> </view> 图3-5-2-16 base_view表查看template字段 对比view的template定义与页面差异,从页面上看跟view的定义少了,创建人id和更新人id。因为这两个字段元数据定义里invisible属性。 a. 当XML里面没有配置,则用元数据覆盖了。 b. 当XML里面配置了,则不会用元数据覆盖了。 在下一步中我们只要view的DSL中给这两个字段加上invisible="false"就可以展示出来了 图3-5-2-17 查看列表展示 图3-5-2-18 invisible属性 新建pet_talent_table.xml文件放到对应的pamirs/views/demo_core/template目录下,内容如下 a. 对比默认视图,在自定义视图时需要额外增加属性model="demo.PetTalent" b. name设置为"tableView",系统重启后会替换掉base_view表中model为"demo.PetTalent",name为"tableView",type为"TABLE"的数据记录。 ⅰ. name不同的但type相同,且viewAction没有指定时,根据优先级priority进行选择。小伙伴可以尝试修改name="tableView1",并设置priority为1,默认生成的优先级为10,越小越优先。 ccreateUid和writeUid字段,增加invisible="false"的属性定义 <view name="tableView" model="demo.PetTalent" cols="1" type="TABLE" enableSequence="false"> <template slot="actions" autoFill="true"/> <template slot="rowActions" autoFill="true"/> <template slot="fields"> <field invisible="true" data="id" label="ID" readonly="true"/> <field data="name" label="达人"/> <field data="dataStatus" label="数据状态"> <options> <option name="DRAFT" displayName="草稿" value="DRAFT" state="ACTIVE"/> <option name="NOT_ENABLED" displayName="未启用" value="NOT_ENABLED" state="ACTIVE"/> <option name="ENABLED" displayName="已启用" value="ENABLED" state="ACTIVE"/> <option name="DISABLED" displayName="已禁用" value="DISABLED" state="ACTIVE"/> </options> </field> <field data="createDate" label="创建时间" readonly="true"/> <field data="writeDate" label="更新时间" readonly="true"/> <field data="createUid" label="创建人id" invisible="false"/> <field data="writeUid" label="更新人id" invisible="false"/> </template> <template slot="search" autoFill="true" cols="4"/> </view> 图3-5-2-19 增加invisible=”false”的属性定义 Step2 重启应用看效果 图3-5-2-20 示例效果 第一个Form Step1 自定义PetTalent的编辑页…

    2024年5月23日
    1.2K00
  • 3.5.7.3 自定义布局

    布局是什么 在系统中,布局决定了母版内的页面元素,一个页面可以由多个组件进行组装,布局可以根据视图类型来替换。 默认布局范围: 图3-5-7-36 默认布局范围 作用场景 系统内置了多个布局组件,这些组件适用于全局、某个应用或某个页面,提供了灵活的布局定制选项。这些组件根据不同类型的视图进行了默认的组装,这也是选择了视图类型后,页面能够呈现的原因。当然,这些默认的组装是可以被覆盖、新增和添加新组件的。 使用registerLayout进行自定义布局 开发者在使用这些布局组件时,应该遵循公司的规范进行统一的调整。自定义布局组件的使用可通过 registerLayout 实现。registerLayout 的第一个参数是代表布局的 XML,第二个参数是不同的选项维度,默认包含以下维度: viewType: 视图类型 module: 视图模型所在模块 moduleName: 视图模型所在模块名称 model: 视图模型编码 modelName: 视图模型名称 viewName: 视图名称 actionName: 动作名称 inline: 是否内嵌视图(子视图特有) ttype: 模型字段类型(子视图特有) relatedTtype: 关联模型字段类型(子视图特有) field: 字段(子视图特有) 需要注意的是,动作可以是A模块下的a模型,这个动作可以打开B模块下的b模型的视图,module、moduleName、model、modelName应该填b模型对应的值,只不过大部分场景我们都是本模型的动作打开本模型的视图,所以这些场景拿动作所在模型填这些值也可以这些纬度也可以通过查看TS的定义查看 全局 在系统中,我们可以通过指定视图类型来决定某一类视图的全局布局。以表格为例,当第二个入参为 { viewType: ViewType.Table } 时,代表了替换了系统内所有表格的布局样式。 示例工程目录 以下是需关注的工程目录示例,main.ts更新导入./layout,layout/index.ts更新导出./tableLayout: 图3-5-7-37 全局纬度注册布局工程目录示例 示例代码 import {registerLayout, ViewType} from '@kunlun/dependencies' /** * 把系统内所有表格类型视图的全局动作放入搜索区域 * * 移动actionBar布局至外层 * <element widget="actionBar" slot="actionBar" slotSupport="action"> * <xslot name="actions" slotSupport="action" /> * </element> * */ const registerGlobalTableLayout = () => { return registerLayout(`<view type="TABLE"> <element widget="actionBar" slot="actionBar" slotSupport="action"> <xslot name="actions" slotSupport="action" /> </element> <pack widget="group"> <view type="SEARCH"> <element widget="search" slot="search" slotSupport="field" /> </view> </pack> <pack widget="group" slot="tableGroup"> <element widget="table" slot="table" slotSupport="field"> <element widget="expandColumn" slot="expandRow" /> <xslot name="fields" slotSupport="field" /> <element widget="rowActions" slot="rowActions" slotSupport="action" /> </element> </pack> </view>`, { viewType: ViewType.Table }) } registerGlobalTableLayout() 图3-5-7-38 全局纬度注册布局代码示例 效果 图3-5-7-39 全局纬度注册布局效果示例 应用 在系统中,我们可以通过指定视图类型和模块名称来替换某一类视图在特定模块下的全局布局。以表格为例,当第二个入参为 { viewType: ViewType.Table, moduleName: ‘resource’ } 时,代表了替换了资源应用下所有表格的布局样式,而其他应用仍使用默认布局 import {registerLayout, ViewType} from '@kunlun/dependencies' const registerModuleTableLayout = () => { return registerLayout(`<view type="TABLE"> <element widget="actionBar" slot="actionBar" slotSupport="action"> <xslot name="actions" slotSupport="action" /> </element> <pack widget="group"> <view type="SEARCH"> <element widget="search" slot="search" slotSupport="field" /> </view> </pack> <pack…

    2024年5月23日
    1.3K00
  • 应用中心

    在App Finder 中点击应用中心可以进入Oinone的应用中心,可以看到Oinone平台所有应用列表、应用大屏、以及技术可视化。 1. App Finder 平台提供App Finder搜索查找已安装的应用、点击进入应用; 我收藏的应用:在应用中心收藏后会呈现在“我收藏的应用”; 业务应用:与业务相关、用户可操作的应用; 设计器:平台提供五大设计器设计应用,即平台的无代码能力,包括:模型设计器、界面设计器、流程设计器、数据可视化、集成设计器。 2. 应用列表 应用列表管理平台中所有应用,管理应用的生命周期,如安装、升级、卸载,提供搜索、创建、编辑、卸载、收藏、设置首页等功能。 在介绍应用具体操作前,我们先来了解以下概念: 应用类型:分为应用与模块两种类型,两者区别在于在于应用有前台页面,可以在前台页面操作数据,模块没有前台页面、服务于其他应用或模块,大家在创建应用时可根据业务需求创建应用或模块。 依赖:创建新应用时,可依赖已有应用或模块,依赖后使用依赖应用/模块的能力,比如依赖文件应用可使用导入、导出能力,依赖资源应用可使用地址、语言等能力。 图3-2-35 Oinone的应用列表 2.1 创建 创建应用时,需要选择类型、定义应用名称、技术名称,选择依赖模块、所属分类、客户端类型。 每个应用大多数都需要依赖一些基础模块:文件、资源、 应用分类是按照应用所属业务域进行的分类管理,目前是平台提供的分类,后续会开放给用户自行管理。 客户端类型是指应用适用于PC端、移动端,如果只选择PC端,则应用不可在移动端使用。 2.2 编辑 编辑时,不允许编辑类型,技术名称,需要在创建时定义正确。 2.3 安装与卸载 卸载后,应用就不会呈现在App Finder中,不可进入应用、使用应用,可重新安装,安装后继续使用。 2.4 收藏应用 点击应用卡片右上角的星标可收藏、取消收藏应用,收藏的应用在App Finder和工作台中展示在收藏位置,可快捷进入。 2.5 设置首页 定义每个应用的首页,有两种方式: a. 通过绑定菜单,进入绑定菜单的页面; b. 直接绑定视图,选择模型、找到模型下的视图,如果可作为首页的视图不存在,也可以进入设计器创建。 2.6 应用详情 点击了解更多,可进入应用详情,查看应用基础信息。 2.7 设计器快捷入口 设计页面:进入界面设计器; 设计模型:进入模型设计器; 设计流程:进入流程设计器; 3. 应用大屏 应用大屏按照分类展示应用,未设置应用分类的应用,无法在应用大屏中呈现。 图3-2-37 未设置应用类目则无法在应用大屏中呈现。 4. 技术可视化 在技术可视化页面,出展示已经安装模块的元数据,并进行分类呈现。 图3-2-38 云数据分类呈现

    2024年5月23日
    1.7K00

Leave a Reply

登录后才能评论