Skip to content

Commit cb2dec5

Browse files
delchevclaude
andauthored
Sync Rhea with Dirigible 14.16.0: Intent Driven stack in, AngularJS/TS stack out (#309)
Co-authored-by: Claude Opus 5 <[email protected]>
1 parent 72f5cf6 commit cb2dec5

10 files changed

Lines changed: 167 additions & 91 deletions

File tree

CLAUDE.md

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,11 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
44

55
## What this is
66

7-
Rhea ([codbex.com/products](https://www.codbex.com/products/)) is a **codbex "Edition"** — a thin distribution that packages [Eclipse Dirigible](https://github.com/eclipse/dirigible) into a runnable Spring Boot application. It contains almost no business logic of its own; it assembles Dirigible components via Maven dependencies and applies codbex branding plus a few UI overrides. Rhea's focus is **Entities, Forms and Reports modeling** for Model Driven Architecture development the curated set of components in `application/pom.xml` (entity/forms/reports editors, the IDE, engines, and templates) reflects that focus.
7+
Rhea ([codbex.com/products](https://www.codbex.com/products/)) is a **codbex "Edition"** — a thin distribution that packages [Eclipse Dirigible](https://github.com/eclipse/dirigible) into a runnable Spring Boot application. It contains almost no business logic of its own; it assembles Dirigible components via Maven dependencies and applies codbex branding plus a few UI overrides. Rhea's focus is **Modeling and Applications**Entities, Forms and Reports modeling for Model Driven Architecture development, plus the **Intent Driven** techniques and tools (the `app.intent` engine, the Intent Editor and the conversational Builder shell). The curated set of components in `application/pom.xml` reflects that focus.
88

9-
Inheritance chain: `codbex-platform-parent` (the `com.codbex.platform` parent POM, currently 12.89.0) → `codbex-rhea-parent` (root `pom.xml`) → modules. Most build behavior, Maven profiles, plugin config, and dependency versions live in the **parent POM, not this repo** — when a build profile or plugin isn't defined here, it is inherited from the platform parent.
9+
Inheritance chain: `codbex-platform-parent` (the `com.codbex.platform` parent POM, currently 14.14.0) → `codbex-rhea-parent` (root `pom.xml`) → modules. Most build behavior, Maven profiles, plugin config, and dependency versions live in the **parent POM, not this repo** — when a build profile or plugin isn't defined here, it is inherited from the platform parent.
10+
11+
**Dirigible version.** The platform parent pins it through the `dirigible.version` property (parent releases track Dirigible releases 1:1). The root `pom.xml` currently **overrides** it to `14.16.0`, because parent 14.14.0 is the newest published one and Rhea needs 14.16.0 for the Intent Driven components (Builder shell, Monitoring shell, the Personal shell rename) and for the removal of the AngularJS/TypeScript application templates. Delete the override once `codbex-platform-parent` 14.16.0 or later is published.
1012

1113
## Build & run
1214

@@ -55,10 +57,23 @@ The app activates `common,app-default` by default (`application.properties`). To
5557

5658
- **`application/`** — the deliverable. `RheaApplication.java` is the Spring Boot entrypoint; it scans `org.eclipse.dirigible` and disables the default JDBC/JPA autoconfiguration (Dirigible manages its own datasources). The bulk of `application/pom.xml` is a curated list of `dirigible-components-*` dependencies that selects exactly which engines, editors, IDE views, menus, perspectives, and templates ship in this edition. **Adding/removing a platform feature = adding/removing a dependency here**, often paired with an `<exclusion>` to swap a Dirigible default for a codbex override (see below).
5759
- **`branding/`** — codbex branding resources (logo, favicon) served as a Dirigible project under `rhea-branding`. Branding values are wired in `application/src/main/resources/dirigible.properties`.
58-
- **`components/ui/`** — local overrides of stock Dirigible UI components, currently `menu-help` and `view-welcome`. The pattern: the application POM **excludes** the upstream component (e.g. `dirigible-components-ui-menu-help`, `dirigible-components-ui-view-welcome`) and depends on the codbex-rhea replacement instead. These are Dirigible "projects" (resources under `META-INF/dirigible/<guid>/`) using `.extension` files that hook into platform extension points like `platform-menus`.
60+
- **`components/ui/`** — local overrides of stock Dirigible UI components, currently `menu-help` and `view-welcome`. The pattern: the application POM **excludes** the upstream component (e.g. `dirigible-components-ui-menu-help`, `dirigible-components-ui-view-welcome`) and depends on the codbex-rhea replacement instead. These are Dirigible "projects" (resources under `META-INF/dirigible/<guid>/`) using `.extension` files that hook into platform extension points like `platform-menus`. Because they are **forks of upstream files**, diff them against the matching Dirigible module on every version bump — they drift silently (translations must live in `i18n/<locale>/*.json`, which is the only folder `platform-core/extension-services/locales.js` scans).
5961
- **`integration-tests/`** — browser-based integration tests extending `UserInterfaceIntegrationTest` from `dirigible-tests-framework`. Test classes end in `IT` and drive the running IDE via the `ide`/`browser` helpers.
6062
- **`helm/otc/`** — Helm chart for Kubernetes deployment (versioned separately from the app).
6163

64+
## What this edition ships (the parts that matter)
65+
66+
Pulled either explicitly or through the `dirigible-components-group-*` aggregators (`group-core`, `group-database`, `group-engines-core`, `group-api-platform`, `group-resources-ui`, `group-ide`, `group-ui`):
67+
68+
- **Modeling** — the Entity Data Modeler (`.edm`/`.model`), Form Designer (`.form`), Report editor, Database Schema Modeler, CSVIM, BPMN editor.
69+
- **Intent Driven**`engine-intent` (the `app.intent` parse / generate / AI agent endpoints), the Intent Editor (`ui-editor-intent`, via `group-ide`) and the conversational **Builder shell** (`resources-builder`, via `group-ui`).
70+
- **The single application stack** — Harmonia UI + client Java: `template-application-schema`, `-dao-java`, `-rest-java`, `-ui-harmonia-java`, `-events-java` and `template-form-builder-harmonia`. There is no AngularJS or TypeScript application stack any more (removed from Dirigible in 14.16.0), and the generated apps run on the Harmonia SPA shells (`resources-application`, `application-core`).
71+
- **Client Java runtime**`engine-java` + `data-store-java` + `api-modules-java` (the `org.eclipse.dirigible.sdk.*` SDK the generated code compiles against).
72+
- **Document output**`engine-document` (`.print` → XSL-FO → PDF) and `engine-numbering` (`.numbers` document numbering).
73+
- **Shells and operations** — Home launchpad, Application, Personal, Partner, Administration, **Monitoring**, Inbox and Documents shells (all via `group-ui`), plus the Workbench IDE.
74+
75+
Deliberately not included (add a dependency if an edition needs it): Camel/integrations engine, FTP/SFTP, Python, native apps, the S3/SharePoint CMS backends, `data-processes` (schema import/export processes) and the JS/TS starter templates.
76+
6277
## How customization works (the mental model)
6378

6479
There is no application Java code to edit for most feature work. To change what the platform does, you operate at the **packaging layer**:

README.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,10 @@
44
[![Eclipse License](https://img.shields.io/badge/License-EPL%202.0-brightgreen.svg)](https://github.com/codbex/codbex-rhea/blob/main/LICENSE)
55
[![Maven Central](https://img.shields.io/maven-central/v/com.codbex.rhea/codbex-rhea-application.svg)](https://central.sonatype.com/namespace/com.codbex.rhea)
66

7-
Rhea Edition contains entity and forms modeling standard components.
7+
Rhea Edition is the codbex vertical stack for **Modeling and Applications**. It contains the entity, forms and reports
8+
modeling components, the Intent Driven development techniques and tools (the `app.intent` engine, the Intent Editor and
9+
the conversational Builder shell), and the single application stack the generated applications run on - Harmonia UI on a
10+
client Java backend.
811

912
It is good for Model Driven Architecture related development models.
1013

application/pom.xml

Lines changed: 43 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,16 @@
6262
<artifactId>dirigible-components-group-database</artifactId>
6363
<type>pom</type>
6464
</dependency>
65+
<!-- TypeScript @Entity decorators -> Hibernate -->
66+
<dependency>
67+
<groupId>org.eclipse.dirigible</groupId>
68+
<artifactId>dirigible-components-data-store</artifactId>
69+
</dependency>
70+
<!-- Java @Entity annotations -> Hibernate (the generated application persistence layer) -->
71+
<dependency>
72+
<groupId>org.eclipse.dirigible</groupId>
73+
<artifactId>dirigible-components-data-store-java</artifactId>
74+
</dependency>
6575

6676
<!-- Engine -->
6777
<dependency>
@@ -122,6 +132,26 @@
122132
<groupId>org.eclipse.dirigible</groupId>
123133
<artifactId>dirigible-components-engine-cms-internal</artifactId>
124134
</dependency>
135+
<!-- Intent Driven development: app.intent parse / generate / AI agent -->
136+
<dependency>
137+
<groupId>org.eclipse.dirigible</groupId>
138+
<artifactId>dirigible-components-engine-intent</artifactId>
139+
</dependency>
140+
<!-- Client Java runtime: the backend of the generated applications -->
141+
<dependency>
142+
<groupId>org.eclipse.dirigible</groupId>
143+
<artifactId>dirigible-components-engine-java</artifactId>
144+
</dependency>
145+
<!-- Printable business documents: .print -> XSL-FO -> PDF -->
146+
<dependency>
147+
<groupId>org.eclipse.dirigible</groupId>
148+
<artifactId>dirigible-components-engine-document</artifactId>
149+
</dependency>
150+
<!-- First class document numbering: .numbers -->
151+
<dependency>
152+
<groupId>org.eclipse.dirigible</groupId>
153+
<artifactId>dirigible-components-engine-numbering</artifactId>
154+
</dependency>
125155

126156
<!-- UI Frontend -->
127157
<dependency>
@@ -156,6 +186,11 @@
156186
<groupId>org.eclipse.dirigible</groupId>
157187
<artifactId>dirigible-components-api-cms</artifactId>
158188
</dependency>
189+
<!-- The client Java SDK (org.eclipse.dirigible.sdk.*) the generated Java code compiles against -->
190+
<dependency>
191+
<groupId>org.eclipse.dirigible</groupId>
192+
<artifactId>dirigible-components-api-modules-java</artifactId>
193+
</dependency>
159194

160195
<!-- Resources -->
161196
<dependency>
@@ -534,41 +569,34 @@
534569
<groupId>org.eclipse.dirigible</groupId>
535570
<artifactId>dirigible-components-template-websocket</artifactId>
536571
</dependency>
572+
<!-- The single application stack: Harmonia UI + client Java backend -->
537573
<dependency>
538574
<groupId>org.eclipse.dirigible</groupId>
539-
<artifactId>dirigible-components-template-application-angular</artifactId>
540-
</dependency>
541-
<dependency>
542-
<groupId>org.eclipse.dirigible</groupId>
543-
<artifactId>dirigible-components-template-application-dao</artifactId>
544-
</dependency>
545-
<dependency>
546-
<groupId>org.eclipse.dirigible</groupId>
547-
<artifactId>dirigible-components-template-application-data</artifactId>
575+
<artifactId>dirigible-components-template-application-schema</artifactId>
548576
</dependency>
549577
<dependency>
550578
<groupId>org.eclipse.dirigible</groupId>
551-
<artifactId>dirigible-components-template-application-feed</artifactId>
579+
<artifactId>dirigible-components-template-application-dao-java</artifactId>
552580
</dependency>
553581
<dependency>
554582
<groupId>org.eclipse.dirigible</groupId>
555-
<artifactId>dirigible-components-template-application-odata</artifactId>
583+
<artifactId>dirigible-components-template-application-rest-java</artifactId>
556584
</dependency>
557585
<dependency>
558586
<groupId>org.eclipse.dirigible</groupId>
559-
<artifactId>dirigible-components-template-application-rest</artifactId>
587+
<artifactId>dirigible-components-template-application-ui-harmonia-java</artifactId>
560588
</dependency>
561589
<dependency>
562590
<groupId>org.eclipse.dirigible</groupId>
563-
<artifactId>dirigible-components-template-application-schema</artifactId>
591+
<artifactId>dirigible-components-template-application-events-java</artifactId>
564592
</dependency>
565593
<dependency>
566594
<groupId>org.eclipse.dirigible</groupId>
567-
<artifactId>dirigible-components-template-application-ui-angular</artifactId>
595+
<artifactId>dirigible-components-template-form</artifactId>
568596
</dependency>
569597
<dependency>
570598
<groupId>org.eclipse.dirigible</groupId>
571-
<artifactId>dirigible-components-template-form-builder-angularjs</artifactId>
599+
<artifactId>dirigible-components-template-form-builder-harmonia</artifactId>
572600
</dependency>
573601

574602
</dependencies>

components/ui/menu-help/src/main/resources/META-INF/dirigible/menu-help/configs/help.js

Lines changed: 73 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -9,69 +9,83 @@
99
* SPDX-FileCopyrightText: 2022 codbex or an codbex affiliate company and contributors
1010
* SPDX-License-Identifier: EPL-2.0
1111
*/
12-
exports.getMenu = () => ({
13-
systemMenu: true,
14-
id: 'help',
15-
menu: {
16-
translation: {
17-
key: 'common:help',
18-
},
19-
label: 'Help',
20-
items: [
21-
{
22-
translation: {
23-
key: 'menu-help:portal',
24-
},
25-
label: 'Help Portal',
26-
action: 'open',
27-
link: 'https://www.codbex.com/documentation/tooling/',
28-
separator: false
12+
import { repository } from "sdk/platform";
13+
14+
export function getMenu() {
15+
const hasOpenApi = repository.getResource('/registry/public/view-swagger/project.json').exists();
16+
const config = {
17+
systemMenu: true,
18+
id: 'help',
19+
menu: {
20+
translation: {
21+
key: 'common:help',
2922
},
30-
{
31-
translation: {
32-
key: 'menu-help:support',
23+
label: 'Help',
24+
items: [
25+
{
26+
translation: {
27+
key: 'menu-help:portal',
28+
},
29+
label: 'Help Portal',
30+
action: 'open',
31+
link: 'https://www.codbex.com/documentation/tooling/',
32+
separator: false
3333
},
34-
label: 'Contact Support',
35-
action: 'open',
36-
link: 'https://www.codbex.com/contact/',
37-
separator: false
38-
},
39-
{
40-
translation: {
41-
key: 'menu-help:pricing',
34+
{
35+
translation: {
36+
key: 'menu-help:support',
37+
},
38+
label: 'Contact Support',
39+
action: 'open',
40+
link: 'https://www.codbex.com/contact/',
41+
separator: false
4242
},
43-
label: 'Pricing Plans',
44-
action: 'open',
45-
link: 'https://www.codbex.com/pricing/',
46-
separator: false
47-
},
48-
{
49-
translation: {
50-
key: 'menu-help:whatsNew',
43+
{
44+
translation: {
45+
key: 'menu-help:pricing',
46+
},
47+
label: 'Pricing Plans',
48+
action: 'open',
49+
link: 'https://www.codbex.com/pricing/',
50+
separator: false
5151
},
52-
label: 'What\'s New',
53-
action: 'open',
54-
link: 'https://www.codbex.com/technology',
55-
separator: false
56-
},
57-
{
58-
translation: {
59-
key: 'menu-help:updates',
52+
{
53+
translation: {
54+
key: 'menu-help:whatsNew',
55+
},
56+
label: 'What\'s New',
57+
action: 'open',
58+
link: 'https://www.codbex.com/technology',
59+
separator: false
6060
},
61-
label: 'Check for Updates',
62-
action: 'open',
63-
link: 'https://www.codbex.com/products/',
64-
separator: true
65-
},
66-
{
67-
id: 'about',
68-
translation: {
69-
key: 'menu-help:about',
61+
{
62+
translation: {
63+
key: 'menu-help:updates',
64+
},
65+
label: 'Check for Updates',
66+
action: 'open',
67+
link: 'https://www.codbex.com/products/',
68+
separator: true
7069
},
71-
label: 'About',
72-
action: 'openWindow',
73-
separator: false
74-
}
75-
]
70+
{
71+
id: 'about',
72+
translation: {
73+
key: 'menu-help:about',
74+
},
75+
label: 'About',
76+
action: 'openWindow',
77+
separator: false
78+
}
79+
]
80+
}
81+
};
82+
if (hasOpenApi) {
83+
config.menu.items.splice(5, 0, {
84+
label: 'OpenAPI',
85+
action: 'open',
86+
link: '/services/web/view-swagger/ui/',
87+
separator: true
88+
});
7689
}
77-
});
90+
return config;
91+
};

components/ui/menu-help/src/main/resources/META-INF/dirigible/menu-help/translations/bg-BG/translation.json renamed to components/ui/menu-help/src/main/resources/META-INF/dirigible/menu-help/i18n/bg-BG/translation.json

File renamed without changes.

components/ui/menu-help/src/main/resources/META-INF/dirigible/menu-help/translations/en-US/translation.json renamed to components/ui/menu-help/src/main/resources/META-INF/dirigible/menu-help/i18n/en-US/translation.json

File renamed without changes.

components/ui/view-welcome/src/main/resources/META-INF/dirigible/view-welcome/js/welcome.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ welcome.controller('WelcomeController', ($scope, $http, WorkspaceService, Templa
6565
controlType: 'input',
6666
type: 'text',
6767
label: template.parameters[i].label,
68-
require: true,
68+
required: template.parameters[i].required === true,
6969
};
7070
}
7171
return form;

components/ui/view-welcome/src/main/resources/META-INF/dirigible/view-welcome/welcome.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@
1212
<script src="js/welcome.js" type="text/javascript"></script>
1313
<style>
1414
.imgColor path {
15-
background-color: var(--fdAvatarBackgroundColor);
16-
fill: var(--fdAvatarColor);
15+
background-color: var(--accent);
16+
fill: var(--accent-foreground);
1717
}
1818

1919
</style>
@@ -59,7 +59,7 @@ <h3 class="fd-section__title">Welcome to Rhea</h3>
5959
<p class="fd-text">You can create server-side scripting services by using the <bk-link href="http://www.codbex.com/documentation/platform/sdk" target="_blank">Enterprise Javascript API</bk-link>
6060
or just design your web pages in HTML5 by using your favorite client-side framework.
6161
<br>
62-
All source code is licensed under the <bk-link href="https://www.eclipse.org/legal/epl-v20.html" target="_blank">Eclipse Public License - v 2.0</bk-link> and maintained at <bk-link href="https://github.com/codbex/codbex-hyperion"
62+
All source code is licensed under the <bk-link href="https://www.eclipse.org/legal/epl-v20.html" target="_blank">Eclipse Public License - v 2.0</bk-link> and maintained at <bk-link href="https://github.com/codbex/codbex-rhea"
6363
target="_blank">GitHub</bk-link>.
6464
</p>
6565
</section>

integration-tests/src/test/java/com/codbex/rhea/integration/tests/HomePageIT.java

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,27 @@
1515

1616
class HomePageIT extends RheaIntegrationTest {
1717

18+
/**
19+
* Static copy on the Home landing page - deterministic, unlike the user-dependent greeting.
20+
*/
21+
private static final String HOME_LANDING_TAGLINE = "Everything starts here. Pick where you want to work today.";
22+
23+
/**
24+
* The root path lands on the Home launchpad, which carries no IDE perspectives - the Workbench
25+
* welcome view is asserted separately.
26+
*/
1827
@Test
19-
void testOpenHomepage() {
28+
void testOpenHomePage() {
2029
ide.openHomePage();
2130

2231
browser.assertElementExistsByTypeAndText(HtmlElementType.SPAN, "Rhea");
32+
browser.assertElementExistsByTypeAndText(HtmlElementType.PARAGRAPH, HOME_LANDING_TAGLINE);
33+
}
34+
35+
@Test
36+
void testOpenWorkbench() {
37+
ide.openIde();
38+
2339
browser.assertElementExistsByTypeAndText(HtmlElementType.HEADER3, "Welcome to Rhea");
2440
}
2541
}

pom.xml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<groupId>com.codbex.platform</groupId>
77
<artifactId>codbex-platform-parent</artifactId>
8-
<version>13.6.0</version>
8+
<version>14.14.0</version>
99
</parent>
1010

1111
<name>codbex - rhea - parent</name>
@@ -61,6 +61,13 @@
6161
<properties>
6262
<project.title>Rhea by codbex</project.title>
6363
<profile.content.phase>none</profile.content.phase>
64+
<!--
65+
Temporary override of the platform parent's dirigible.version. Rhea needs 14.16.0 for the
66+
Intent Driven components (Builder shell, Monitoring shell, the Personal shell rename) and
67+
because the AngularJS/TypeScript application templates were removed in that release.
68+
Remove this property once codbex-platform-parent 14.16.0 (or later) is published.
69+
-->
70+
<dirigible.version>14.17.0</dirigible.version>
6471
</properties>
6572

6673
<dependencies>
@@ -160,13 +167,6 @@
160167
<groupId>com.h2database</groupId>
161168
<artifactId>h2</artifactId>
162169
</dependency>
163-
164-
<!-- Olingo -->
165-
<dependency>
166-
<groupId>com.codbex.olingo</groupId>
167-
<artifactId>olingo-odata2-lib</artifactId>
168-
<type>pom</type>
169-
</dependency>
170170
</dependencies>
171171

172172
<dependencyManagement>

0 commit comments

Comments
 (0)