/ Release  

It's here; AppWorks 23.4; Fully GA and ready for consumption

Hi there AppWorks fans,

Welcome to a new installment of AppWorks tips.

The time is here to have a look at AWP 23.4 (GA for Q4 2023). New features are always appreciated; Have something to snack (🍕) and let me update you about all the latest and greatest functionalities delivered in this release…


Let get right into it…

This time we also have an early release…On 29th of September I could already download the packages (I think even on the 28th)! The installation menu did get an update…Why? Well, you don’t want to know! I followed my own upgrade post, but whatever I tried (after one evening) I couldn’t get it to work for some reason. And because time is valuable, it was for me quicker to just start over from scratch (takes 4-5 hours; incl. OTDS with push connector) than to find solutions for all the strange things I saw passing by!? The other benefit is that the menu is now up-to-date; I use the latest CARS version 2.8.1, use OTDS version 23.3.1 with Tomcat 10.1.13, use TomEE 9.1.0 with Java 17.0.8. Only the RHEL 8.7 OS and Postgres DB 13.11 are still the same! So, we’re fully compliant with all the latest supported versions according to the documentation!

All documentation is found here; Just a direct link for you as the search on the support pages of OpenText is still a dramatic experience. Comment me if I’m the only one here and things might change. How hard can it be as “Information Management” company spreading the word of AI!? 🙃

I also have the hope OpenText moves to a different mindset when it comes to sharing software and documentation. Why must everything have a license? Why not use self-supported developer/community licenses for all; This way the products get far more reach, attention, involvement, collaboration, improvement, self-awareness?, or whatever we can produce. Or maybe it’s just me again!?


🆕 Update on the available changes in 23.4 🆕

Let’s open up the OpenText AppWorks Platform CE 23.4 Release Notes and jump through all the new features…


Runtime - WCAG 2.1 and Section 508 compliant

Web Content Accessibility Guidelines; I heard from it once, but wasn’t aware this is a recommendation in the W3C-space. Also, Section 508 is a new thing for me. The overlapping topic here is the term ‘Accessibility’, and this directly triggers the term “Disability”. So, now people with a disability can use the product with ease when using assistive technologies.

Well, it’s great we have support in this space; Only, what does this mean for the AppWorks runtime UI (as I expect design-time is out of scope here). Can we now…really simple:

  1. Create a new entity instance with the keystroke n on our keyboard!?!? Well, nope!?
  2. Switch to a high-contrast UI quickly!? Well, nope!?
  3. Change the <tab>-order of elements on a form!? Well, nope!?
  4. Set a perceivable-mode for reading text better!? Well, nope!?
  5. Can we define better readable error messages!? I haven’t checked, but I guess it’s still the same technical output.

What can we do extra now? Well, I have no idea!? Comment me…Do you have a disability and want to try out with me? Let me know…I make something nice to play with and we both send feedback to OpenText on any open improvements. Do you except the challenge?

Maybe it’s only paperwork as also the platform help/document isn’t telling me any more information on the term Disability…Or is it this new help UI!?

update_001


Quick search for runtime panels

So, we’re looking for binocular icons here? Well, I was looking…and after a refreshing eye of my kids, it was found! Clicking the icon make me do something like this:

update_002

Blazing fast, case-insensitive, and directly updating on the fly…This is how the OT support site should respond as well! So, “they” can do it! 🤣

This search icon is also available on the ‘Discussions’ and ‘Email’ panel on an entity layout (after opening an instance…trust me…it’s there!), but guess where it’s not available? And where you DO want this blazing fast feature!? Exactly, on the ‘Result list’ panel:

update_003

…Or is it just me again? 🙃


JS APIs support for AppWorks client

New API stuff…As an extension to this post. This time we can get our hands dirty on user/system information…Have a look; the list is getting bigger:

update_004

window.parent.publicAPIProvider is the call I do in the developer tools of Chrome.

Do you also see what I see in that screenshot! I don’t know what the plan is with getHTTPConnector(), but if it is what I think it is…The HTTP Connector is the entry-door to the outside world…Sooooo, great things are waiting for us!

Here the correct script examples:

1
2
3
4
//Yes, it's different from the documentation...That's why we have this blogsite!
window.parent.publicAPIProvider.resolveUserAndSystemDetails('system'); //to get the organization details like name and baseUrl
window.parent.publicAPIProvider.resolveUserAndSystemDetails('user'); //to get the current user details like name, UserId, etc.
window.parent.publicAPIProvider.getHTTPConnector()

The ‘getHTTPConnector’ response is also interesting(!) with the ‘SAML Artifact’ as output:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
{
"activeRequestCount": 0,
"isRequesting": false,
"isConfigured": true,
"baseUrl": "",
"defaults": {
"headers": {
"Accept": "application/json",
"X-Accept-Timezone": "Europe/Amsterdam",
"X-Requested-With": "XMLHttpRequest",
"SAMLart": "..."
},
"credentials": "omit"
},
"interceptors": [
{}
]
}

We’re building roads here…Great stuff! 🤓


Enhanced Monitoring framework (JMX)

Java Management eXtensions; a Java technology that supplies tools for managing and monitoring applications, system objects, devices (such as printers) and service-oriented networks. Those resources are represented by objects called ‘Managed Beans’ (MBeans). See here for more details.

You can access JMX via Java JConsole (to be found in the /bin directory of your Java SDK). After starting it, you see this screen:

update_005

Guess what you can fill in here? Can you remember this screen from your installation?

update_006

Well, those are your credentials…Now the host (which we know…) and the port (which is 9090):

1
2
3
4
5
6
7
8
9
10
11
sudo vi /usr/lib/systemd/system/tomee.service

Environment="CATALINA_OPTS=
-Xms1024M
-Xmx2048M
-server
-XX:+UseParallelGC
-Dcom.sun.management.jmxremote.port=9090
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
-Dbus.xml.vm.maxsize=2048"

I guess we don’t even need credentials because the authentication is set to FALSE!

update_007

You can also use these examples for a direct JMX service URL:

  • service:jmx:rmi://192.168.56.107:9090/jndi/rmi://192.168.56.102:9090/jmxrmi
  • service:jmx:rmi:///jndi/rmi://192.168.56.107:9090/jmxrmi

See also the administration manual of the platform with a full chapter about JMX details!

After some reading, this is also possible: service:jmx:rmi:///jndi/rmi://192.168.56.107:1099/cordys/appworks_tips%23sg_bpm%23sc_bpm

BUT…:

  • Port 1099 is found the ‘wcp.properties’ of the platform under com.eibus.management.rmiregistry.port=1099
  • To connect with a service container (in my case a BPM service container) on port 1099, it must run in its own JVM; So, not connected to an OS process…which is not recommended by OT! Each service container is by default connected to the OS process TomEE!
  • In the logging for the service container (right-click on it); You’ll find the correct JMX URL as well…Just that you know.
  • For the JMX connection over port 1099, I DO need to add those credentials!

Right…We have an understandable connection…Now what? How can we monitor things as described in the feature? So, the CRUD operations for an entity, rule definitions/execution, send/receive mail and list operations!? Well, I don’t have a mail server to try it out, but what I do have is an entity with CRUD operations, an ‘All cases’ list, and ‘Rule’ BBs…and see what I found:

update_008

Notes:

  • The List_080027... matches indeed with my ‘Case’ entity ‘TypeId’ (first part of the ‘ItemId’)
  • The attributes list clearly shows me the ReadCase service operation call I did for 15 times (incl. the ones in runtime!)
  • I also nicely see my 19 calls to open my lst_all_cases in runtime as well
  • The other attributes like ‘Create…’, ‘OnCreated…’, etc. are all 0 as I didn’t do any calls, but they do match the thought of CRUD and rule executions!

I guess that’s it…At least for me as fiddling with this stuff takes time…Much time, but we nailed it!


AppWorks Operations Orchestrator (RPA)

Long time ago I saw a demo passing by from OpenText connecting AppWorks with RPA via a BPM message. I placed it on my backlog to have a closer look, but never took the time to further dive into it. This post will also not dive into it…I leave it on my backlog; comment me if you would like to see me configuring it.
What I will dive into is where you can find all the RPA on the low-code AppWorks platform. This release is now supported to connect to a new MicroFocus (take-over last year) product called “Operation Orchestration”; I haven’t installed it, but it’s worth trying it out…Also, for later!

Where can we find RPA in our platform? First of all, it all depends on a service URL that you configure in an ‘RPA Client’ connector. Before you can use this connector you need to deploy 2 RPA CAP packages into the shared/system space:

update_009

After this deployment you can create a new service container in your organization where you can define the RPA service URL looking like this http://{hostname}:{port}/rpaservice; It exposes these API end-points:

  • http://{hostname}:{port}/rpaservice/appworks/authentication
  • http://{hostname}:{port}/rpaservice/rpa-instance/application-message

This RPA service is part of the suite installation (incl. a PDF manual):

update_010

With the service container in place, you need to be member of the role ‘RPA Admin’ (or be a Developer/Administrator already), and you’ll find yourself a new artifact ‘RPA Configuration’ where you add your RPA orchestration URLs:

update_011

With this circus up and running, you can create a new BPM where you can enable RPA on the ‘Send Message’ construct like this:

update_012

After this enablement, you can move to the RPA tab to finalize the loop:

update_013

How hard can it be? 🤣 Well, I guess we’ll find out once we start with it ourselves, but now we have at least some valid inputs to start with!

Other resources:

The only documentation for this specific MicroFocus-product-feature is found in the documentation, but not (yet!) helpful:

  1. Install Operations Orchestration Central, Operations Orchestration Workflow Designer, and their related components; Whatever that might be?
  2. To set up Operations Orchestrator, refer the guides and videos available in the OO RPA site and support forums. I did a search, but couldn’t find these videos anywhere (yet!)
  3. Develop a desired process to be automated through Operations Orchestration and then configure the OO RPA in AppWorks; Which is high-over explained in this post, but definitely explained in those missing videos…#SUPPORT!

Let’s move to the next feature; We dive into RPA on request…Let me know in the comments at the end of this post.


Translation enhancements (for lifecycle states)

Well, this is a familiar one…This was a request from my own project!! In the project we didn’t hear yet this was solved! 🤣 What is the case here; Well, if you have a multilingual solution, the translations of the lifecycle states (in my case Swedish sv-SE) are not visible everywhere (like in the progress bar, forms, list, and filters). This is very annoying as the end-users see different states (technical names and sometimes the translation). Only, if you heavily lean on lifecycle states (which is always the case with entity modelling), you want to see the same state everywhere; Especially when your knowledge workers make decision based on the states…Like in our project! This is an example from the “bug”:

update_014

I even create a test project out of it in that time (7 months ago!). Exactly this project I import into my current workspace (that’s a different blogpost); And guess what…

update_015

It works!! 😍 Also, in the filter and list:

update_016

GREAT…One happy customer again (once the upgrade is DONE)! 😅


Dynamic workflow enhancements

Again, enhancements in this area…Well, it’s a default enhancement in the last couple releases, so why not in this release!? What’s new…But first I add the ‘Dynamic Workflow’ BB to the ‘Case’ entity and do a publication into runtime where the enhancement are found when you start a new workflow from the ‘Case’ entity instance…

User and role selection picker; You can assign a task to a user/role and have that same search icon as we saw in the ‘Quick search for runtime panels’ feature:

update_017

Improved business audit; To give insight on the improved history, I add the ‘History’ BB on the related ‘DynamicWorkflows’ entity and writing the output to the history from the parent ‘Case’ entity. After starting a 2-steps-flow and managing the tasks, the history on the ‘Case’ instance looks like this:

update_018

Making default priority from high to medium; Creating a new flow lets you define tasks…The default priority is now set to medium:

update_019


TomEE 9 support

My installation menu is already up-to-date with version 23.4 including the usage of TomEE 9.

An extra quote from the documentation: TomEE 9 uses the "jakarta" namespace instead of the "javax" namespace
Read this information from Apache.

Maybe this change is the reason my upgrade totally failed!? This took me too much time to solve; That’s why I started with a clean image.


Core Content integration (in preview)

Yeah…This was just a matter of time! If you ever jumped into the space of the OpenText developer cloud, you also know there is a large number of APIs standing ready for your consumption. One of the APIs is called ‘Core Content’ (the foundation of the Core SaaS family) and AppWorks has an integration via the documentstore connector:

update_020

The information for these fields is delivered from a new artifact called ‘OCP Configuration Manager’:

update_021

I haven’t tried it out myself, but I see already all subtypes of ‘Core Content’ services are used in this integration; So, that’s probably saving content, synchronizing metadata (configured in /app/admin or on the BW building block; not 100% sure!), and seamlessly integrating into the ‘Business Workspace’ BB in a layout panel on your entity! Well, great job OpenText.
You can find more information in the documentation of the platform searching for terms like “core content”, “business workspace”, “document store connector”!

Don’t mix ‘Core Content’ with ‘Content Storage Services’ (CSS); The ‘Core SaaS App’ is more predefined with out-of-the-box solutions for direct consumption by your end-users where CSS starts from scratch (from what I have seen so far).

Just a table for extra explanation about the different store types so far from a document store connector perspective:

Store type Summary
AppWorks Platform Repository This is de default of the platform!
OpenText Content Server Read post Connecting with OTCS
OpenText Archive Center I saw this once passing by at a colleague, but moving to InfoArchive (where is the connector?) sounds more logic to me
CMIS Read post Connecting with CMIS
OpenText Core This is OT Core Share to share content with others (next-level dropbox)
OpenText Documentum Read post Connecting with Documentum
OpenText AppEnhancer A new name for the rebranded ApplicationXtender which is old and on the backlog…
OpenText Core Content Well, that’s this section of the post
Others If you built your own storage location

Something totally different after my great ReThink; I have a background in Documentum and also start to understand OTCS increasingly. This next part is just a thought of mine, so don’t pin me on it, but looking at the difference between ‘Core Content’ and ‘CSS’ tells me that ‘Core Content’ is supported by OTCS seeing the nice integration, extensions, business objects, and workspaces. CSS is missing this part and tells me this is supported by the always steady and robust Documentum platform! What I say…It’s based on nothing, but just a gut feeling. If anybody has a clue…I love to have a chat!


Preview panel enhancements

The preview panel is used in a layout BB for an entity. When the entity has a ‘File’ BB or ‘Content’ BB applied, you can preview the content. Two new things on this panel…Related (only ‘to_one’ relationship!) entity content can be configured and viewed. So, I create a second entity ‘Owner’ with just a simple ‘Name’ property and adding the ‘File’ BB. On the parent ‘Case’ entity, I create a new ‘ToOne’ relation to ‘Owner’ and in the preview panel of the ‘Case’ default layout, I can now do this:

update_022

In runtime, I can now create a new ‘Owner’ entity instance, upload a file to it, go to the ‘Case’, relate the ‘Owner’ instance from the dropdown (of the ‘Case’ creation-form), and preview the content:

update_023

Will the other type of relations (‘toMany’ and ‘hasChild’) preview something? Yes, only not the content, but it will show the ‘Default’ form or layout marked for preview! To move this into a new request…Maybe it’s also interesting to add an ‘Image’ component on my ‘Owner’ entity showing the content on the ‘Default’ form!? Well…Wouldn’t that be a better solution? now I’m ReThinking this all? #SUPPORT

The second enhancement is the preview of .eml and .msg documents; Great, but I need to trust OpenText on their blue eyes on this one! I tried to upload documents of this type as content to the ‘File’ BB, but it is not previewing them. The feature quotes this is possible from messages in a related content system like OTCS/Documentum. Try it out for yourself and comment me if you have the evidence.


Hardening of container-based deployments

Still on my list; A containerized deployment! It doesn’t have my highest priority as my projects still run with self-managed servers. I know…It can be the future, but I see it still as an over-engineered path for these types of low-code platforms. Great when you have your monolithic app sliced into microservices and moved into scalable containers, but I see everything is just put into containers because we can with lots of overhead on precious resources; Keep things clean and simple unless you are a hosting party delivering 100 systems per month for your customers.
I also see the move to cloud providers (the hosting parties!) which is a better future to invest in…Just my opinion! Comment me if you see this totally different or also agree with this; I’m always open for a chat on topics like this.
For the hardening (which I did not try); Concurrent sessions (sessions in parallel) are enabled be default with a value of 5 (5 for regular users, 5 for administrators). Change this limit in the YAML configuration files. The other hardening feature is the default removal of stack traces in the error messages when deployed in a container. I don’t know if this is a thing you want, but what I do “smell” here is that OT moves slightly into the role of deciding how your installation is best done! Make you own conclusion out of this? It’s their blue-eyes to trust! 🤔


Discontinued and deprecated features

There are NONE…Great! 😎


The AppWorks platform (AWP) playground 23.4 is open on further consumption through your solution. It’s a ‘DONE’ on this feature rich post with an overview of the new GA release for Q4 2023. Have a great weekend and I CU next week; In the new post on AppWorks Tips.

Don’t forget to subscribe to get updates on the activities happening on this site. Have you noticed the quiz where you find out if you are also “The AppWorks guy”?