Skip to content

Releases: indeedeng/iwf-golang-sdk

v1.6.0 Release

28 Nov 23:59
424afc8
Compare
Choose a tag to compare

💥Breaking changes: WorkflowStateOptions --> StateOptions

The iwfidl.WorkflowStateOptions is an internal model of the API protocol of SDKs and iWF server.
It was a implementation leakage to use it as the return value of GetStateOptions() method of WorkflowState interface.
Because of the leakage

  • It's confusing that user can set SkipWaitUntil boolean
  • Use can set ExecuteApiFailurePolicy and raw state options
  • It makes things tricky to support ExecuteApiFailurePolicy properly

Now we have a dedicated model iwf.StateOptions in SDK to separate from the API model.

How to migrate

It should be very simple. The breaking changes does't involve anything on server side.

Mostly, just change iwfidl.WorkflowStateOptions to iwf.StateOptions.
See how we have changed in the integration tests and samples.

Because iwf.StateOptions share almost the same fields as iwfidl.WorkflowStateOptions, except for SkipWaitUntil and fields for ExecuteApiFailureProceed*.

To make it clear to use the failure recovery/proceed feature, the SetProceedOnExecuteFailure is now removed.
Use ExecuteApiFailureProceedState field instead in the StateOptions:

options := &iwf.StateOptions{
	...
	ExecuteApiFailureProceedState: &youRecoveryState{},
}

You should not need to set the state options for this recovery state, because the SDK will use the one returned from the state implementation.

What's Changed

Full Changelog: v1.5.0...v1.6.0

v1.5.0 Release

24 Nov 16:14
c17ff97
Compare
Choose a tag to compare

What's Changed

  • Updating codegen to support UseMemoForDataAttributes by @edmondop in #67
  • Add execute API failure policy support by @nakanaori in #71
  • [UNIT TEST] Update mockgen and create client mock by @afasari in #72

New Contributors

Full Changelog: v1.4.2...v1.5.0

v1.4.2 Release

22 May 21:33
b2ed2e6
Compare
Choose a tag to compare

What's Changed

Full Changelog: v1.4.1...v1.4.2

v1.4.1 Release

22 May 18:44
c10019c
Compare
Choose a tag to compare

What's Changed

Full Changelog: v1.4.0...v1.4.1

v1.4.0 Release

19 May 23:22
7007984
Compare
Choose a tag to compare

Feature & Improvement:

  • New stop workflow types: terminate and fail
  • Start workflow without any starting state or any state
  • 💥 Breaking changes for renaming
    • state APIs: start-->waitUntil, decide --> decide
    • Workflow --> ObjectWorkflow
    • interStateChannel --> internalChannel
    • dataObject --> dataAttribute
    • StateLocal --> StateExecutionLocal
  • WaitUntil API becomes optional by setting skipWaitUntil
  • Workflow RPC: request response manner
  • DeadEnd decision will just only stop the thread

Note that the new behaviors require 1.5+ version of iWF server to support.

What's Changed

New Contributors

v1.3.1 Release

07 Feb 18:41
af20271
Compare
Choose a tag to compare

What's Changed

  • Fix dataObject/search attributes bugs of overriding each others by @longquanzheng in #45

Full Changelog: v1.3.0...v1.3.1

v1.3.0 Release

06 Feb 06:00
9d08d3b
Compare
Choose a tag to compare

Feature & Improvement:

  • Support failing workflow with results
  • Improve workflow uncompleted error return(canceled, failed, timeout, terminated)

Note that the new behaviors require 1.3+ version of iWF server to support.

What's Changed

Full Changelog: v1.2.1...v1.3.0

v1.2.1 Release

05 Feb 23:26
0e39ed2
Compare
Choose a tag to compare

Improvements

  • Add unit test API supports for mocking
  • Fix some internal APIs that not exported which caused not testable/mockable

What's Changed

Full Changelog: v1.2.0...v1.2.1

v1.2.0 Release

24 Jan 03:46
78619ba
Compare
Choose a tag to compare

💥 Breaking changes in SDK API:

  • Error handling in workflowState implementation
    • All the APIs including Object, Persistence, Communication now all panic on error instead of returning.
    • Mostly you don't need to. But the error can still be accessible if really need to do some customized handling:
      • capturing panic yourself
      • get the error from WorkerService API, because WorkerService will use captureStateExecutionError to capture the error
    • When upgrading, simply remove the boilerplate code of returning error. See example in samples PR.
  • default WorkflowType is now changed to eliminate the leading * character if the struct is from a pointer
    • If you have old workflows using this, you have to use SetLegacyUseStarPrefixInWorkflowTypeForPointerStruct API to tell the SDK to keep compatibilities for the old workflows:
SetLegacyUseStarPrefixInWorkflowTypeForPointerStruct(oldWf1, OldWf2, OldWf3)
  • GetDefaultWorkflowType --> GetFinalWorkflowType to be more accurate.

API improvements

  • Workflow definition provides new API and deprecated the old ones. The old ones are marked as deprecated. See example in samples PR for how to upgrade.
    • NewStartingState --> StartStateDef
    • NewNonStartingState --> NonStartStateDef
    • NewDataObjectDef --> DataObjectDef
    • NewSearchAttributeDef --> SearchAttributeDef
    • NewSignalChannelDef --> SignalChannelDef
    • NewInterstateChannelDef --> InterstateChannelDef
  • Workflow now provides default struct to save the boilerplate code of returning default values.See example in samples PR.
    • DefaultWorkflowType
    • EmptyPersistenceSchema
    • EmptyCommunicationSchema
  • WorkflowState now provides default struct to save the boilerplate code of returning default value.See example in samples PR.
    • DefaultStateIdAndOptions
    • DefaultStateId
    • DefaultStateOptions

What's Changed

Full Changelog: v1.1.0...v1.2.0

v1.1.0 Release

20 Jan 23:26
f892c02
Compare
Choose a tag to compare

💥 Breaking changes in SDK API:

  • Client:
    • Removed the startStateId for StartWorkflow API -- this should simplify the experience
    • WorkflowOptions use a more friendly way to define initial search attributes
  • UnregisteredClient
    • Add UnregisteredWorkflowOptions for UnregisteredClient since it cannot use WorkflowOptions anymore. UnregisteredWorkflowOptions is the same as the previous WorkflowOptions

New features (need higher server version)

  • Skip timer API for testing/operation : requires server version 1.2 +
  • Decider trigger type: any command combination: requires server version 1.2 +
  • Improve error handling to add more friendly API to check client side error
  • Error handling returns subError type like WorkflowAlreadyStarted/WorkflowNotExists: requires server version 1.2.1+
  • Add Attempt and FirstAttemptTimestampSeconds to context: requires server version 1.2.2+
    • NOTE: This Attempt and FirstAttemptTimestampSeconds are important to implement complex WorkflowState behavior. E.g. It needs to do some backoff retry in a Start/Decide API for several times, but then give up and move on without failing the workflow

Requirements:

Best if runs with iWF server 1.2 +
It also runs with lower versions of iWF server, but new features will be rejected or returns empty

What's Changed

Full Changelog: v1.0.1...v1.1.0