Skip to content

This issue was moved to a discussion.

You can continue the conversation there. Go to discussion →

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

A little more documentation please #42

Closed
7 tasks done
DGilmour5 opened this issue Oct 28, 2021 · 5 comments
Closed
7 tasks done

A little more documentation please #42

DGilmour5 opened this issue Oct 28, 2021 · 5 comments
Assignees
Labels
question Further information is requested

Comments

@DGilmour5
Copy link

DGilmour5 commented Oct 28, 2021

Greetings,
I'm really interested in your work and supporting your efforts if I can.
I'm a little confused on some of the changes you've implemented since 0.10. Can you provide some comments in the source code or more in the ReadMe?
For instance..

  • What are the different methods doing in the worker builder? I get AddHandler, but what are the others doing?
  • What is the impact of the worker count?
  • What's the proper use of the [HandlerVariables] attribute?
  • How can I get all of the variables?
  • How should I deal with External task topics that I don't have a specific handler for? Can I have some kind of catch all?
  • What's the proper use of the CompleteTask object?
  • What configuration do I need if I'm running multiple instances of my client code? Unique worker names?

Again.. really thankful for your work. When do you think you'll get to version 1.0? And when will the breaking changes slow down?

@TechnoBerry
Copy link
Owner

Hello!

Thank you for your feedback!

When I release new version of the library I try to describe important breaking changes in release notes. I understand the importance of having documentation, but I have no experience in providing it. Adding documentation to the library is one of the most important tasks for the 1.0 release. Thank you for the list of issues that need to be covered in the documentation.

As for breaking changes, unfortunately, during the initial design, I did not consider the case of multi-tenancy (#16), the implementation of which I am currently working on. The implementation of this feature requires major changes in the library. I think that after the next version (most likely 0.14.0), the codebase will be stabilized and the path to 1.0.0 will become clearer.

@DGilmour5
Copy link
Author

Well, maybe I'll chip in and help a bit as I dig into the internals. I'll fork the project and see if I can contribute in meaningful ways.
If you wouldn't mind taking a few moments to answer the questions quickly, I'm sure it'll be helpful for me and others.

@TechnoBerry
Copy link
Owner

TechnoBerry commented Oct 29, 2021

I will be glad of your help, but first I have to make a backlog so that your work is not in vain. As for your questions, some questions relate to things that I plan to change in the next version and I can only outline a general vision. Here are the answers for some of questions. I will prepare answers to the rest later.

What is the impact of the worker count?

This is the number of parallel workers with same configuration. Every worker performs "fetch and lock -> process" routine in infinite loop (see RunAsync). The hosted service is responsible for starting the workers.
In the sample app, the number of parallel workers is 1. This means that only one worker performs "fetch and lock -> process" routine.

What's the proper use of the CompleteTask object?

Did you mean CompleteResult? If so, then this is an analogue of OkObjectResult from ASP.NET Core. Instances of this class represent successful processing of an external task. As you can see here, processing such instances internally causes camunda to complete the task.

What configuration do I need if I'm running multiple instances of my client code? Unique worker names?

Unfortunately, I don't have an answer to this question. It seems to me that this generally applies to interaction with camunda. This question is relevant not only for this library, but also for Java and JS libraries. You can try to find the answer in their forum. (https://forum.camunda.org/)

@TechnoBerry TechnoBerry self-assigned this Oct 29, 2021
@TechnoBerry
Copy link
Owner

What's the proper use of the [HandlerVariables] attribute?

This attribute is used to tell camunda which variables the handler needs. Sometimes it might be a local variables. You can just use it to "declare API" of your handler.

How can I get all of the variables?

The documentation of "fetch and" lock" says "If not provided - all variables will be fetched." So if you don't use the [HandlerVariables] attribute, you will get all the variables.

How should I deal with External task topics that I don't have a specific handler for? Can I have some kind of catch all?

Set of topic names is required to perform "fetch and lock". Your program doesn't receive external task with topic name that your program doesn't request.

@TechnoBerry TechnoBerry added the question Further information is requested label Nov 3, 2021
@TechnoBerry
Copy link
Owner

What are the different methods doing in the worker builder? I get AddHandler, but what are the others doing?

At the moment there are 4 methods that can be used to modify the work of the worker:

Repository owner locked and limited conversation to collaborators Nov 12, 2021

This issue was moved to a discussion.

You can continue the conversation there. Go to discussion →

Labels
question Further information is requested
Projects
None yet
Development

No branches or pull requests

2 participants