I wrote an article with a list of patterns/opinions on Temporal development. I hope it helps others. Let me know if you have any feedback!
Great advice, thanks for writing up!
This approach is preferable to throwing an exception from the Charge activity, which would cause the activity to fail and be retried, which may not be the desired behavior.
This is not 100% correct. It is possible to throw non retryable failure and attach (if needed) additional details data.
throw ApplicationFailure.newNonRetryableFailure(<message>, <failureType>, detailsStructure);
Another approach is to specify an exception type in the
RetryOptions.DoNotRetry and it will not be retried.
I made an update. Thanks for pointing it out!