apache isis

TL; DR这是关于一个帖子会谈SEMAT宠物项目我创建使用Apache伊希斯和部署到OpenShift在线这里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源到图像
方法 。 您可以通过使用例如“ 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

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

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

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

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

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

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

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

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

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

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

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

  6. 如何基于 Apache Doris 与 Apache Flink 快速构建极速易用的实时数仓

    随着大数据应用的不断深入,企业不再满足离线数据加工计算的时效,实时数据需求已成为数据应用新常态.伴随着实时分析需求的不断膨胀,传统的数据架构面临的成本高.实时性无法保证.组件繁冗.运维难度高等问题日益 ...

  7. 今日直播 | Apache Hudi x Apache Pulsar Meetup线上专场如期而至 大咖齐聚

    简介:Apache Hudi 与 Apache Pulsar 联合 Meetup 线上专场将于2021 年 8 月 30 日(今天) 14:00开启直播,你准备好了吗? Apache Hudi 与 A ...

  8. Apache Kylin VS Apache Doris

    作者: 康凯森 日期: 2018-04-17 分类: OLAP 1 系统架构 1.1 What is Kylin 1.2 What is Doris 2 数据模型 2.1 Kylin的聚合模型 2.2 ...

  9. apache ignite_使用Apache Ignite优化Spark作业性能(第1部分)

    apache ignite 来看看他们是如何工作的! 本文的某些部分摘自我的书< Apache Ignite的高性能内存计算> . 如果您对这篇文章感兴趣,请查看本书的其余部分,以获取更多 ...

最新文章

  1. JavaFX打包工具(javafxpackager)
  2. 深入理解幂等性及Restful风格API的幂等性问题详解
  3. docker history 27f1068ca9da --no-trunc查看镜像dockerfile内容
  4. linux配置本地yum源 centos7.9为例
  5. 统计--过滤(筛选)索引的统计信息过期问题测试
  6. 鲲鹏云实验-.NET Core 3.0-开始使用
  7. boost 获取时间
  8. 51nod 1092 回文字符串【LCS】
  9. 【系统架构】大规模的C++项目代码层次结构
  10. code函数oracle列子,Oracle Pivot函数语法详解及应用实例
  11. day47 Pyhton 数据库Mysql 04
  12. 智能优化算法(源码)-海鸥优化算法(SOA)
  13. Python3.6下安装爬虫scrapy框架的安装步骤以及遇到的诸多问题
  14. 工程计算——实战:追赶法扰动分析
  15. kali虚拟机安装教程(超详细)
  16. 段子界“鼻祖”将关闭服务,它提高了一代人的笑点
  17. 关于网络、交换机、路由器
  18. python自动化运维:python环境的安装
  19. 工作迷茫,想换工作了!
  20. 妈蛋!HR你搞我,我的缺点就是身体不好不能加班,怎么了?

热门文章

  1. 数论杂谈(欧拉定理与费马小定理结论与应用)
  2. YBTOJ:公共子串(KMP)
  3. P5056-[模板]插头dp
  4. YbtOJ#20237-[冲刺NOIP2020模拟赛Day10]区间均值【树状数组】
  5. P5007-DDOSvoid的疑惑【树形dp】
  6. SPOJ687 Repeats(重复次数最多的连续子串)
  7. C. Code a Trie(Trie+dfs+贪心)
  8. 【单调队列】【DP】城市交通(jzoj 1749)
  9. NEERC2017 Archery Tournament 线段树 新套路
  10. Hadoop生态hive(三)Hive QL介绍