{"id":71573,"date":"2017-12-20T13:00:42","date_gmt":"2017-12-20T11:00:42","guid":{"rendered":"https:\/\/www.javacodegeeks.com\/?p=71573"},"modified":"2017-12-19T10:55:11","modified_gmt":"2017-12-19T08:55:11","slug":"rapid-semat-application-development-apache-isis","status":"publish","type":"post","link":"https:\/\/www.javacodegeeks.com\/2017\/12\/rapid-semat-application-development-apache-isis.html","title":{"rendered":"Rapid SEMAT Application Development with Apache Isis"},"content":{"rendered":"<p><b>TL;DR <\/b>This post talks about a\u00a0<a href=\"https:\/\/github.com\/bibryam\/semat\">SEMAT pet project<\/a> I created using Apache Isis and deployed to OpenShift Online here\u00a0<a href=\"http:\/\/semat.ofbizian.com\/\" rel=\"nofollow\">http:\/\/semat.ofbizian.com<\/a><\/p>\n<h3>Apache Isis<\/h3>\n<p>As a Java developer who is working primarily on backend systems, I\u00a0<span style=\"text-decoration: line-through;\">hate\u00a0<\/span>do not enjoy creating user interfaces and dealing with Javascript. Luckily, there are Java projects such as JSF (grrr), Apache Wicket, Vaadin that can help avoid Javascript altogether and still create functional user interfaces. But even with these projects, the developer has to think about and actively create the user interface from Java code. That is similar to writing your own SQL statements in the age of ORMs such as Hibernate &#8211; an activity we do only when OOTB ORM is not good enough for the use case. And that is exactly where\u00a0<a href=\"http:\/\/isis.apache.org\/\" target=\"_blank\" rel=\"noopener\">Apache Isis<\/a> fits in: given a domain model and mapping annotations, it generates the complete user interface at runtime. In a sense, Apache Isis is a OUIM (Object\/User Interface Mapping) framework for Java.<\/p>\n<p><a href=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2017\/12\/isis-logo-568x286.png\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-71588\" src=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2017\/12\/isis-logo-568x286.png\" alt=\"\" width=\"568\" height=\"286\" srcset=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2017\/12\/isis-logo-568x286.png 568w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2017\/12\/isis-logo-568x286-300x151.png 300w\" sizes=\"(max-width: 568px) 100vw, 568px\" \/><\/a><br \/>\nThere is much more to Apache Isis than only creating user interfaces, it is a full stack rapid application development framework focused on domain driven design. But rather than talking about it, let&#8217;s see a complete application created with Apache Isis.<\/p>\n<h3>SEMAT Essence Kernel<\/h3>\n<p>To learn Apache Isis, I decided to implement the SEMAT model and deploy it to OpenShift Online asa\u00a0 Docker container. Simply said, SEMAT (Software Engineering Method and Theory) Essence Kernel is a\u00a0<a href=\"http:\/\/www.omg.org\/spec\/Essence\/1.0\/PDF\">OMG Standard<\/a> that helps define among other things a framework for describing the state of software projects from multiple perspectives (called alphas).<i><br \/>\n<\/i><\/p>\n<p><figure id=\"attachment_71589\" aria-describedby=\"caption-attachment-71589\" style=\"width: 620px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2017\/12\/semat.png\"><img decoding=\"async\" class=\"wp-image-71589 size-large\" src=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2017\/12\/semat-1024x705.png\" alt=\"\" width=\"620\" height=\"427\" srcset=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2017\/12\/semat-1024x705.png 1024w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2017\/12\/semat-300x207.png 300w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2017\/12\/semat-768x529.png 768w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2017\/12\/semat.png 1600w\" sizes=\"(max-width: 620px) 100vw, 620px\" \/><\/a><figcaption id=\"caption-attachment-71589\" class=\"wp-caption-text\">SEMAT Alpa States<\/figcaption><\/figure><\/p>\n<p>The idea is, that every project can be described in a generic way using the following seven alphas:<\/p>\n<p>Stakeholders, Opportunity, Requirements, Software System, Work, Team, Way-of-Working. And each Alpha can be in one or multiple states, for example, the<br \/>\n<a href=\"http:\/\/semat.org\/quick-reference-guide\" target=\"_blank\" rel=\"noopener\">Stakeholders<\/a> can be: Recognized, Represented, Involved, In Agreement, Satisfied, etc. In addition, each state has certain items to be satisfied before an Alpha can be transitioned to that state.<div style=\"display:inline-block; margin: 15px 0;\"> <div id=\"adngin-JavaCodeGeeks_incontent_video-0\" style=\"display:inline-block;\"><\/div> <\/div><\/p>\n<p><figure id=\"attachment_71592\" aria-describedby=\"caption-attachment-71592\" style=\"width: 828px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2017\/12\/Screen-Shot-2017-12-15-at-15.36.33.png\"><img decoding=\"async\" class=\"wp-image-71592 size-full\" src=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2017\/12\/Screen-Shot-2017-12-15-at-15.36.33.png\" alt=\"\" width=\"828\" height=\"612\" srcset=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2017\/12\/Screen-Shot-2017-12-15-at-15.36.33.png 828w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2017\/12\/Screen-Shot-2017-12-15-at-15.36.33-300x222.png 300w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2017\/12\/Screen-Shot-2017-12-15-at-15.36.33-768x568.png 768w\" sizes=\"(max-width: 828px) 100vw, 828px\" \/><\/a><figcaption id=\"caption-attachment-71592\" class=\"wp-caption-text\">Stakeholders Alpha&#8217;s States<\/figcaption><\/figure><\/p>\n<p>As you can see, this is a pretty simple domain model with a state machine logic behid it.<\/p>\n<h3>The Showcase Application<\/h3>\n<p>Enough said, to see how much Java I had to write for this application, check the\u00a0<a href=\"https:\/\/github.com\/bibryam\/semat\/tree\/master\/dom\/src\/main\/java\/com\/ofbizian\/semat\/dom\/domain\" target=\"_blank\" rel=\"noopener\">dom module<\/a> of the project on\u00a0<a href=\"https:\/\/github.com\/bibryam\/semat\" target=\"_blank\" rel=\"noopener\">github<\/a>. All of the other skeleton code is generated through a maven plugin and no user interface code is required. And here is a screenshot of the Project domain entity screen rendering:<\/p>\n<p><figure id=\"attachment_71593\" aria-describedby=\"caption-attachment-71593\" style=\"width: 620px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2017\/12\/semat_manager.png\"><img decoding=\"async\" class=\"wp-image-71593 size-large\" src=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2017\/12\/semat_manager-1024x531.png\" alt=\"\" width=\"620\" height=\"322\" srcset=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2017\/12\/semat_manager-1024x531.png 1024w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2017\/12\/semat_manager-300x156.png 300w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2017\/12\/semat_manager-768x398.png 768w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2017\/12\/semat_manager.png 1600w\" sizes=\"(max-width: 620px) 100vw, 620px\" \/><\/a><figcaption id=\"caption-attachment-71593\" class=\"wp-caption-text\">Project view as Apache Wicket screen<\/figcaption><\/figure><\/p>\n<p>In addition to generating a user interface, Apache Isis will generate also a REST API using the same domain model. How cool is that.<\/p>\n<p><figure id=\"attachment_71594\" aria-describedby=\"caption-attachment-71594\" style=\"width: 620px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2017\/12\/Screen-Shot-2017-12-18-at-09.42.51.png\"><img decoding=\"async\" class=\"wp-image-71594 size-large\" src=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2017\/12\/Screen-Shot-2017-12-18-at-09.42.51-1024x661.png\" alt=\"\" width=\"620\" height=\"400\" srcset=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2017\/12\/Screen-Shot-2017-12-18-at-09.42.51-1024x661.png 1024w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2017\/12\/Screen-Shot-2017-12-18-at-09.42.51-300x194.png 300w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2017\/12\/Screen-Shot-2017-12-18-at-09.42.51-768x496.png 768w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2017\/12\/Screen-Shot-2017-12-18-at-09.42.51.png 1600w\" sizes=\"(max-width: 620px) 100vw, 620px\" \/><\/a><figcaption id=\"caption-attachment-71594\" class=\"wp-caption-text\">SEMAT REST API generated from domain model<\/figcaption><\/figure><\/p>\n<p>And the beauty of all this is, that generating UI allows you quickly to iterate over the domain model, show it to the business owners to get feedback and contonue evolving the model.<\/p>\n<h2>Some of the SEMAT Application Features implemented\/enabled<\/h2>\n<ul>\n<li>Multi tenancy<\/li>\n<li>Manage multiple projects per tenant<\/li>\n<li>Manage project Alpha states<\/li>\n<li>Custom Essence Alpha state list per tenancy<\/li>\n<li>Custom Essence Checklist items per tenancy<\/li>\n<li>Alpha state spider\/radar diagram<\/li>\n<li>Automatic Apache Wicket based UI generation from domain model<\/li>\n<li>Automatic REST API generation from the same domain model<\/li>\n<li>Self Signup\/Registration<\/li>\n<li>Auditing user actions<\/li>\n<li>Session logging<\/li>\n<li>Internationalization<\/li>\n<li>Breadcrumb trail<\/li>\n<li>Bookmarks<\/li>\n<\/ul>\n<h2>Build and Run<\/h2>\n<p>Check the readme for full details, but you can build and run the application locally or on OpenShift to try it out.<\/p>\n<pre class=\" brush:java\">mvn clean install\r\ncd webapp\r\nmvn jetty:run<\/pre>\n<pre class=\" brush:java\">mvn clean install\r\ndocker build --rm -t bibryam\/semat .\r\ndocker run -p 8080:8080 bibryam\/semat<\/pre>\n<p>Then go to http:\/\/localhost:8080\/ and login: user\/user<\/p>\n<h2>Deploy to OpenShift<\/h2>\n<p>Once you have got an OpenShift running either locally or<br \/>\n<a href=\"https:\/\/manage.openshift.com\/\" target=\"_blank\" rel=\"noopener\">online<\/a>, and have a oc client installed, then you can deploy the already build semat docker image with the following commands:<\/p>\n<pre class=\" brush:java\">oc new-project semat\r\noc new-app bibryam\/semat:latest -e CATALINA_OPTS=\u201c-Xmx300m\u201d\r\noc expose service semat<\/pre>\n<p>If you do not trust docker images build by others (you should not!) then you can build your own docker image as shown above with options 2 and 3 and push it your own docker registry and run the application from it:<\/p>\n<pre class=\" brush:java\">oc new-app your_name\/semat:latest -e CATALINA_OPTS=\u201c-Xmx300m\u201d<\/pre>\n<p>Alternatively, you could avoid installing and running docker all together, and have the source code and the docker image build on OpenShift. That is called OpenShift Source-to-Image<br \/>\n<a href=\"https:\/\/docs.openshift.com\/enterprise\/3.0\/using_images\/s2i_images\/index.html\" rel=\"nofollow\">approach<\/a>. You can do this from OpenShift UI by using for example &#8220;Red Hat JBoss Web Server 3.1 Tomcat 8 1.0&#8221; template and pointing to the SEMAT github repo. Or use the template provided in the project itself:<\/p>\n<pre class=\" brush:java\">oc create -f semat-openshift-template.json\r\noc process semat<\/pre>\n<p>Using source to image approach allows setting up github webhooks, have a Red Hat base image, have jolokia added, Java memory configurations done, etc.<\/p>\n<h2>Live demo on OpenShift<\/h2>\n<p>See try out the application, check live demo running on a OpenShift Online<br \/>\n<a href=\"http:\/\/semat.ofbizian.com\/\" rel=\"nofollow\">http:\/\/semat.ofbizian.com<\/a><\/p>\n<p>In summary, if you have a domain model that changes often, and the agility in changing the domain logic is more important than how the user user interface looks like, check out Apache Isis. It is an incredible productive and fast business application development framework.<\/p>\n<div class=\"attribution\">\n<table>\n<tbody>\n<tr>\n<td>Published on Java Code Geeks with permission by Bilgin Ibryam, partner at our <a href=\"http:\/\/www.javacodegeeks.com\/join-us\/jcg\/\" target=\"_blank\" rel=\"noopener\">JCG program<\/a>. See the original article here: <a href=\"http:\/\/www.ofbizian.com\/2017\/12\/rapid-semat-application-development.html\" target=\"_blank\" rel=\"noopener\">Rapid SEMAT Application Development with Apache Isis<\/a><\/p>\n<p>Opinions expressed by Java Code Geeks contributors are their own.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>TL;DR This post talks about a\u00a0SEMAT pet project I created using Apache Isis and deployed to OpenShift Online here\u00a0http:\/\/semat.ofbizian.com Apache Isis As a Java developer who is working primarily on backend systems, I\u00a0hate\u00a0do not enjoy creating user interfaces and dealing with Javascript. Luckily, there are Java projects such as JSF (grrr), Apache Wicket, Vaadin that &hellip;<\/p>\n","protected":false},"author":372,"featured_media":112,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[1640],"class_list":["post-71573","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-enterprise-java","tag-apache-isis"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Rapid SEMAT Application Development with Apache Isis - Java Code Geeks<\/title>\n<meta name=\"description\" content=\"TL;DR This post talks about a\u00a0SEMAT pet project I created using Apache Isis and deployed to OpenShift Online here\u00a0http:\/\/semat.ofbizian.com Apache Isis As\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.javacodegeeks.com\/2017\/12\/rapid-semat-application-development-apache-isis.html\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Rapid SEMAT Application Development with Apache Isis - Java Code Geeks\" \/>\n<meta property=\"og:description\" content=\"TL;DR This post talks about a\u00a0SEMAT pet project I created using Apache Isis and deployed to OpenShift Online here\u00a0http:\/\/semat.ofbizian.com Apache Isis As\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.javacodegeeks.com\/2017\/12\/rapid-semat-application-development-apache-isis.html\" \/>\n<meta property=\"og:site_name\" content=\"Java Code Geeks\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/javacodegeeks\" \/>\n<meta property=\"article:published_time\" content=\"2017-12-20T11:00:42+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"150\" \/>\n\t<meta property=\"og:image:height\" content=\"150\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Bilgin Ibryam\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@bibryam\" \/>\n<meta name=\"twitter:site\" content=\"@javacodegeeks\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Bilgin Ibryam\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2017\\\/12\\\/rapid-semat-application-development-apache-isis.html#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2017\\\/12\\\/rapid-semat-application-development-apache-isis.html\"},\"author\":{\"name\":\"Bilgin Ibryam\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/person\\\/2a6e6d89581d73f4edb6b1a8e6ba90df\"},\"headline\":\"Rapid SEMAT Application Development with Apache Isis\",\"datePublished\":\"2017-12-20T11:00:42+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2017\\\/12\\\/rapid-semat-application-development-apache-isis.html\"},\"wordCount\":885,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2017\\\/12\\\/rapid-semat-application-development-apache-isis.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/enterprise-java-logo.jpg\",\"keywords\":[\"Apache Isis\"],\"articleSection\":[\"Enterprise Java\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2017\\\/12\\\/rapid-semat-application-development-apache-isis.html#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2017\\\/12\\\/rapid-semat-application-development-apache-isis.html\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2017\\\/12\\\/rapid-semat-application-development-apache-isis.html\",\"name\":\"Rapid SEMAT Application Development with Apache Isis - Java Code Geeks\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2017\\\/12\\\/rapid-semat-application-development-apache-isis.html#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2017\\\/12\\\/rapid-semat-application-development-apache-isis.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/enterprise-java-logo.jpg\",\"datePublished\":\"2017-12-20T11:00:42+00:00\",\"description\":\"TL;DR This post talks about a\u00a0SEMAT pet project I created using Apache Isis and deployed to OpenShift Online here\u00a0http:\\\/\\\/semat.ofbizian.com Apache Isis As\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2017\\\/12\\\/rapid-semat-application-development-apache-isis.html#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2017\\\/12\\\/rapid-semat-application-development-apache-isis.html\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2017\\\/12\\\/rapid-semat-application-development-apache-isis.html#primaryimage\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/enterprise-java-logo.jpg\",\"contentUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/enterprise-java-logo.jpg\",\"width\":150,\"height\":150,\"caption\":\"java-interview-questions-answers\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2017\\\/12\\\/rapid-semat-application-development-apache-isis.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Java\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/category\\\/java\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Enterprise Java\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/category\\\/java\\\/enterprise-java\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Rapid SEMAT Application Development with Apache Isis\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#website\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\",\"name\":\"Java Code Geeks\",\"description\":\"Java Developers Resource Center\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\"},\"alternateName\":\"JCG\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.javacodegeeks.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\",\"name\":\"Exelixis Media P.C.\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/exelixis-logo.png\",\"contentUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/exelixis-logo.png\",\"width\":864,\"height\":246,\"caption\":\"Exelixis Media P.C.\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/javacodegeeks\",\"https:\\\/\\\/x.com\\\/javacodegeeks\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/person\\\/2a6e6d89581d73f4edb6b1a8e6ba90df\",\"name\":\"Bilgin Ibryam\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/03f95018c41aee260c1d9d1435c7bdc0c4dd39e84af20eb900efccb26b2834ad?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/03f95018c41aee260c1d9d1435c7bdc0c4dd39e84af20eb900efccb26b2834ad?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/03f95018c41aee260c1d9d1435c7bdc0c4dd39e84af20eb900efccb26b2834ad?s=96&d=mm&r=g\",\"caption\":\"Bilgin Ibryam\"},\"description\":\"Bilgin is a software craftsman based in London, integration architect at Red Hat, Apache Camel and Apache OFBiz committer. He is an open source fanatic, passionate about distributed systems, messaging, enterprise integration patterns, and application integration. He is also the author of Camel Design Patterns and Instant Apache Camel Message Routing books.\",\"sameAs\":[\"http:\\\/\\\/www.ofbizian.com\\\/\",\"http:\\\/\\\/www.linkedin.com\\\/in\\\/bibryam\",\"https:\\\/\\\/x.com\\\/bibryam\"],\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/author\\\/bilgin-ibryam\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Rapid SEMAT Application Development with Apache Isis - Java Code Geeks","description":"TL;DR This post talks about a\u00a0SEMAT pet project I created using Apache Isis and deployed to OpenShift Online here\u00a0http:\/\/semat.ofbizian.com Apache Isis As","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.javacodegeeks.com\/2017\/12\/rapid-semat-application-development-apache-isis.html","og_locale":"en_US","og_type":"article","og_title":"Rapid SEMAT Application Development with Apache Isis - Java Code Geeks","og_description":"TL;DR This post talks about a\u00a0SEMAT pet project I created using Apache Isis and deployed to OpenShift Online here\u00a0http:\/\/semat.ofbizian.com Apache Isis As","og_url":"https:\/\/www.javacodegeeks.com\/2017\/12\/rapid-semat-application-development-apache-isis.html","og_site_name":"Java Code Geeks","article_publisher":"https:\/\/www.facebook.com\/javacodegeeks","article_published_time":"2017-12-20T11:00:42+00:00","og_image":[{"width":150,"height":150,"url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg","type":"image\/jpeg"}],"author":"Bilgin Ibryam","twitter_card":"summary_large_image","twitter_creator":"@bibryam","twitter_site":"@javacodegeeks","twitter_misc":{"Written by":"Bilgin Ibryam","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.javacodegeeks.com\/2017\/12\/rapid-semat-application-development-apache-isis.html#article","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/2017\/12\/rapid-semat-application-development-apache-isis.html"},"author":{"name":"Bilgin Ibryam","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/person\/2a6e6d89581d73f4edb6b1a8e6ba90df"},"headline":"Rapid SEMAT Application Development with Apache Isis","datePublished":"2017-12-20T11:00:42+00:00","mainEntityOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2017\/12\/rapid-semat-application-development-apache-isis.html"},"wordCount":885,"commentCount":0,"publisher":{"@id":"https:\/\/www.javacodegeeks.com\/#organization"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2017\/12\/rapid-semat-application-development-apache-isis.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg","keywords":["Apache Isis"],"articleSection":["Enterprise Java"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.javacodegeeks.com\/2017\/12\/rapid-semat-application-development-apache-isis.html#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.javacodegeeks.com\/2017\/12\/rapid-semat-application-development-apache-isis.html","url":"https:\/\/www.javacodegeeks.com\/2017\/12\/rapid-semat-application-development-apache-isis.html","name":"Rapid SEMAT Application Development with Apache Isis - Java Code Geeks","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2017\/12\/rapid-semat-application-development-apache-isis.html#primaryimage"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2017\/12\/rapid-semat-application-development-apache-isis.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg","datePublished":"2017-12-20T11:00:42+00:00","description":"TL;DR This post talks about a\u00a0SEMAT pet project I created using Apache Isis and deployed to OpenShift Online here\u00a0http:\/\/semat.ofbizian.com Apache Isis As","breadcrumb":{"@id":"https:\/\/www.javacodegeeks.com\/2017\/12\/rapid-semat-application-development-apache-isis.html#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.javacodegeeks.com\/2017\/12\/rapid-semat-application-development-apache-isis.html"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.javacodegeeks.com\/2017\/12\/rapid-semat-application-development-apache-isis.html#primaryimage","url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg","contentUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg","width":150,"height":150,"caption":"java-interview-questions-answers"},{"@type":"BreadcrumbList","@id":"https:\/\/www.javacodegeeks.com\/2017\/12\/rapid-semat-application-development-apache-isis.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.javacodegeeks.com\/"},{"@type":"ListItem","position":2,"name":"Java","item":"https:\/\/www.javacodegeeks.com\/category\/java"},{"@type":"ListItem","position":3,"name":"Enterprise Java","item":"https:\/\/www.javacodegeeks.com\/category\/java\/enterprise-java"},{"@type":"ListItem","position":4,"name":"Rapid SEMAT Application Development with Apache Isis"}]},{"@type":"WebSite","@id":"https:\/\/www.javacodegeeks.com\/#website","url":"https:\/\/www.javacodegeeks.com\/","name":"Java Code Geeks","description":"Java Developers Resource Center","publisher":{"@id":"https:\/\/www.javacodegeeks.com\/#organization"},"alternateName":"JCG","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.javacodegeeks.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.javacodegeeks.com\/#organization","name":"Exelixis Media P.C.","url":"https:\/\/www.javacodegeeks.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","contentUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","width":864,"height":246,"caption":"Exelixis Media P.C."},"image":{"@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/javacodegeeks","https:\/\/x.com\/javacodegeeks"]},{"@type":"Person","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/person\/2a6e6d89581d73f4edb6b1a8e6ba90df","name":"Bilgin Ibryam","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/03f95018c41aee260c1d9d1435c7bdc0c4dd39e84af20eb900efccb26b2834ad?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/03f95018c41aee260c1d9d1435c7bdc0c4dd39e84af20eb900efccb26b2834ad?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/03f95018c41aee260c1d9d1435c7bdc0c4dd39e84af20eb900efccb26b2834ad?s=96&d=mm&r=g","caption":"Bilgin Ibryam"},"description":"Bilgin is a software craftsman based in London, integration architect at Red Hat, Apache Camel and Apache OFBiz committer. He is an open source fanatic, passionate about distributed systems, messaging, enterprise integration patterns, and application integration. He is also the author of Camel Design Patterns and Instant Apache Camel Message Routing books.","sameAs":["http:\/\/www.ofbizian.com\/","http:\/\/www.linkedin.com\/in\/bibryam","https:\/\/x.com\/bibryam"],"url":"https:\/\/www.javacodegeeks.com\/author\/bilgin-ibryam"}]}},"_links":{"self":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/71573","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/users\/372"}],"replies":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/comments?post=71573"}],"version-history":[{"count":0,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/71573\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/media\/112"}],"wp:attachment":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/media?parent=71573"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/categories?post=71573"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/tags?post=71573"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}