Connectors Usage

Hi Team,
I build my own Custom Connector using Connector Template (Web Modeler) & Connector Function (Java).
So when I want to use my connector in the organization always in the project they need to use the Connector Function dependency or Is there any way to use just using the Web Modeler configuration will trigger this dependency somewhere in the cloud.
Can I know the details on it.

As of now, I just publish my connector template in my organization and I ask team to use the dependency which I build using connector Function.

Hi @vinothkumar, thanks for reaching out. If I understand your requirement correctly you would like to provide a custom connector to your organizations users running on SaaS?

If so you can make use of the Hybrid Mode and run a custom Connector runtime that connects to your SaaS cluster. This way users can use your Connector (for example by using an element template).

Does that help you to move forward?

Best

Simon

Hi @sbuettner ,
Thanks for the reply.

Almost.
I developed the connector template and published in to the organization. So people are using that right now.
That connector business logic is done in the Connector Function which developed in the Java. Now how people will use this business logic into their project. Do I need to share the code to all the project team. or how they can use my Connector Function Java code ?

You would have to run a Connector runtime that includes your custom Connector (your code as a jar artifact including its dependencies) connected to your cluster. This way the runtime will connect to the zeebe engine and will execute the jobs by handing them over to your Connector.

Are you using SaaS or a self-managed instance?

@sbuettner
I am trying to do it in Saas Trail Version right now.
But as per your explanation. I can go ahead with Job worker itself. right ?
What is the advantage I am getting as a connector here then. If still this is expecting to run the Java application or jar ?

Can you give me clarity on this if any special case we can use this ?

Hey @vinothkumar of course, the Connector runtime allows you and your users to make use of additional features implemented by the Connector runtime like the result expression, error expression and is actually build on top of a Job Worker. Implementing a Job Worker is totally fine as well. The Connectors runtime just adds additional functionality like inbound Connectors (like the Webhook Connector) out-of-the-box.

Thanks @sbuettner ,
Thanks for the detail explanation.
My understanding like inbound connectors trying to achieve inside the zeebe tasks mostly and outbound connectors to achieve other system integration stuff.

So at final, as per my understanding, we can go for connector just showing the element in the modeler like all the properties and with that properties, again we can generate the custom response with the help of result expression. . Is that my understanding is correct ?

we can go for connector just showing the element in the modeler like all the properties and with that properties

You can create and use element templates also for regular jobs to provide an nicer UX for your users: About element templates | Camunda 8 Docs

The Connector runtime adds additional functionality that you can implement yourself but its way easier with the Connector SDK: Connector SDK | Camunda 8 Docs

Imagine (outbound) Connectors are basically Job workers with additional out-of-the-box functionality.

If you for example only want to re-use existing functionality already provided by the OOTB connectors you can also just ā€œtemplateā€ an existing Connector like the REST Connector. That approach is for example used in several element templates offered in the marketplace: https://marketplace.camunda.com/en-US/apps/418890/twilio-connector
Source: connectors/connectors/twilio/element-templates/twilio-connector.json at 0decc66a4663dfcdf34ad4b46a44547e350fed7b Ā· camunda/connectors Ā· GitHub

This way your dont have to write any custom code and can just ā€œconfigureā€ an already existing Connector.

Okay @sbuettner ,
So for all the projects we can publish the element templates in the Camunda cloud modeler. And we need to share the sdk code to them to inject into their project. I am right ?

I am not sure what you mean by sharing the sdk code.

If all your teams share the same cluster you can deploy a single Connector Runtime or Application and Connect it to a single Cluster instance. This way everyone running on this cluster can make use of your Connector implementation.

@sbuettner
sorry my bad.

I am missing what you mean by connector Runtime here.

My use case is simple:

  • I developed one connecter template (Camunda modeler) + connection function (in Java).
  • I published my connector template with the help of Camunda modeler publish.
  • So Camunda function I have it in local and I build that and injected that dependency into my project.

Here my question is,
Do I need to share my Camunda function (in Java) to all other project as well to utilize my connector ?

If I understand you correctly everyone that uses your element-template and executing jobs on the zeebe cluster that your application is connected to you can just use your connector. By having it as part of your application its available and ready to be used. You dont need to share the code.

Hi @sbuettner ,
To make it more understandable, I am taking below example

I am developing a spring boot application called ā€œorder-managementā€
Now I have the use-case to read the file from S3 (Just an example).
Step 1: I am writing my own connector Function (Java)
Step 2: I am building my connector Function and adding that dependency into my ā€œorder-managementā€ application with the help of pom.xml.
Step 3: I am modeling my own connector template (Web modeler) and publish into my organization.
Step 4: Now my local spring boot application pointing to my Saas environment and its up and running.
Step 5: Drawing the bpmn with the help of Camunda web modeler and utilizing my connector in the web modeler.
Step 6: Deployed the bpmn and Running the process instance and my connector is there in my local spring boot. Its hitting and running fine.

Now, My colleague is working on other spring boot project in his system locally.
And he want to utilize my connector in the Camunda web modeler of different bpmn.
His spring boot is pointing to the same cluster saas environment.
So he have the bpmn file in the web modeler and he just using my connector in his bpmn with different S3 details.

Now, Do I need to deploy my Java code into any cloud or where I have to host ?
So that when my colleague using via web modeler the Connector function (Java) will get executed ?

If your colleague wants to run everything locally then yes, you would have to share your connector code with your colleague. You could publish your connector (via some repository like Artifactory etc) and your colleague can reference in in their maven pom or gradle file.

If you deploy your application in some kind of development environment it would execute the jobs in that cluster and your colleague could just use it and wouldnt need the code itself on their machine.

Its exactly how job workers work.

Exactly. This is really help for me to understand clearly. Thanks a lot for your patience and explanation @sbuettner

1 Like

@vinothkumar Great, happy to hear it was helpful.