红帽JBoss BRMS和BPMS富客户端框架展示了与GWT / Errai / UberFire和AngularJS的多语言集成...

上周,我发布了一个博客,重点介绍了我的演示文稿,该演示文稿展示了我们在BRMS和BPMS平台内完成的工作,Drools和jBPM项目的产品化版本所产生的丰富客户端平台。 该演示文稿是所有屏幕截图和视频,您可以在此处找到博客和幻灯片共享的链接: “ Red Hat JBoss BRMS和BPMS Workbench和Rich Client Technology”。

演讲强调了我们UI工作的广泛范围; 展示了我们在BRMS和BPMS平台内所做的工作以及UI技术提供的灵活性和适应性。 它为GWT , Errai和UberFire的强大动力提供了很好的证明,这三种技术推动了所有这些。 我们等不及GWT 2.7的升级了 !

如上一个博客所述,UberFire网站只是一个占位符,还没有发布。 该计划是第一个发布我们的0.5版本的计划,但是对于我们的BRMS和BPMS平台而言,则更多。 然后,我们将其移至GWT 2.7并朝着适用于更广泛消费的UF 1.0努力。 在1.0中,我们将添加示例和文档,并致力于使最终用户更容易理解和使用它们。 当然,没有什么可以阻止冒险尝试0.5的,它的代码很健壮,并且已经在BRMS和BPMS中生成了产品– Freenode #uberfire我们一直在提供帮助。

该演示文稿本身建立在早期视频的基础上,该视频展示了我们的新Apps框架: Drools和jBPM KIE A​​pps Framework

上面的视频已经演示了我们的多语言功能,构建AngularJS组件并在UF环境中使用它们。 它还显示了我们受JSFiddle启发的全新RAD环境。

我现在想与大家分享我们在多语言开发另一端所做的工作-这次是从AngularJS中使用GWT和UF。 重要的是,我们允许采用AngularJS优先方法,该方法应与AngularJS人们熟悉的工具链配合使用。 首先是AngularJS,我的意思是AngularJS是最外面的容器。 上面的视频中UF已经在运行,并且是外部容器,可以在其中使用各个AngularJS组件。

在详细说明我们完成的工作之前,首先要涵盖屏幕和透视图的概念,这是我们提供多语言互操作性的两个主要组件-还有其他组件,但这足以理解接下来的视频和示例。 屏幕是我们最简单的组件,它是DIV加上可选的生命周期回调。 透视图也是DIV,但它包含1..n屏幕,具有不同的可能布局管理器和布局持久性。

屏幕

  • CDI发现或以编程方式注册。
  • 页面上的DIV。
  • 生命周期回调。
    • OnStart,OnClose,OnFocus,OnLostFocus,OnMayClose,OnReveal。
  • 通过Errai总线解耦。
    • 组件不会相互调用,所有通信都由总线处理。
  • 编辑器扩展屏幕,与资源类型相关联,并提供其他生命周期
    • onSave,isDirty。

透视

  • CDI发现或以编程方式注册。
  • 1..n屏幕的组成,但它本身是DIV。
  • 支持屏幕的可插入窗口管理。
    • 北,东,西南(NESW)。
      • 拖放对接功能。
    • 引导网格视图。
      • 分开的设计时间和运行时间。
    • 模板(ErraiUI或AngularJS)。
      • 透视图内容和布局的绝对控制。
  • 如果用户重新设计,则支持透视图布局的持久性。
    • 仅适用于NESW和Bootstrap Grid视图。

一幅图片价值一千个单词,因此这是一个透视图生成器的屏幕截图。 在这里,它使用Bootstrap Grid View布局管理器。 每个网格单元中都有一个屏幕。 保存透视图,然后从应用程序中使用它。 如果使用NESW布局管理器,则没有单独的设计时间,并且所有拖动都就地完成,并且每次更改后,持久性都会在后台发生。 尽管下面的屏幕快照中未显示它,但我们也支持屏幕的列表(下拉列表)和选项卡堆栈。

毛毛

现在回到AngularJS第一种方法的含义。 确定了6个不同点以证明这是可能的。

  1. UF屏幕和透视图应作为AngularJS指令无缝提供。
  2. 预编译UFJS的Bower包装。 UFJS是UF的预编译客户端专用版本。
  3. UFJS可以独立运行,例如file://。 UFJS可以选择与UF战争后端一起使用,从而允许UFJS保存状态所需的观点和其他可选位置的持久性,并可以访问我们提供的所有服务,例如身份管理。
  4. 在开发过程中支持实时刷新。
  5. 嵌套控制器。
  6. 持久性和路由。
  7. 使用诸如Yeoman , Grunt和Karma之类的工具 。

Eder产生了许多示例,您可以自己运行。 这些证明所有问题都已解决。 您可以在这里找到代码,以及自述文件以开始使用。 我们没有提供第7点的视频,因为我认为第1点到第6点的视频表明这不是问题。

Eder还针对每个用例创建了几个运行示例的简短视频,并将它们放入YouTube播放列表。 他添加了文本和标注以使发生的事情更清楚: AngularJS + UF PlayList

  1. 概述,解释每个视频的演示内容(33秒)。
  2. AngularJS App + UFJS,仅客户端,使用Bower分发。 (2分30秒)。
    • 通过Bower安装并使用UFJS
    • 创建一个本机AngularJS应用
    • 将此应用程序与UFJS集成
      • 显示超滤屏幕指令
      • 显示用友观点指令
  3. AngularJS应用程序+ UFJS客户端和UF服务器。
    • 1之2(3分58秒)。
      • 下载UF战争
      • 在EAP上安装并运行
      • 在Apache上下载并运行我们的Angular演示
      • 显示AngularJS路线+ UF集成
    • 2之2(4分06秒)。
      • 使用UF创建动态屏幕和透视图
      • 将AngularJS模板封装在UF屏幕中
      • 显示嵌套在父控制器中的AngularJS应用(在UF屏幕内)。
        • 展示了多层控制器嵌套。
  4. 带有AngularJS组件的KIE UF Workbench RAD环境。
  5. Uberfire编辑器可以无缝地用作Eclipse编辑器。

为了完整起见,原始视频显示了JSFiddle启发的RAD环境,该环境演示了UF首个多语言环境。 参见上面的第4点。

最后,为了展示并且因为我们可以,我们添加了一个奖励视频,演示了在Eclipse中无缝运行的UF编辑器组件。 这证明了我们的组件模型的强大功能-旨在使我们的组件在任何环境下都可以独立工作。 我们使用Errai拦截所有RPC调用并将它们桥接到Eclipse。 因为我们的编辑者使用的虚拟文件系统像其他服务一样被解耦和抽象了,所以我们可以使其适应Eclipse File io。 对于最终用户,结果是一个无缝的编辑器,显示为本地。 这允许开发可以在Web上和Eclipse甚至IntelliJ中运行的组件。 我们将稍后再公开此示例。

以下是从视频中截取的一些屏幕截图:

OQh5eY6

Y7NRIw0

krbL27k

E75wwoq

NU1uGlk

Hv2pmAh

Q0CP5cu

W9r05En
最后,对所有那些说不可能完成的人!

w8YXP7O

翻译自: https://www.javacodegeeks.com/2014/11/red-hat-jboss-brms-and-bpms-rich-client-framework-demonstrating-polyglot-integration-with-gwterraiuberfire-and-angularjs.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/364950.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vscode如何设置回车自动换行缩进?

要解决这个问题,首先打开设置,查找tabsize,进入settings.json。 把"editor.autoIndent"的属性值改为false,即"editor.autoIndent": "false",就可以了。

vue 过滤器使用的传参说明

在table中,需要对obj的数据类型进行文字转换,例如后台接口返回的姓别值:1,2。其中需要页面根据字典需要把1》男,2》女进行转换。 以前的习惯是每一个过滤方法都写一个方法进行转换,例如: 页面代…

ruby sinatra mysql_一分钟开始持续集成之旅系列之:Ruby + Sinatra 应用

前言现代软件工程越来越复杂,而开发效率随着软件复杂度增加呈指数型下降。为在提高开发效率的同时也能保证质量,越来越多团队开始践行敏捷开发方法。持续集成是敏捷开发的重要实践之一。它倡导团队通过自动化构建工具频繁地验证软件可用性,从…

C++语言实现-邻接表

图的邻接表实现 邻接表是图的一种链式存储结构。主要是应对于邻接矩阵在顶点多边少的时候,浪费空间的问题。它的方法就是声明两个结构。如下图所示: 先来看看伪代码: typedef char Vertextype; //表结点结构 struct ArcNode { int adjvex; …

使用Lucene的新FreeTextSuggester查找长尾建议

Lucene的“ 建议”模块提供了许多有趣的自动建议实现,以便在用户将每个字符输入搜索框时为他们提供实时搜索建议。 例如, WFSTCompletionLookup将所有建议及其权重编译到一个紧凑的有限状态传感器中 ,从而可以对基本建议进行快速前缀查找。 …

mysql 查看锁表日志_MYSQL 表锁情况查看

查看锁表情况mysql> show status like ‘Table%’;—————————-——–| Variable_name | Value |—————————-——–| Table_locks_immediate | 795505 || Table_locks_waited | 0 || Table_open_cache_hits | 0 || Table_open_cache_misses | 0 || Table_ope…

Java,Scala,Guava和Trove集合-它们可以容纳多少数据?

关于我们的数据结构,令人着迷的事情之一是,即使我们对它们非常熟悉,我们仍然很难说出像HashMap这样基本的东西在1GB的内存中可以容纳多少个项目。 我们可能会在学校,高级开发人员那里学到这一点,或者由于数据结构选择不…

switch 失效

switch 开关失效无法切换,可以关闭,无法开启。 发现问题点 require-table.js 中toggle value的数据类型不是 number 导致 (value ? no : yes )判断总为no; 前面将value 强制转换为number类型即可 转载于:https://www.cnblogs.c…

纯php socket mysql_PHP 连接 unix_socket MySQL

当MySQL使用Unix Socket启动时,直接使用localhost会发生了一个数据库错误,发生无法连接数据库错误。 Warning: mysql_connect() [function.mysql-connect]: [2002] 这时应当修改hostname,例如在CI 配置数据库 (database.php) 从: …

mysql为什么不能插入数据_mysql为啥不能插入数据

mysql为何不能插入数据?安装AppServ后首次使用mysql,没有图形界面,在“MySql Command Line Client”的操作如下:mysql> create database cars;Query OK, 1 row affected (0.00 sec)mysql> use cars;Database changedmysql&g…

mocha 测试 mysql_e2e 自动化集成测试 架构 实例 WebStorm Node.js Mocha WebDrive

e2e 自动化集成测试 架构 京东 商品搜索 实例 WebStorm Node.js Mocha WebDriverIO Selenium Step by step 二 图片验证码的识别 , 下面讲一下Node.js中如何访问数据库, 在做自动化测试过程中, 经常可能遇到需要到数据库取值,或是…

在Window上使用Jenkins自动发布Java工件

这篇文章将展示如何使用Jenkins Continuous Integration自动执行Java Web应用程序(使用MYSQL DB和基于Hibernate ORM在基于REST的Jersey2 Spring环境中开发的学生申请应用程序)的发布过程-上载发布工件到发布存储库。 如上一篇文章在Windows上使用Jenkin…

Python开发【第六篇】:模块

Python开发【第六篇】:模块 模块,用一砣代码实现了某个功能的代码集合。 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合。而对于一个复杂的功能来…

在jsp文件中通过超链接访问servlet_Eclipse中创建Servlet

1.新建test1.jsp文件,输入如下代码代码解释:一个超链接,跳转到forwardServlet注意forwardServlet 这里是个Servlet2.在工程中新建Servlet3.输入Class名称,注意下边的Supper Class 它自动继承了HttpServlet选择next4.Create Servle…

C# 多线程学习系列四之ThreadPool取消、超时子线程操作以及ManualResetEvent和AutoResetEvent信号量的使用...

1、简介 虽然ThreadPool、Thread能开启子线程将一些任务交给子线程去承担,但是很多时候,因为某种原因,比如子线程发生异常、或者子线程的业务逻辑不符合我们的预期,那么这个时候我们必须关闭它,而不是让它继续执行,消耗资源.让CPU不在把时间和资源花在没有意义的代码上. 2、主线…

Oracle学习:新建表空间

1. 以 sysdba 身份登入Oracle sqlplus / as sysdba; 2. 创建表空间 create tablespace (空间名)fwptfs (数据文件存放路径)datafile D:\xxx (初始大小)size 500m (自动扩容,每次200m)autoextend on next 200m; 3. 创建用户 create user (用户名)fwptfs…

tomcat7使用dbcp连接池遇到的坑

项目部署在tomcat后每隔一段时间便会报错 Cause: java.sql.SQLException: Could not retrieve transation read-only status server ; SQL []; Could not retrieve transation read-only status server; nested exception is java.sql.SQLException: Could not retrieve transa…

纯CSS实现3D照片墙

HTML部分&#xff1a; <body><div class"photo-wrap"> <!-- 舞台 --><div class"container"> <!-- 容器 --><div class"img">我是中心</div><div class"img img01"><img src&q…

Guava之RangeMap

在Guava官方API上面可以得知&#xff1a;RangeMap是一种集合类型( collection type)&#xff0c;它将不相交、且不为空的Range&#xff08;key&#xff09;映射给一个值&#xff08;Value&#xff09;。和RangeSet不一样&#xff0c;RangeMap不可以将相邻的区间合并&#xff0c…

CSS3新增的伪类选择器

伪类选择器的作用&#xff1a;对已有选择器做进一步的限制&#xff0c;对已有选择器能匹配的元素做进一步的过滤。CSS 3提供的伪类选择器主要分为以下三类&#xff1a; 结构性伪类选择器UI元素状态伪类选择器其他伪类选择器 1、结构性伪类选择器 Selector:root&#xff1a;匹…