/ Release  

Discover the exciting new features of AppWorks 23.1 in the GA release of 2023

Hi there AppWorks fans,

Welcome to a new installment of AppWorks tips.

AWP 23.1 is available for Q1 2023. Let’s grab a soda and have ourselves an update on the new features for this version!


Let get right into it…

The main installation menu is updated; Just because we can and because we’re in a new year.

In this post we’ll review the (AppWorks Platform 23.1 Release Notes). We’ll do a deeper dive on the newest functionalities delivered in this GA release. More information is also available in that release notes PDF.


🆕 Update on the available changes in 23.1 🆕

Here we go…

Email notifications

Great, we have it available! The ‘Notification’ building block on an Entity…Oh-boy…This release is already a party!! 😍 It’s like a present under the Christmas tree; Although Christmas is just passed by!

aw_23_1_001

Hit it man…Like a bro!

aw_23_1_002

After playing around a bit, I make these conclusions:

  • You need to add the ‘E-mail’ BB before the notification can even send an E-mail…dûh!
  • You need at minimal 1 ‘E-mail template’ BB to choose from
  • You can scope further down to only a specific role; I created a functional role named: fun_user and applied it to my test account!
  • You can further conditionalize the event like below

This can be a first implementation:

aw_23_1_003

So, when my project entity instance gets created, and the user is member of fun_user role, and the project name equals mail_me, I will receive a mail notification based on the selected template…nice! If you wondered how to mail on the platform; read this post.

By the way! What is this BB different from creating a ‘Rule’ BB like this:

aw_23_1_004

Or have I now ruined the party!?!? 🤔


Dynamic workflow enhancements

It starts to be a recurring item in the release notes; That’s because it’s also a large BB with enriched features pleasing all the business analysts in the world to create their own business flows in runtime. I’m not the enthusiast here, but I can imagine companies would be!? Although the first company implementing this did not pass my journey yet…I wonder how it will look like (after let’s say 5 years!).

Let’s not spoil the party again…What’s new here!?

First add the ‘Dynamic workflow’ BB on the entity. Publish it and from the default homepage you can now create new ‘Workflow templates’:

aw_23_1_005

Keep in mind to connect the internal correct roles to use user: Workflow Template Administrator | Creator | Developer

From a ‘Dynamic’ categorized workflow, we can now add ‘Static’ type of tasks! I searched, and I searched again, but there is no trace on any static flag while adding a new task (on a dynamic categorized workflow template!):

aw_23_1_006

“Stranger things” on this feature; Maybe a feature flag to be enabled? During a quick support call, it should indeed work as described…Share the knowledge in the comments if you made it work on your side.

See these post for some history on this ‘Dynamic Workflow’ BB:


Low-code EIS connector enhancements

Another topic which is recurring last couple of releases! This release extends the supported BBs for this type of external entity:

Building Block 22.4 23.1
Property
Relationship ✅ (NEW)
Action bar
Form
Layout
List
Title
Activity Flow
Assignee
Deadline
Dynamic workflow
Lifecycle ✅ (NEW)
Rule
Rule category
Security
Sharing
Tracking
Business workspace
Content
Discussion
Email (template)
File
History
Mobile app
Notification
Web Service

So, still no ‘Content’ or ‘File’ BBs (yet!?) for the EIS connector! The only one I’m questioning is the ‘Relationship’ BB in this table; I know we could always relate from a normal entity to an external EIS entity, but not the other way around. So, can we now add a real ‘Relation’ BB to the EIS entity? The answer will be given after I’ve contacted OpenText support as the new-way-EIS will not come alive at this moment of time on my VM! I tried the old-way too, but this has less supported BBs compared with the OpenAPI EIS…Interesting!

Read here how to work with this new enhanced EIS connector…Great stuff! Also, this OpenAPI specification is worth trying out for the new EIS way of working. Same for this URL. Or better…Why not using the “Typed” ReST API of the platform itself…Yes, the one accessible from the app/admin part of the platform? 🙃

UPDATE, UPDATE…Interesting notes:

  • During our monthly community session it was not 100% clear yet, but it should even be possible to make a relation from one EIS external entity to another EIS external entity! In that case the (NEW) indication in the above table is valid!
  • It’s not even required to restart the TomEE instance after creation/updates on the EIS connector…I don’t know how as it will update JAR files on the platform which normally require a TomEE restart!?

Share your own experiences in the comments…


Sharing of entity items with roles

For this feature we first need to have some things in place:

  1. The ‘Security’ BB; I use a functional role with name fun_user as accessor with full permission (I also attach my test account to this role!).
  2. The ‘Sharing’ BB; With one instance role with name ins_user as accessor with full permission.
  3. Don’t forget to update the ‘Security’ BB again for the sharing updates!
  4. An OTDS push from the solution roles into OTDS and a consolidation back to AppWorks! See here for more information about this magic trick.

After the steps above are done, you can create yourself an entity instance, hit the ‘Share’ button and share your entity like this:

aw_23_1_007

All users who have the corresponding role can access the item (if granted) and perform operations based on the assigned permissions belonging to the related instance role. YES…Read that one again! So, in case of my screenshot; When my test account has the role of ‘Analyst’ applied from the user manager artifact, the account will get the permissions applied to the instance role on sharing level…which looks like this:

aw_23_1_007

What the test account can even select the instance role from the permissions list, is configured on security level:

aw_23_1_008

I always thought low code was easy and simple, but sometimes I also need to ReThink over and over again to understand what is possible!? #overengineering…Or is it just me?


Enhanced ‘Deadline’ building block to support task escalations

After reading the feature twice it looks to me like not only ‘Duration’ type of properties are available for the deadline length; Also ‘Date/Time’ properties! That makes it indeed interesting to create something like this:

aw_23_1_009

This makes it possible to send escalations for tasks that are not claimed or abandoned; As quoted from the PDF release notes.

UPDATE…This ‘Deadline’ BB is also new for the LifecycleTask entity!

Looks to me like a customer (before this release) had a lot of troubles with inactive/deleted accounts where a lot of tasks were still on their names. I feel the pain…Would it not be easier to have some kind of out-of-office checkmark on a user account with a delegated person assigned? Or am I just thinking too simple here?


New set of JavaScript APIs for AppWorks Platform client operations

Read about the new API here.

Use this command in the developer console of your browser: window.parent.publicAPIProvider…to get an overview of the all (incl. new) functions:

aw_23_1_010

In readable text (quoted from the PDF):

  • Subscribe to the changes of an Entity instance property
  • Subscribe to the changes of an Entity instance relationship
  • Link a To-One/To-Many peer relationship to an Entity instance

Hereby some examples to have your creativity triggered (First follow the mentioned post to get a better understanding if you don’t have a clue!?):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
//I have a person entity with a 'to_one_user' relation; The relatedItemId equals an identity package 'User' entity instance
window.parent.publicAPIProvider.linkRelationToItem({"parentItemId":$.urlParam('itemid'),"relationName":"to_one_user","relatedItemId":"F8B156E1037111E6E9CB0FBF3334FBBF.5"});
window.parent.publicAPIProvider.unlinkRelationToItem({"parentItemId":$.urlParam('itemid'),"relationName":"to_one_user","relatedItemId":"F8B156E1037111E6E9CB0FBF3334FBBF.5"});

//Event (un)subscriptions
window.parent.publicAPIProvider.subscribeToRelationshipChanges({"target": window, "itemId": $.urlParam('itemid'), "relationName": "to_one_user"});
window.parent.publicAPIProvider.unsubscribeToRelatioshipChange({"itemId": $.urlParam('itemid'), "relationName": "to_one_user"}); //There is indeed a missing 's' in the function name at the end!? #SUPPORT
//Catch the event/data with this function:
$(window).on("relation-change", function(e) {
console.log('data', e.originalEvent.detail);
});

window.parent.publicAPIProvider.subscribeToPropertyChanges({"target": window, "itemId": $.urlParam('itemid'), "propertyName": "prs_name"});
window.parent.publicAPIProvider.unsubscribeToPropertyChanges({"itemId": $.urlParam('itemid'), "propertyName": "prs_name"});
//Catch the event/data with this function:
$(window).on("property-change", function(e) {
console.log('data', e.originalEvent.detail);
});

//I also saw these passing by (is it a look into the future as it's not documented?):
window.parent.publicAPIProvider.subscribeToClientActions(...);
window.parent.publicAPIProvider.unsubscribeToClientActions(...);
//Looks like we can catch this event/data with this function:
$(window).on("action-performed", function(e) {
console.log('data', e.originalEvent.detail);
});

//Finally, this one passed my journey...Also the future?
window.parent.publicAPIProvider.notifyExternalSubscriptions(...);

Smells to me like we’re moving to a more event-driven approach of development (EDD) here! 🤗

EXTRA NOTE: Have also a look in the advanced developer guide; section “Using the application JavaScript APIs”


Support for predefined filters on a list

What you design as low-code guru on a ‘List’ BB like this…

aw_23_1_011

…will be available to your beloved end-users like this:

aw_23_1_012

Quote from the release notes PDF: This feature removes the necessity to create multiple lists with different filters!


Faster navigation between list records

I guess they mean this option on the ‘Breadcrumbs’ panel for a specific view layout on your entity!

aw_23_1_013

After publication, you see indeed a small extra paging option in the far-right of the breadcrumb bar:

aw_23_1_014

The next request would off-course be the possibility to jump back to the first one; Or the one where you initially came from!? #SUPPORT


Support to add custom plugins in CKEditor

“CKEditor”!? Where did we see this one before? Well, here (AWP 20.2) and here (AWP 22.3); It all has to do with the rich-text editor you can create on a ‘Long Text’ type of property on your entity.

Have a view on this file on the server more /opt/opentext/AppWorksPlatform/defaultInst/webroot/shared/thirdparty/ckeditor/CHANGES.md, and conclude we are at version 4.18.0 of this third-party/external library.

This library is extendable, and this is now also supported by OT; Looks like they had a customer where they implemented something nice based on this information and validated that “the default” is still working! 😉. Will you, or I ever start on this…Well, I hope not! I leave it with you…


Form building block enhancements

Support for static rich text component:

aw_23_1_015

Open linked items in a form-grid directly (even in a new tab via the <Ctrl>+<click> way!)

aw_23_1_016

It will open the layout configured on the grid…Like this:

aw_23_1_017

Notes:

  • I thought this ‘Open’ option was already there for a grid, but now I start to doubt this mindset!?
  • Interesting quote on the <Ctrl> part: In this way, you can work on multiple items easily without switching. Didn’t we just introduce a nice breadcrumb feature for this!? 🙈

Simplified dynamic enumeration

Finally, it looks like we (as low coders) are heard! With dynamic Enums I always see 2 pain-points.

  1. What is the point of the second BPM (the one for labels)!? I never used it in my career, but there is probably one analyst in the world demanded this would be possible!
  2. After you generate the BPM, you always forget to select the input property when you have another dependent property (also known as conditional values)

Let’s create a dynamic Enum property prj_type with an end result like this; we already applied that dependent property context!

aw_23_1_018

Well, that applies 2 flies in one hit! Create that BPM and have a check if the property is directly in place too:

aw_23_1_019

NICEEEEE JOB (incl. the output message!)…😎


Download multiple files as a zip file

With the Documentum connector we could “off-course” do this already, but now the OT Content Server flagship can do the same trick in runtime. Well, I believe OT on their blue-eyes it’s possible; I’m not an end-user!


License report enhancement

When you open the ‘License Manager’ artifact from the ‘System’ space, you can generate a ‘Usage Report’:

aw_23_1_020

On the next over panel, you can download the report. This is the anonymized XML part for my VM where I have my test account disabled from the ‘User Manager’ artifact (in my own organization!):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<report>
<reportheader>
<month>January 2023</month>
<dateofgeneration>31/01/2023 - 00:00:00</dateofgeneration>
</reportheader>
<instances>
<instanceroot>
<instanceheader>
<customer>...</customer>
<instance>...</instance>
</instanceheader>
<organizations>
<organization id="o=system,cn=cordys,cn=defaultInst,o=23_1.com" name="System">
<nrofuniqueusers>4</nrofuniqueusers>
</organization>
<organization id="o=appworks_tips,cn=cordys,cn=defaultInst,o=23_1.com" name="AppWorks Tips">
<nrofuniqueusers>7</nrofuniqueusers>
</organization>
</organizations>
<users>
<user id="user00000" status="active"/>
<!--This is the new feature...I guess!?-->
<user id="user00001" status="disabled"/>
...
</users>
<components>
...
</components>
<nrofuniqueusers>8</nrofuniqueusers>
<contributors>
...
</contributors>
</instanceroot>
</instances>
<checksum>...</checksum>
</report>

Typed REST API for building blocks

The “Typed” ReST API is accessible from the /app/admin part of the platform.

aw_23_1_021

I see the ‘File’ and ‘Content’ BBs are supported now, so let’s explore this on a clean todo entity where only applied these two BBs (with the default BBs from the wizard!):

aw_23_1_022

I leave the ‘MarkupFiles’ items out of it; I’m not 100% sure, but I think these have to do with redactions and annotations on documents viewed via ‘Brava!’ or ‘OT Intelligent Viewing’…Comment me!?

Owh…Just a thought…Is it ‘Rest’, ‘ReST’, or ‘REST’? 😵


Integration with ‘Core for Signature’ – Preview release

I hope they mean THE Core Signature; available from the cloud API development portal. Already interesting, but not for now to dive into to! I already have a backlog item to connect AppWorks with the content services of this popular and highly-pushed-by-OT platform, but why not use this service instead!? YOLO!

My infinite backlog on my KanbanFlow board:

aw_23_1_023

So, other things have a higher priority!

For my curiosity, I dive into this release notes PDF quote: Administrators can configure Core for signature in AppWorks Platform; Only, where on earth would this need to happen? Well, let’s first enable this feature in the wcp.properties of the platform:

1
2
3
4
vi /opt/opentext/AppWorksPlatform/defaultInst/config/wcp.properties

#Add this line at the end
feature.toggle.esignature.support.enabled=true

Save it, and restart TomEE via systemctl restart tomee. After restart, I first have a look into the ‘System’ space of the platform with the ‘sysadmin’ account…Is something magically added to our list of artifacts? Nope!; Is it a new Application Connector as service container? Nope! Do we first need to deploy something from the ‘Application Deployer’? AHA!

aw_23_1_024

Well, don’t wait…”Express deploy” the two! They both are “connectors”, so let’s restart TomEE again and see again? Well, no Application Connector, but I did see this one flashing by:

aw_23_1_025

I have this artifact also available in my own organization!

For the runtime part? Well, let’s first enable flag on the ‘File’ BB for the entity:

aw_23_1_026

After publication? I can’t find anything…Not in runtime (/app/start) itself; also, not in app/admin. After re-read for the feature it tells me this: This is supported for all supported content systems except Platform repository…There we go again! I don’t have any OTCS/DCTM connected currently to my brand-new VM, so I really postpone this to my backlog. For now, we already learned 20% of the feature to trigger our curiosity which is already fine for this post.


AppWorks Platform enabled for IPv6 network – Preview release

Interesting! as I also disable IPv6 during all my VM installations without thinking about it.

aw_23_1_027

The above is a screenshot from that post! 🤣

Let’s postpone this part till next time (when it’s GA) and see if the plane still lands properly when we’re done with the installation…IPv6 is eventually the future to connect everything to everything.


Deprecated features

Not much in this section…It’s only Java 11 leaving the room this time; which is reasonable as we now have the LTS for Java 17!


That’s it for the new release…Playground 23.1 is open and ready to be used. A ‘DONE’ on this update post with a rich overview of the new GA features for this Q1 2023 release. Happy low coding; I see you in the next post!

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”?