As a open platform, we strive to be open about progress and contributions we make to the government and overall open source development communities around the world.
We continually update our progress to share new features, exciting news, and contributions that we development for digital public services.
Camunda BPM's REST API does not have any authentication by default. You can enable Basic Auth with a built in plugin, but there is no JWT token support. JWT is commonly used throughout microservices, and therefore we wanted to ensure that the community can use JWT tokens with Camunda's API. We have released the Camunda JWT Authentication Provider, which will allow instant injection of JWT authentication into the API and allow easy customization of the exact JWT Validation as per your in-house JWT design.Github Repo
We are excited to release the first iteration of the Camunda Deployment Maven plugin! This plugin allows anyone using Maven to easily deploy to the Camunda Rest API; all files (BPMN, DMN, CMMN, JS, etc), that are part of their deployment resources; all with a simple maven command. This drastically decreases complexities in third-party systems deploying to Camunda through the rest api (such as Jenkins). Check it out, we are sure it will change your deployment strategy for the better!!!Check out the Github Repo to get started
For a while there has been Unit Testing coverage using a community extension of Camunda BPM. But this extension required using a customized engine, and we found it typically a barrier when trying to get usage reports. There was not a lot of easy to integrate customization, and if you wanted extra data it required a high level of specialized knowledge. So DigitalState developed a Groovy based Coverage generator that can be integrated into any Unit test system. At any point you can take "Coverage Snapshots" which will then export to .html files with the full coverage data pulled from the Camunda DB during execution. These html files can be added into large unit test reports or used as standalone! We are very excited about the usage of this, and how it will enhance business analysis with unit testing visuals that can be used throughout the development, deployment, and continual improvement of business processes in government!Github Repo
Having testable BPMN's is important: but it is typically a steep learning curve for business analysts to learn how to write unit tests for BPMN! No longer! We have now released our Unit Testing Helpers for Camunda BPM Unit Testing. These helpers provide a Groovy syntax to easily setup and execute BPMN unit tests without the typical boilerplate knowledge and extra lines of code. Things are clear and easy to use! And there is no too much magic going on. Tests are designed to be used with Spock Framework, so they are clear and easy to read by devs and business staffCheck out the Github Repo to get started
Camunda defaults their logging to the Java logging format. This is not great for importing logs into third-party logging processors such as Elastic Search and Graylog. DigitalState has created the Camunda JSON Logging pattern, allowing JSON Logs to be easily enabled on Camunda Shared Engine deployments using Logback. This community contribution provides a easy to use Docker image that extends from the official Camunda docker images, and creates new layers on the docker image to configure all required dependencies and files for JSON logging. It even supports Pretty-Print! Get started in a matter of seconds!Github Repo Camunda Forum Post
We are very excited to introduce oAuth support into the Authentication microservice.
This oAuth support is database driven giving tenant administrators the power to enable
and disable oAuth integrations during regular operations without downtime.
Each tenant can operate multiple oauth providers and each provider can have multiple instances.
oAuth is seamlessly integrated into the JWT token generation, and provides multiple opportunities
for customization of the registration and login processes.
In a subsequent release we will also be looking to introduce BPMN integration into
registration process, allowing the power of BPMN process definition into how new Identities are registered.
Tenants also introduces the power of a single login for multiple Tenants! Users can now login through a single oAuth provider (social media or any other provider), and access their various identities that are within the various tenants. This allows multi-government login under a single login while still maintaining full data privacy and control by each government. (Think multiple cities (tenants) all part of the same "providers" deployment). Data is always isolated by tenant and is never exposed. Data remains private and secure, maintaining compliance with private laws!
Tenants are a constant request for large governments and with private sector customers
looking to build a platform for multi-governments to use.
The Tenants system introduces the core concepts to tenants across all microservices,
adds a top-level security layer for tenants, and we also introduced the Tenants Microserice,
which provides a complete Tenants management solution.
Tenants are part of the core community edition, and the Tenants microservice for easy
tenant management across all microservices is part of the enterprise version.
Tenants system also provides a powerful "Universe" concept allowing Tenants to be owners of other tenants. This concept allows The creation of layered permissions management where a Government or "cloud-like-provider" can be a tenant of a larger system, but manage multiple tenants within the provider's tenant.
Adding robust security and permissions backed by DigitalState's "Core" microservices module, and providing a secure front to the Formio Validation Server. Adding also the ability to generate Tenants that align with the DigitalState Tenants System. Previously, the open source version of Formio was managed as a standalone docker based microservice that used the out of the box Formio Web UI and Node server. Additional complexeties came up when a more robust mapping between the DigitalState architecture and client requirements, and the Open Source capabilities of Formio. We decided it was best to front the Node server with a API-Platform.com based microservice (to which the rest of DigitalState's microservices are based on), and provide all of the amazing features that the other microservices already provide!Forms Microservice
Timers are complex in BPMN: You have Due Dates, Recurring Dates, Cron Cycles, and Durations. When we build and execute a BPMN for a government business process, we want to ensure that timers are executing correctly. In previous work, this always required building a developing executable business flows that were new fully unit tested. This was heavy and cumbersome for most, so DigitalState developed a Spock Framework Unit Testing pattern for ensuring that Timers in the BPMN models would properly execute without the need to test the entire model!Check it out!
Vertx.io provides a amazing ability to create Polyglot applications and use a variety of
When we connect Vertx into a Camunda SpringBoot application wrapper,
we end up with a extremely powerful pattern to build and extend Rest APIs and new
functions that the Camunda BPM engine can take advanage of.
We can now build and deploy new Camunda APIs in a matter of minutes, scale
these across a cluster using Vert.io and leverage the power of SpringBoot!
We could not be more excited!
As a followup, we also created a Camunda Plugin that deploys Vertx directly inside of a existing Camunda application (such as a Tomcat instance). This creates a extremely powerful framework for building new features outside of the Camunda engine, but still leverage the camunda Java API directly inside of a Vertx application.
A valuable release for Data Security! Data encryption is a constant request in the Camunda community. People want to store sensitive data during a BPMN process execution, but they do not have the easy to use functions to encrypt and decrypt data. DigitalState, having the same issues, has solved this issue with easy to use and integrate, scripts that will leverage code Java encryption APIs to provide RSA Public-private Key encryption. Check it out, it is a complete game changer for data security in business processes on the Camunda BPM platform!Camunda Process Variable RSA Encryption Github Repo
Creating users in Camunda BPM usually follows 3 possible paths: manual user creation, LDAP users, or users created by a Java process application. These scenarios are controversial when using camunda as a microservice. So we created a plugin that lets you define a base Administrative user when the engine first starts up. This lets you define the user in the Camunda configs, and then use your regular third-party REST API connections to Camunda to generate other users as you see fit!
The Reporting microservice has been updated with the latest Kiabana and Camunda Json History provider enhancements! This gives our users, amazing reporting capabilities, and the ability to have realtime insights into every aspect of BPM workflow and other microservices.
With the new Elastic Search and Kiabana reporting for Camunda, you can leverage Machine Learning and automated reporting!
Camunda provides a default History provider (where all history logs are kept), which is a database driver provider. The problem is when you want to run big-data-like queries using tools like ElasticSearch and Kiabana, you run into issues: The History is not in a JSON format. We created a JSON history provider that exports all data in realtime from Camunda into a JSON file format, which can then be consumed by File Beats, processed by Logstash, and imported into Elastic Search for reporting with Kiabana.
We need ways to storage variables in multi-instance storage: also known as: when we are executing business processes in parallel that are saving data for the "same thing", then we need a storage location that can accept multiple writes in parallel and reconcile these afterwards: Redis Lists to the rescue!
Unit Testing and just testing your executable business processes, in general,
sucks.... So lets make it better... a lot better; Introducing Camunda Unit
Testing using Spock Framework. Spock Framework gives us the best of two worlds:
Code drive unit testing, and BDD Unit testing with business friendly
language and reports!
We get all of the Java unit testing, but we get to write in friendly Groovy,
and we can quickly teach a even semi-technical business analyst to build and
manage unit tests within a few days.
Life is getting easier, and Unit Testing should be something that use as a
default build product for all BPMN, DMN, and CMMN: But in order to do this,
we need to ensure it is sooooooo easy to build the typical tests, and managers
and developers do not even think twice.
Spock Framework + Camunda + DigitalState Camunda Unit Testing Patterns ==
something very special for all the Government departments!!
Easily send Twilio SMS messages based on BPMN processes. All Script based, and easily modifieable for whatever your use case!
At times you want to use a BPMN process as a reusable function. But when using this process as a function, you want to start accessing that function as a Rest API and not just within another BPMN. With DigitalState's Services Microservice, that is used for Government Services, we also implement a Function as a Service beta. This lets someone build a Function that returns specific Rest API responses controlled by the Services Microservice. Some really amazing use cases! When Zeebe.io arrives from Camunda, this can go to the next level!