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)描述软件项目的状态。
想法是,可以使用以下七个字母以通用的方式描述每个项目:
利益相关者,机会,需求,软件系统,工作,团队,工作方式。 每个Alpha可以处于一个或多个状态,例如,
利益相关者可以是:认可,代表,参与,一致同意,满意等。此外,每个州在将Alpha过渡到该州之前,都需要满足某些条件。
如您所见,这是一个非常简单的域模型,带有状态机逻辑。
展示柜应用
够了,要查看我必须为此应用程序编写多少Java,请在github上检查项目的dom模块 。 所有其他框架代码都是通过maven插件生成的,不需要用户界面代码。 这是Project域实体屏幕渲染的屏幕截图:
除了生成用户界面之外,Apache Isis还将使用相同的域模型生成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