Open coltmcnealy-lh opened 10 months ago
@eduwercamacaro agrees; also we should should update our documentation. This should be done before 1.0.0
as it does break our contract a little bit (but not a huge amount)
Well, it looks like this requires some discussion to get the correct API semantics, but no one wants to do the implementation 😂
Context
I recently implemented a major overhaul to
WfSpec
versioning in which we added themajorVersion
andrevision
fields. A newmajorVersion
happened when there was a breaking change, defined as a change in the set ofsearchable()
orrequired()
variables.Description
What if there is a
Variable
that is not searchable (for performance reasons), and not an input variable, but it is an important part of the Contract of theWfSpec
(for example when usingWfRun
's to store business entitites, this variable might be a useful "column" but not indexed or required)?I think we should make any changes to the sets of
Variable
s in aWfRun
result in a newmajorVersion
, unless the variable is marked asinternal()
.All three SDK's should have a
WfRunVariable#internal()
methodTechnical Context
Certain variables are automatically created by the SDK, and should also be marked as
internal()
. For example:WorkflowThread#spawnThread()
methodINPUT
variables used for receivingExternalEvent
's in an Interrupt Handler, andFailure
's in a Failure Handler