What happens when I deploy a workflow with Camunda? - process

I use Camunda 4.8 Modeler. When I deploy a workflow with the Camunda Modeler by setting the URL, the process (modelization) is translated/converted to a data in database or the BPMN file is stored somewhere in the server or there is another way to save the workflow and read it after that with a web service ?

The modeler connects to the REST API (https://docs.camunda.org/manual/7.17/reference/rest/deployment/) to send the process model (and DMN or forms) to the server, which stores it as a new version in the database. Newly started process instances will now be started on this model version. Already running instance will continue running on the version they are started on, unless you migrate them to a different version.
https://docs.camunda.org/manual/7.17/introduction/architecture/
BPMN 2.0 Core Engine: This is the core of the process engine. It
features a lightweight execution engine for graph structures (PVM -
Process Virtual Machine), a BPMN 2.0 parser which transforms BPMN 2.0
XML files into Java Objects and a set of BPMN Behavior implementations
(providing the implementation for BPMN 2.0 constructs such as Gateways
or Service Tasks).

Related

KSQLDB asp.net core

I don't see any article/blog written around KSQL DB for asp.net core and there are less/no documentation available. It would be appreciated if you could help me with the code/article/blog on kSQLDB with asp.net core
You can use ksqlDB.RestApi.Client package in .NET / C#.
Install-Package ksqlDB.RestApi.Client
There is an AspNet Blazor sample in tomasfabian\ksqlDB.RestApi.Client-DotNet GitHub repository. It demonstrates how to use ksqldb streams, tables and monitor push notifications from SQL Server with a connector. You can react to these topics (streams/tables) with a Kafka consumer or ksqldb client.
Clone the repository:
https://github.com/tomasfabian/ksqlDB.RestApi.Client-DotNet.git;
Open InsideOut.sln in Visual Studio 2019 and set docker-compose as startup project.
This console app contains LINQ to ksqldb query examples. There are also some LinqPad samples available.
You should also check the Readme.
I think that this could be a good starting point for you.
ksqlDB is written in Java, thus cannot be "hosted" by ASP.NET infrastructure. Similarly, to my knowledge, there is no Kafka Streams equivalent library for .NET.
ksqlDB offers a REST API if you needed to interact with it from other languages

Run Mule as a .NET Microservice

We own a product written in .NET and that uses MS SQL Server. We need to write a new Integration layer that allows integration with a number of third party applications such as Jira, ServiceNow etc. Our endeavor is to use a Microservice based architecture for this integration later and not use an iPaaS or Centralized ESB. Questions are:
Can I embed Mule into a .NET Microservice?
If no, can I embed Mule into a Java Spring Boot application?
In either of the cases above, am I forced to use any other platform/ software from Mulesoft (such as the Mulesoft's Management Plane)?
Does Microservce based embedded Mule provide capabilities for performance/ health monitoring etc.?
Does Mule support writing any custom code in .NET?
Please find the answers below:
Can I embed Mule into a .NET Microservice?
No. Mule 4 is a Java application and currently is not meant to be embedded.
If no, can I embed Mule into a Java Spring Boot application?
No. Mule 4 is not distributed as an embedded Java library.
In either of the cases above, am I forced to use any other platform/ software from Mulesoft (such as the Mulesoft's Management Plane)?
No. You can run Mule as a standalone service or application without using MuleSoft's Control Plane. Be aware that you will lose all management features from the platform.
Does Microservce based embedded Mule provide capabilities for performance/ health monitoring etc.?
Please define to what you refer as "Microservice based embedded Mule". If you mean in the scenarios mentioned in questions 1) or 2) then the answer is no, because those are not valid deployment options for Mule 4.
Does Mule support writing any custom code in .NET?
Yes. There is a .Net Connector to execute .Net code from a Mule application. Look for the last release in the release notes.

How to package and deploy cumulocity server-side agents?

We are creating a server-side agent which periodically fetches data from nodes and maps this data to cumulocity measurements, events.
What is an elegant approach for hosting and/or packaging such a server-side agent?
We are hosting our own instance of the Cumulocity platform.
It's preferable to keep this server-side agent as 'close' to the core platform as possible, e.g. share some core agent framework dependencies.
We'd like to limit the amount of setting up additional environments or containers (e.g. Tomcat).
Cumulocity uses Karaf, would it make any sense to deploy the server-side agent into Karaf as a bundle?
Is there any recommended approach for hosting server-side agents? Does the cumulocity platform offer an alternative to deploying the agent to some "own environment"?
The Cumulocity examples repository contains the "tracker-agent" server-side agent example, which is an embedded tomcat Java application. There is little information about the intended deployment location.
I don't recommend deploying agents/microservices directly into the core Karaf server, since that endangers the resources available to the core APIs and is not supported. (I.e., will likely be overwritten with the next upgrade...)
Typically, people just provision an additional VM or docker next to Cumulocity to place their agents/microservices in. On top of that, we, for example, often use Spring Boot, so the effort is pretty low (java -jar ...).
We do have a hosting system for agents/microservices and will make that generally available also for others to use in Q1/2018. Follow the announcement channel at https://support.cumulocity.com to stay posted...

Do I need to restart Camunda process engine when I design new process in BPMN Tools

My Camunda process engine has been running, at this time, I'd like to design a new process.
Do I need to restart Camunda process engine when I have finished new process in BPMN Tools?
Well, that depends how you use your engine. If it is a shared engine, just deploy the new processes and you will see that the engine will hold the old and new versions.
If it is an embedded version, you could try to deploy resources via the REST api, but probably it is easiest to just restart and let the engine scan for new models.

Servicebus for Windows Server vs NServicebus vs Mule ESB

I have been looking for a comparison between newly released servicebus for windows server, NServicebus and Mule ESB. Requirement is to develop .NET based real-time data integration solution using publisher/subscriber communication pattern.
Idea is to transfer protobuf serialised data messsages over the servicebus.But, it would be great if any of these support file transfers too as we have varied volumes and various kinds of data sources.
I am not sure which one would be a better option to go with.
Really, Azure Service Bus isn't a direct competitor to NServiceBus and Mule ESB. It is closer to a message broker (like ActiveMQ or RabbitMQ) than to an integration platform. It does have a couple of features beyond simple messaging such as web service proxy and some nice mobile push notification support.
Mule ESB is an integration platform, which means you create integration applications by using Mule configuration language and extending Mule programming components using the java platform. You deploy your integration application to a standalone Mule server or to CloudHub (Mulesoft's cloud environment). They also offer a pretty big library of connectors, which simplify integration with various other technologies and SaaS.
I have little experience with NServiceBus, but the documentation shows some of the same features as Mule ESB.
Since you can download both NServiceBus and MuleESB for free to try them, I'd suggest giving them both a whirl to see how they apply to your particular integration problem.
.NET service bus is designed to communicate with Azure and enable devices to do RCP-style calls. It does support pub/sub but the maximum message size is only 64 KB.
NServiceBus is probably the most capable choice in terms of interop. It supports one-way, full-duplex and pub/sub messaging. The maximum message size is 4 MB when using MSMQ for transport, but its data bus can be used to transfer large files. It also has a unique concept of sagas, which are long running processes with a shared state. I have not used the latest tools for it, but traditionally the tooling and integration options were not up to par compared to Java based solutions. Also, the licensing model is complex, and seems to be a subject to change with every release.
There is a Mass Transit free .NET service bus which has most of the NServiceBus features, but is a bit more difficult to use.
[edit] Mule ESB has a free community edition and a commercial version. It is a very mature Java based service bus. It has a lot of tooling and integration options with various products. But I do not think it has sagas. But it does have file transport support.