多可文档管理系统

在参加会议时,我们总是会遇到高素质的决策者,他们经常问同样的问题:'您的框架有多可扩展性?如果我需要比现成的功能更多的东西该怎么办? '。 这个问题是非常合理的,因为他们只是不想被卡在开发曲线的中间,然后意识到框架只是不允许实现某些功能,或者,如果使用开源产品,它可能需要花费很长的时间才能深入探究框架中记录较差的部分。

通常会特别注意用户界面部分:该框架有多少个组件? 是否可以集成第三方小部件? 最后,将它们集成到您的应用程序中有多么容易。

即使框架为您提供了许多现成的组件,有时您可能仍需要具有非常特殊的,通常不使用的内容,因此未在框架中实现。

在本文中,我将说明如何将第三方视觉组件集成到CUBA平台中。

CUBA平台中的通用用户界面

为了让您简要了解CUBA平台提供的现成的视觉组件,请查看以下图片:

如您所见,有一个现成的扩展组件集,但是所有组件都是非常通用的,广泛用于企业应用程序。 现在假设我们需要集成更具体的内容。

从CUBA Studio的2.1版本开始,此过程已针对Vaadin,JavaScript和GWT组件进行了大幅简化,因为Studio脚手架存根并添加了新组件的所有必需定义。 新组件到平台的集成分为三个级别:

  1. 由于框架的通用UI是在Vaadin之上构建的,因此新组件可以作为本机Vaadin组件使用。 开发人员已经可以在CUBA应用程序中使用此组件,并将其添加到未包装的CUBA容器中。
  2. 新组件已集成到CUBA通用UI中。 在这种情况下,从应用程序开发人员的角度来看,它看起来与可视组件库中的标准组件相同。 开发人员可以在屏幕XML描述符中定义组件,也可以通过控制器中的ComponentsFactory创建组件
  3. 新组件在Studio组件面板上可用,并且可以在所见即所得布局编辑器中使用,如下图所示。

在本文中,我们将研究Vaadin组件的第一级集成,并创建一个示例应用程序,以了解在现阶段如何在您的CUBA应用程序中使用它。

整合Vaadin组件

如前所述,CUBA平台中的通用UI是基于Vaadin框架构建的,将其组件集成到CUBA应用程序中非常容易:

  1. 向第三方Vaadin附加工件添加依赖项。
  2. 在您的项目中创建Web-toolkit模块。 该模块包含GWT小部件集文件,并允许您创建可视化组件的客户端部分。 只需将附加控件集添加到项目的控件集即可。
  3. 如果组件的外观不适合应用程序主题,请创建主题扩展并为新组件定义一些CSS。

让我们以Stepper组件为例,看看它在CUBA Studio中是如何工作的:

第一步,我们单击Create web toolkit module ,以集成Vaadin组件,然后单击Create new UI组件

现在,距CUBA中新的Vaadin组件约有10分钟的路程:

  1. 在“组件类型”组框中选择“ Vaadin附加组件”。
  2. 要定义Add-on Maven依赖项值,请转到stepper插件页面,按Install(安装)绿色按钮,从出现的文本框中复制它,然后粘贴到CUBA Studio的Add-on Maven依赖项字段中。
  3. 最棘手和最令人困惑的部分是Inherited Widgetset (对于那些初次使用Vaadin的用户而言) (您可以在此处了解有关Vaadin WidgetSets的更多信息,但您无需真正了解它就可以继续进行此操作文章)。 在stepper附加页面的Related links部分中有一个Source code链接,单击它。 该链接将带您到该组件的GitHub存储库。 要定义Vaadin组件的小部件集,您需要在源代码中找到* .gwt.xml文件。 继续至addon / src / main / resources文件夹。 在这里,您将看到包含StepperWidgetset.gwt.xml文件的org / vaadin / risto / stepper /小部件集。 这足以构造我们的Inherited widgetset值: org.vaadin.risto.stepper.widgetset.StepperWidgetset 。 简而言之,它是在Java中作为导入类编写的* .gwt.xml文件的路径。
  4. 暂时取消选中“集成到通用UI”框,然后说“确定”
  5. Studio将显示通知“ Component created ”并重建项目,因为它需要将新的依赖项添加到gradle构建脚本中,下载所需的库并重新编译widgetset。 因此,我们只需要等待几分钟,直到该过程完成。
  6. 最后,我们调整组件以适合我们的应用主题。

如果看一下源代码,我们可以看到该组件是SCSS样式的,因此我们需要将其样式添加到项目依赖项中。 为此,请转到“项目属性”部分,单击“ IDE” 。 IDE将显示build.gradle ,您应在其中将主题(“ org.vaadin.addons:stepper:2.3.0”)行添加到configure(webModule)任务的依赖项中,如下图所示。

现在我们可以应用所需的样式。 转到“项目属性”部分,然后单击“创建主题扩展” 。 选择halo作为默认值,然后单击Create 。 Studio会在应用程序的Web模块中添加themes / halo / halo-ext.scss文件,您可以在其中为新组件指定样式或修改现有组件的样式。 它还将在构建脚本中进行必要的更改,并为您的IDE重新创建项目文件。

在您的IDE中打开halo-ext.scss文件,并粘贴以下CSS,如下图所示:

…
@import "../VAADIN/addons/stepper/stepper";
…@include stepper;/* Basic styles for stepper inner textbox */.stepper input[type="text"] {@include box-defaults;@include valo-textfield-style;&:focus {@include valo-textfield-focus-style;}}
…

而已! 现在我们已经可以在CUBA应用程序中使用该组件了!

在CUBA应用程序中使用3rd Party Vaadin组件

最后,让我们用步进器创建一个屏幕。 由于我们仅完成了第一级集成,因此它仍然不是通用CUBA UI的一部分,因此无法直接在xml屏幕描述符中使用它,但可以通过编程方式创建它。

让我们开始吧:

  1. 从我们的网站下载CUBA Studio,进行安装,启动CUBA Studio服务器,然后在浏览器中打开Studio。 如果您在此阶段遇到任何麻烦,请按照视频指南(“快速入门”页面的第1部分)进行操作。
  2. 创建一个名为vaadin-component的项目。 Studio会自动命名项目名称空间和根包。
  3. 请遵循整合Vaadin组件中的步骤
  4. 由于步骤3已完成,请转到Studio左侧面板中的“屏幕”部分,将重点放在“ Web模块”项上,然后单击“新建” 。 Studio会提示您选择是要从头创建新屏幕还是扩展现有屏幕(例如,用户编辑器或“文件上传”对话框)。 我们将从头开始寻求新的屏幕。
  5. 现在,我们直接进入“布局”选项卡,在此处可以直观地设计屏幕。 我们需要使用一些容器,该容器将用作步进器的占位符。 在组件搜索字段中输入“ hbox ”,Studio会按名称过滤UI组件。 将HBox组件拖放到窗体或层次结构中
  6. 右键单击位于可视表单布局中的组件表示形式; 或在“层次结构”部分中选择组件,然后切换到“属性”选项卡(在“组件面板”旁边)。

我们将需要使用屏幕控制器中的Hbox,以便能够通过控制器访问CUBA组件,我们需要定义其id 。 只需在ID字段中按右按钮,Studio就会自动生成一个ID。

另外,我们希望步进器的宽度为250px,因此我们为其容器指定此尺寸。

应用我们所做的所有更改。

  1. 启动您的IDE,转到屏幕设计的控制器选项卡,然后按IDE的Studio将生成的项目文件,并在IDE中打开屏幕控制器。

  2. 移至IDE,我们已经在Studio中安装了屏幕控制器。 让我们编码一下。 您需要添加的所有行均带有详细注释:
package com.company.vaadincomponent.web.screens;import com.haulmont.cuba.gui.vaadincomponent.AbstractWindow;
import com.haulmont.cuba.gui.vaadincomponent.HBoxLayout;
import com.vaadin.ui.Layout;
import org.vaadin.risto.stepper.DateStepper;import javax.inject.Inject;
import java.util.Map;public class Screen extends AbstractWindow {/* Getting access to the hbox component, using CUBA mechanism for UI components injection */@Injectprivate HBoxLayout hbox;/* Create stepper to be placed into the prepared hbox container */private DateStepper stepper = new DateStepper();/* Overriding init method, which will be called by the framework after creation of all components and before showing the screen */@Overridepublic void init(Map<String, Object> params) {super.init(params);/* Unwrapping hbox to get access to the native Vaadin layout to place stepper */Layout box = hbox.unwrap(Layout.class);/* Placing stepper component into the unwrapped hbox container */box.addComponent(stepper);/* Defining stepper size to fit 100% of the parent hbox component width */stepper.setWidth("100%");/* Adding listener to show notification when stepper value is changed */stepper.addValueChangeListener(event -> showNotification("Value has been changed to " + stepper.getValue(), NotificationType.HUMANIZED));}
}
  1. 要从应用程序的主菜单访问我们的屏幕,请转到Studio右侧面板的Main Menu(主菜单)部分,单击Edit(编辑),将焦点放在应用程序项上,然后按New(新建) 。 默认情况下,我们保留了步进器屏幕ID,因此,在下拉列表中找到屏幕值,然后按添加

  2. 现在是启动应用程序并查看其全部工作方式的时候了。 按“播放”按钮,该按钮位于Studio主菜单中“构建”项目的正下方。 Studio会征得您的许可更新数据库,并同意。

当应用程序启动并运行时,您将在左下方看到localhost:8080 / app链接,单击它。

CUBA应用程序将在登录屏幕上显示您的身份,默认用户为admin ,您猜密码是多少? 只需按Submit 。 单击主菜单的“应用程序”->“屏幕”项,然后开始!

您可以在此处找到工作的步进器示例项目的源代码。

结论

最初,我将写一篇文章,介绍Vaadin,GWT和JavaScript组件的所有集成级别,但是正如您所看到的那样,一篇文章就太多了。 因此,下一次我将介绍JavaScript组件。

另外,我想承认该过程的某些部分可以大大简化甚至完全消除,但这是第一步,可以立即帮助用户使用很少使用但有时非常有用的小部件使我们的通用用户界面饱和。 因此,如果您有关于如何改进它的建议或想法,请在我们的论坛上与我们分享。

翻译自: https://www.javacodegeeks.com/2016/07/how-extensible-is-your-framework.html

多可文档管理系统

多可文档管理系统_您的框架有多可扩展性?相关推荐

  1. 文档管理系统_云脉纸质文档管理系统怎么玩?

    企业文件作为企业发展的一项重要资源,在管理过程中却存在易丢失.多而乱.查找难.易泄露等诸如此类的问题,使得企业在发展过程中难免因为文件管理不当而蒙受损失. 企业文件作为公司重要资源,对文件的管理和再利 ...

  2. 10大开源文档管理系统_开源文档的5大趋势

    10大开源文档管理系统 我已经做了很长时间的开源文档. 在过去的十年中,关于创作和出版的态度发生了很多变化. 这些趋势中的一些趋势似乎是周期性的,例如语义标记的流行. 最新趋势使文档更接近于代码,许多 ...

  3. django开源电子文档管理系统_「开源推荐」BookStack v2.8 发布,简洁美观的在线文档管理系统

    程序介绍 BookStack,基于 Mindoc.使用Go语言的Beego框架开发的功能类似GitBook和看云的在线文档管理系统,拥有简洁美观的页面布局,实现了文档采集.导入.电子书生成以及版本控制 ...

  4. 多可文档管理服务器,【多可文档管理系统怎么用】多可文档管理系统好不好_使用技巧-ZOL软件百科...

    1.丰富的传输方式 1)多可文档管理系统提供批量文档传输工具,可以一次批量导入文件,也可定时导入文件. 2)系统提供快速导入功能,可以在服务器端选择服务器路径快速导入超大批量文件,文档大规模导入. 3 ...

  5. python api文档管理工具_开源的api文档管理系统

    在项目中,需要协同开发,所以会写许多API文档给其他同事,以前都是写一个简单的TXT文本或Word文档,口口相传,这种方式比较老土了,所以,需要有个api管理系统专门来管理这些api,从网上找了许多比 ...

  6. java 开原文档管理系统_开源文档管理系统LogicalDOC测试报告---安装篇

    开源文档管理系统 LogicalDOC 测试报告 --- 安装篇 一. 软件需求: JDK1.6 MySQL(支持 INNODB引擎 ) 二. 安装步骤: 1. JDK的安装 JDK 可以在官方网址  ...

  7. django开源电子文档管理系统_国产开源文档管理系统——Wizard

    介绍 Wizard是一款开源文档管理系统,支持三种格式类型的文档管理,分别是Markdown.Swagger和Table,以便于满足不同场景和不同需求下的文档管理,Markdown类型是当下比较常用的 ...

  8. Wizard 开源文档管理系统1.0发布啦

    Wizard 是一款开源文档管理系统,项目地址为 https://github.com/mylxsw/wizard.这个项目是 我 在2017年就开始开发的,起初只是想做一款能够在公司内部把Swagg ...

  9. linux开源文档管理系统_Linux中的系统管理员问题 免费和开源软件

    linux开源文档管理系统 根帐号 (Root Account) The "root" account is the most unrestrictive account on a ...

最新文章

  1. 【复盘】第一次灌鸡汤
  2. ELK学习笔记之ElasticSearch简介
  3. 深度学习专家Karpathy加入特斯拉,或将负责自动驾驶视觉研究
  4. windows环境下的zookeeper安装
  5. 常见Java面试题之静态变量和实例变量的区别
  6. [MySQL 5.6] Performance Schema 之 PS配置项(1)
  7. 我就拜你为师的飞秋爱好者
  8. 解决android混淆编译出现Proguard returned with error code 1和文件名、目录名或卷标语法不正确错误...
  9. Download Software Top 10
  10. android ios emoji表情,iOS和Android的Emoji表情同步方案
  11. 计算机学霸电视剧,“学霸爱上学渣”的4部电视剧,部部甜到爆炸,全看过的真有眼光...
  12. 【NLP】Seq2Seq与Attention(Neural Machine Translation by Jointly Learning to Align and Translate)回顾
  13. seata之jvm参数解析
  14. 华为手机怎样无线与电脑连接服务器,华为手机如何与电脑远程连接服务器
  15. Win11全新功能来袭!每天都有新亮点!
  16. 红米4a android p,一图彻底看懂红米4/红米4A
  17. 海信JAVA开发笔试题_JAVA设计模式之【工厂方法模式】
  18. Android模拟机设置中文输入法(拼音、手写、笔画等)
  19. 牛客-模拟、枚举与贪心-2022.10.18
  20. 音频信号 过零率 matlab,MATLAB计算信号短时平均过零率

热门文章

  1. 计算机交互媒体应用范围,浅析交互媒体设计中的科技与艺术的关系
  2. elasticsearch清除过期数据
  3. Python代码画小鸭穿雨靴--turtle绘图
  4. 奇怪的小鸭子也增加了Java实现
  5. Hive中的map join、left semi join和sort merge bucket join
  6. Please contact your system administrator. Add correct host key in /Users/***/.ssh/known_hosts
  7. Vue.js 写一个echarts的水滴图
  8. apple watch更新系统时出现红色感叹号怎么办?
  9. 拼多多校招编程题--大整数相乘(Java实现)
  10. 360前端星计划学习笔记0410