Skip navigation
All Places > Alfresco Process Services & Activiti (BPM) > Blog > 2018 > September
2018

Hello community,

 

Today shall be the day, on which I am writing my first blog post here. Who am I actually? Well, I am Dennis Koch and am working as Expert Support Engineer for Alfresco. In support we often get questions or requests from customers and partners, where sometimes the answer should go out to a wider audience. So my idea is to share those questions and answers with you from time to time from now on, whereas I will directly start with this first post here.

 

Recently I had a customer asking the following:

 

While setting a String process variable in Alfresco Process Services (same counts for the Activiti engine), how long can the String value be?

 

So I started brainstorming:

 

I am not the designer/creator of Activiti, neither did I ever help in developing or architecting it. Still, there should be an easy way to find out the answer to this question. And while I was thinking about it, it came to my mind, that the limiting factor here can only be the database, where we store process variables and their values and a lot of other process related data.

 

Knowing, that process variables for a runtime process are stored in the database table ACT_RU_VARIABLE, I did some "reverse engineering" to find out which columns are created for this table by default and how they are defined and what they are used for. The most interesting columns to answer my customer´s question were "TYPE_" and "TEXT_".

 

When I created a String process variable with the value "Hello World", a row was created in the ACT_RU_VARIABLE table, whereas "TYPE_" was set to "string" and "TEXT_" was set to my actual String value, i.e. "Hello World". So I inspected how the "TEXT_" column is actually defined and learned, that it is limitted to 4000 characters. All I had to do next was to create some randome text with 4000 characters (there are online tools to do that, e.g. || Dummy Text Generator | Lorem ipsum for webdesigners || ) and see whether this text actually makes it into the table when I set the text as value for another String process variable. Indeed, this worked and I knew I could answer my customer´s question already.

 

But before I would answer, I wanted to find out how Alfresco Process Services actually handles the case, where someone tries to create a String process variable with more than 4000 characters. Would the system have issues, would the value be truncated or would I be able to break my instance at all? To find out, all I had to do was to extend my generated 4000 characters text by 2 more charcaters and set the new text as value for another String process variable.

 

Good news! I did not see any errors in my logs, nor did I seem to have broken my instance. Going back to the "ACT_RU_VARIABLE" table I saw, that in fact a new row was created for my new process variable, whereas this time the "TYPE_" value was set to "longString" and my "TEXT_" value was NULL.

 

Did we lose the 4002 characters text now without throwing any error?

 

No, with Alfresco systems there is no data loss of course!

 

Interestingly, the "ACT_RU_VARIABLE" table also has a column "BYTE_ARRAY_ID" and whereas this ID value was NULL for my String process variables with 4000 or less characters, it now had a value for my variable exceeding the 4000 characters limitation. The ID stored there is indeed referencing a row in the table "ACT_GE_BYTEARRAY", where my text is stored as byte array in the column "BYTES_". "BYTES_" is defined as VARBINARY(2147483647), which means we can store text with a size of 2147483647bytes. That should be long enough to store this blog post and the next one to come :-)

 

Be prepared to hear back from me soon...

 

- Dennis

Last week we spend a lot of time configuring our CI/CD pipelines and that work is going to continue this week. We are now building our libraries using Jenkins X, publishing to our public Alfresco Nexus and configuring Docker Hub for our Docker Images. We are still working on publishing our HELM charts from our CI/CD pipelines via Github Pages.

I am currently at SpringOnePlatform.io, so if you are around and interested in these topics, get in touch! I am presenting the journey of Activiti Cloud to Kubernetes using Spring Cloud on PKS.

@igdianov- planning to add GraphQL WebSockets and Notification services for Kubernetes. Researched Kubernetes Nginx websocket support and configurations to provide session affinity. Will be working on PoC next week.

@ffazzinicreated connector definitions endpoint in RB, created acc test for connector definitions, implemented all requested changes in all connector definitions PRs

@constantin-ciobotaruworked for making model types dynamic using beans  and remove form model type and references to form service

@miguelruizdevcompleted the implementation of keycloak to the ttc-dashboard-ui angular project.

@ryandawsonukWorked with @erdemedeiros to apply POM refactoringacross repositories. Implemented a PoC to prove we can trigger a jenkins build from creation of a tag. Started importing the activiti projects into a designated build cluster to build using the jx-activiti-cloud user.

@erdemedeirosComplete the POM refactoring on the missing repositories. Worked with @ryandawsonuk to apply them across repositories.

@salaboypreparing for S1P and working in improving the gateway, also PoC with KNative for Cloud Connectors

Get in touch if you want to contribute: https://gitter.im/Activiti/Activiti7

We are looking forward to mentor people on the technologies that we are using to submit their first Pull Request ;)

I’m really excited to be part of the SpringOne Platform | September 24–27, 2018 | Washington, D.C.conference this year. The agenda is just amazing covering topics from: KNative, Project Riff, Istio, Spring Cloud Kubernetes, etc.

I am delighted to be presenting with no less than the Spring Cloud CoLeader, Spencer Gibb (@spencerbgibb). We are going to be presenting about Spring Cloud on PKSand how this journey looks for Java Developers (that is happening Thursday 27th Sept 10:30 am - 11:40 am).

We are working on a demo to show the Spring Cloud Kubernetes project in action and I look forward to hear what the Spring community feedback. You can find the preliminary work in GitHub: https://github.com/Salaboy?tab=repositories&q=s1p

 

After the conference I will be uploading all the materials and probably a video on how to reproduce the demo that we will be presenting. Also I will try to update this blog post with the live feed.

I will be also doing a lighting talk: From Spring Boot to Kubernetes on Monday (24th Sept).

You can use the following code “Attendee_Speaker_100” to save 100 USD on the registration fees.

If you are attending, and interested in the stuff that we are working on, get in touch via twitter or drop me a message here and we can do some hacking together.

See you all there! 

Last week we made a huge step forward into our CI/CD approach. We have validated that we can create environments that can connect to our services such as Nexus and DockerHub and we are ready to start importing all the framework projects into the new CI/CD environment. We are still looking into how to publish our charts coming from CI/CD to be able to publish new versions as soon as the underlying libraries change.

There has also been some amazing work on the TTC workshop which now has acceptance tests for validating the basic scenarios. I am expecting to add also some experiments with Telepresence and the new Devpods in JX with the embedded Theia IDE.

 

@danielpancuAdded implementation for getting all users and all roles implementation for Activiti core

@ffazzinihttps://github.com/Activiti/Activiti/issues/1982in java api and RB Cloud scenario

@constantin-ciobotaruworked for activiti modeling integration with keycloak

@miguelruizdevworked on fixing issues in TTC acceptance tests and collaborated on the PoCs for CI/CD

@ryandawsonukworked on and documented PoCs to publish to maven central, alfresco nexus and dockerhub from a Jenkins-X cluster

@erdemedeirosrefactored POM files on Activiti-cloud projects to conform to CI/CD pipelines.

@salaboyPoC on telepresence, improving platform components such as the Gateway, working on the framework side of CI / CD.

Get in touch if you want to contribute: https://gitter.im/Activiti/Activiti7

We are looking forward to mentor people on the technologies that we are using to submit their first Pull Request ;)

Last week we made some progress on Cloud Connectors Definitions initial implementation (we are also working in RFC document for this topic) and also we moved forward the TTC acceptance tests projects. There were further refinements on the Spring Cloud Kubernetes Discovery implementation that are being tested to be used with the Spring Cloud Gateway project to filter other, non related Kubernetes Services that we are not interested in registering as Routes.

 

@cristina-sirbuWorking on the custom Spring Boot Starter for Activiti Could Events Adapter

@ffazzinicloud connector definition and runtime https://github.com/Activiti/Activiti/issues/1972https://github.com/Activiti/Activiti/issues/1982

@lucianopreahelped @constantin-ciobotaruwith the helm chart for activiti-cloud-modeling and logged a bug about task update #1991

@constantin-ciobotaruworked to deploy modeling application in GCP using jenkins-x

@danielpancuAdded keycloak get users and roles names functionality on activiti identity-keycloak module

@miguelruizdevworked on the creation of new scenarios for the TTC acceptance tests

@ryandawsonuk- holidays -

@erdemedeiros- paternity leave -

@salaboyworking on Gateway filters and Spring Cloud Kubernetes enhancements for reloading configs.

Get in touch if you want to contribute: https://gitter.im/Activiti/Activiti7

We are looking forward to mentor people on the technologies that we are using to submit their first Pull Request ;)

Last week we worked hard on updating the Trending Topics Campaign workshop to work with Keycloak and aligned dependencies for Beta1 and latest snapshots. This week we are pushing our CI/CD approach to move away from fixed versions for all the services and enable fast development cycles for our Cloud Native Building Blocks. There is some more work around SSO and IDM around our workshop and there are in progress discussions about the architecture of a set of UI/Operation controllers to report on inflight operations inside the infrastructure. 

@ffazzinicloud connector definition and runtime https://github.com/Activiti/Activiti/issues/1972 https://github.com/Activiti/Activiti/issues/1982  

@lucianoprea worked on testing the Activiti Cloud HELM Charts 

@balsaroriCreated PRwhich removes all activiti5 compatibility code from the activiti 7 code base.

@igdianovworking to solve https://github.com/jenkins-x/jx/issues/1563. Found solution via customizing Jenkins-X pod templates via myvalues.yaml configuration

@cristina-sirbuworking on the spring boot starter for Events Adapter

@constantin-ciobotaruworked on modeling service for moving endpoint from aps to community

@almerico Worked on helm deployment to install models to  APS injenkins X pipelines.

@miguelruizdevkept working in the keycloak implementation within the ttc-dashboard angular project (front end of the TTC Workshop) following the keycloak.js api

@ryandawsonuk initial skipe on CI/CD for community projects (libs)

@erdemedeirosset up a cluster with TTC examples; started writing acceptance tests to cover TTC examples.

@salaboyworked on Spring Cloud Kubernetes Discovery filters for Service and worked with @constantin-ciobotaruto refine the backend services for the Modeling Application.

Get in touch if you want to contribute: https://gitter.im/Activiti/Activiti7

We are looking forward to mentor people on the technologies that we are using to submit their first Pull Request ;)