TL; DR这篇文章谈论我使用Apache Isis创建并部署到此处的OpenShift Online的SEMAT宠物项目: http: //semat.ofbizian.com

Apache Isis

作为主要在后端系统上工作的Java开发人员,我讨厌创建用户界面和处理Java脚本。 幸运的是,有Java项目,例如JSF(grrr),Apache Wicket,Vaadin,它们可以帮助完全避免使用Javascript并仍然创建功能用户界面。 但是即使有这些项目,开发人员也必须考虑并积极地从Java代码创建用户界面。 这类似于在诸如Hibernate之类的ORM时代编写自己的SQL语句–只有在OOTB ORM不足以适合用例的情况下,我们才进行此活动。 这正是Apache Isis所适合的:给定域模型和映射注释,它在运行时生成完整的用户界面。 从某种意义上说,Apache Isis是Java的OUIM(对象/用户界面映射)框架。


Apache Isis不仅仅是创建用户界面,还有很多其他功能,它是专注于域驱动设计的全栈快速应用程序开发框架。 但是,我们不讨论它,而是看一个使用Apache Isis创建的完整应用程序。

SEMAT精华内核

为了学习Apache Isis,我决定实现SEMAT模型并将其作为Docker容器部署到OpenShift Online。 简而言之,SEMAT(软件工程方法和理论)本质内核是OMG标准 ,它除其他外,还帮助定义了一个框架,用于从多个角度(称为alpha)描述软件项目的状态。

SEMAT阿尔帕州

想法是,可以使用以下七个字母以通用方式描述每个项目:

利益相关者,机会,需求,软件系统,工作,团队,工作方式。 每个Alpha可以处于一个或多个状态,例如,
利益相关者可以是:认可,代表,参与,一致同意,满意等。此外,每个州在将Alpha过渡到该州之前,都需要满足某些条件。

利益相关者Alpha的州

如您所见,这是一个非常简单的域模型,带有状态机逻辑。

展示应用

够了,要查看我必须为此应用程序编写多少Java,请在github上检查项目的dom模块 。 所有其他框架代码都是通过maven插件生成的,不需要用户界面代码。 这是Project域实体屏幕渲染的屏幕截图:

作为Apache Wicket屏幕的项目视图

除了生成用户界面之外,Apache Isis还将使用相同的域模型生成REST API。 多么酷啊。

从域模型生成的SEMAT REST API

而这一切的好处在于,生成UI可以使您快速迭代域模型,将其显示给业务所有者以获取反馈并继续发展模型。

已实现/启用了一些SEMAT应用程序功能

  • 多租户
  • 每个租户管理多个项目
  • 管理项目Alpha状态
  • 每个租户的自定义Essence Alpha状态列表
  • 每个租户的自定义精华清单项目
  • Alpha状态蜘蛛/雷达图
  • 通过域模型自动生成基于Apache Wicket的UI
  • 从同一域模型自动生成REST API
  • 自我注册/注册
  • 审核用户操作
  • 会话记录
  • 国际化
  • 面包屑小径
  • 书签

生成并运行

检查自述文件以获取完整的详细信息,但是您可以在本地或在OpenShift上构建和运行该应用程序以进行尝试。

mvn clean install
cd webapp
mvn jetty:run
mvn clean install
docker build --rm -t bibryam/semat .
docker run -p 8080:8080 bibryam/semat

然后转到http:// localhost:8080 /并登录:user / user

部署到OpenShift

一旦您在本地或本地运行OpenShift
online并安装了oc客户端,然后可以使用以下命令部署已构建的semat docker映像:

oc new-project semat
oc new-app bibryam/semat:latest -e CATALINA_OPTS=“-Xmx300m”
oc expose service semat

如果您不信任其他人构建的Docker映像(您不应该这样做!),则可以使用选项2和3构建如上所示的自己的Docker映像,并将其推入自己的docker注册表并从中运行应用程序:

oc new-app your_name/semat:latest -e CATALINA_OPTS=“-Xmx300m”

或者,您可以避免同时安装和运行docker,并在OpenShift上构建源代码和docker映像。 那就是所谓的OpenShift Source-to-Image
方法 。 您可以使用例如“ Red Hat JBoss Web Server 3.1 Tomcat 8 1.0”模板并指向SEMAT github存储库,从OpenShift UI中执行此操作。 或使用项目本身提供的模板:

oc create -f semat-openshift-template.json
oc process semat

使用源到映像的方法允许设置github webhooks,具有Red Hat基本映像,添加jolokia,完成Java内存配置等。

OpenShift上的现场演示

请参阅试用该应用程序,检查在OpenShift Online上运行的实时演示
http://semat.ofbizian.com

总之,如果您拥有一个经常更改的域模型,并且更改域逻辑的敏捷性比用户用户界面的外观更为重要,请查看Apache Isis。 这是一个令人难以置信的高效且快速的业务应用程序开发框架。

翻译自: https://www.javacodegeeks.com/2017/12/rapid-semat-application-development-apache-isis.html

使用Apache Isis快速进行SEMAT应用程序开发相关推荐

  1. apache isis_使用Apache Isis快速进行SEMAT应用程序开发

    apache isis TL; DR这是关于一个帖子会谈SEMAT宠物项目我创建使用Apache伊希斯和部署到OpenShift在线这里http://semat.ofbizian.com Apache ...

  2. 如何快速开始微信小程序开发?

    如何快速开始微信小程序开发? 小游戏是微信小程序中的一种分类,如果要做一款微信小游戏,就是在微信小程序中开发. 一个微信小程序是如何开发的呢?很多人尤其程序员会对这个问题感兴趣,本文将介绍如何快速注册 ...

  3. 小程序开发代码_快速学会微信小程序开发,无需懂代码!

    现在想要制作自己的小程序的人越来越多,但大多数都不懂任何代码知识,不知该如何制作.其实随着各种第三方开发工具的出现,无需微信小程序开发源代码,小白也能顺利生成一个自己的小程序了.下面我就跟大家说下该如 ...

  4. 微信小程序——(2)智慧商圈、微信支付快速积分到账小程序开发指引

    小伙伴们,小编在上一期中有讲到了微信小程序智慧商圈.微信支付快速积分到账小程序接入前准备,那么这期咱们来看看如何开发,由于小编是前端开发,后端不熟,所以这里就直接给小伙伴们抛一个官方的开发指引了:智慧 ...

  5. 【云开发】10分钟零基础学会做一个快递查询微信小程序,快速掌握微信小程序开发技能(轮播图、API请求)

    大家好,我叫小秃僧 这次分享的是10分钟零基础学会做一个快递查询微信小程序,快速掌握开发微信小程序技能. 这篇文章偏基础,特别适合还没有开发过微信小程序的童鞋,一些概念和逻辑我会讲细一点,尽可能用图说 ...

  6. 小程序开发好学吗?需要掌握哪些知识技能?

    不知道从什么时候开始,小程序突然爆火了起来.当然这不是没有原因的,一方面是由于小程序依托着微信庞大的用户群体,另一方面也是由于它自身即用即走的便利性.目前正处于小程序开发的红利期,一时之间国内的企业公 ...

  7. 小程序开发工具中黑马优购小程序tabs组件_别不信,二十一天巧妙精通微信小程序的开发,附赠教程...

    资料简介: 这是一本帮助编程爱好者和从业人员从零开始学习微信小程序设计的书.本书紧跟微信小程序的技术发展,是目前在该领域率先进行系统的技术探讨和培训的著作. 本书站在学习的角度,目的是让学习者通过21 ...

  8. 微信小程序开发(一)基础概念汇总

    大家好,我是千与千寻,最近开始涉及小程序开发了,学一学最后做出来一个项目,最开始进入微信小程序开发的时候,如果学过Vue框架接触微信小程序开发的速度会非常快.我准备顺便开设一个专题,进行讲解微信小程序 ...

  9. 微信小程序开发导航:精品教程+网友观点+demo源码(5月9日更新)

    1:官方工具:https://mp.weixin.qq.com/debug/w ... tml?t=1476434678461 2:简易教程:https://mp.weixin.qq.com/debu ...

最新文章

  1. eclipse中创建类和包的快捷方式
  2. 也做SQL查询:班级总成绩 前三名,总成绩有相等的情况
  3. matlab绘图标题含有n=变量的方法(类似c语言)
  4. linux系统怎么清理指定日期的文件,Linux系统删除指定时间段文件的方法(2)
  5. 常遇问题及一些可能的解决方案
  6. 市场调研策划书_市场调查计划书模板
  7. STM32工作笔记0011---认识跳线帽
  8. 阿里云边缘计算三年,都为开发者带来了什么?
  9. Android WebView使用基础
  10. 马尔科夫随机过程的理解
  11. LeetCode:每日一题(2020.4.15)
  12. mysql8.0.15源码linux_源码安装mysql8.0.20
  13. 【转】Popclip的JSON格式化扩展
  14. 黑帽seo技术大揭秘
  15. 一种人脸识别活体检测方法:基于背景的活体判断方法
  16. 工作效率低如何解决?
  17. 免费在线逻辑图 + 示例
  18. c# winform 任务栏显示和隐藏
  19. html+css3跑马灯(抖音我们的照片记录幸福到永远)
  20. 爬取了知乎2.2亿阅读量 有漂亮女朋友是什么体验,结果发现...

热门文章

  1. HighChart模拟点击series的name显示隐藏
  2. java Date获取 年月日时分秒
  3. nginx配置前端反向代理
  4. 教学交流研讨会总结(一)
  5. Myeclipse编辑器简单使用整理
  6. 第三章选择结构(一)
  7. 购物车的功能——CSS源码
  8. 用赫夫曼树进行文件的压缩
  9. java开发可以转什么软件有哪些_转行开发软件Java编程必须会什么
  10. centos普通用户修改文件权限_用户管理(特殊权限、特殊属性、umask 默认权限 )