Took at quick look at apache nifi. Here is my conclusion but anyone feel free to correct me if I am wrong:
I think they only overlap for a small part but quite different:
* Nifi is focusing on moving/sharing datafile (meaning the size could be big) across the system
* Nifi does have some logic control flow to act like workflow, but it's not too closed to be a "workflow system" because it missing a lot of capabilities that a typical workflows should have (see "What they all have in common
" in https://medium.com/@qlong/iwf-vs-other-general-purposed-work...)
* iWF is a general purposed workflow engine, could conceptually do data sharing but it is not good at sharing the big amount of data or data files
* iWF is more specialized at controlling/orchestrating the business
There is no much tricky things inside the SDK that you have to do. For client APIs to call iWF server(the rest of the API defined in the Open API schema), just need to build a wrapper on top of the generated code from Swagger (and it can be optional but it will just make it easier to use).
As a data point, it only took me a week to build GoSDK, including all the tests, by just opening the IntelliJ IDE and also Goland IDE to translate the Java code into Golang.
The whole community including myself will really appreciate it.
There are lots of things that other workflow engines cannot do:
Reset workflow : important to recover from bad states for any reasons. You may have bugs caused this or because downstream outages. Reset can let you go back like timing machines.
Search attributes: let you search for anything like having unlimited database index.
Cadence/Temporal let you run only with database for majority of the feature/power. ElasticSearch is only for supporting the searching functionality(advanced visibility).
I believe so. Welcome to try out. There are only a few concepts you need to learn about iWF and you can start with docker-compose to run a iWF service locally for development.
iWF is not just persisting states, but also able invoking/executing states, searching for attributes(like unlimited database indexes), durable timer, resetting workflows etc.
Without Temporal/Cadence, it's 100+ harder to implement iWF. Even using SWF/Azure durable function is possible to build iWF, Cadence/Temporal is much more powerful than the other two(e.g. no reset workflow, search attributes)
I think being straight forward about how iWF solves the issues you and others have brought up straight on the landing page will do you a lot of favors.
- Dimension A in Temporal, in iWF
- Dimension B in Temporal, in iWF
...
- Here's when you want to use Temporal directly. Here's when you should use iWF.
I'm still unsure how iWF solves the items brought up in the blog post you linked.
Hello, no you are definitely the target users. Anyone who needs to build long running business/application/process is the target user of iWF.
You are right, there were too many context about Cadence/Temporal in the README. I just made a update to move a lot of them to wiki just for the Cadence/Temporal users.You can check https://medium.com/@qlong/iwf-vs-other-general-purposed-work... for comparison with other workflow engines.
I think they only overlap for a small part but quite different:
* Nifi is focusing on moving/sharing datafile (meaning the size could be big) across the system * Nifi does have some logic control flow to act like workflow, but it's not too closed to be a "workflow system" because it missing a lot of capabilities that a typical workflows should have (see "What they all have in common " in https://medium.com/@qlong/iwf-vs-other-general-purposed-work...)
* iWF is a general purposed workflow engine, could conceptually do data sharing but it is not good at sharing the big amount of data or data files * iWF is more specialized at controlling/orchestrating the business