Migration guide
To see the biggest differences please consult the changelog.
In version 1.15.0
Code API changes
- #5609 #5795 #5837 #5798 Refactoring around DeploymentManager's actions:
- Custom Actions
CustomAction
,CustomActionParameter
andCustomActionResult
moved fromextension-api
todeployment-manager-api
moduleCustomActionResult.req
was removedCustomAction
was renamed toCustomActionDefinition
CustomActionRequest
(from theextension-api
) was renamed toCustomActionCommand
CustomActionRequest
has additional comment parameter (like deploy and cancel actions)
- Other "action" methods - all methods operating on a scenario (or its deployment) were replaced by case classes and
one method handling them all:
processCommand(command)
:validate
-DMValidateScenarioCommand
deploy
-DMRunDeploymentCommand
cancel
withdeploymentId
argument -DMCancelDeploymentCommand
cancel
withoutdeploymentId
argument -DMCancelScenarioCommand
stop
withdeploymentId
argument -DMStopDeploymentCommand
stop
withoutdeploymentId
argument -DMStopScenarioCommand
savepoint
-DMMakeScenarioSavepointCommand
test
-DMTestScenarioCommand
- "Action type" was renamed to "action name". Loosened the restriction on the name of the action:
ProcessActionType
(enum with fixed values) is replaced withScenarioActionName
,- in
ProcessAction
attributeactionType
renamed toactionName
- in table
process_actions
columnaction_type
is renamed toaction_name
DeploymentManagerDependencies.deploymentService
was splitted intodeployedScenariosProvider
andactionService
- Events renamed:
OnDeployActionSuccess
renamed toOnActionSuccess
OnDeployActionFailed
renamed toOnActionFailed
- Custom Actions
- #5762 for the Flink-based TestRunner scenario builder you should replace the last component that was
testResultService
withtestResultSink
- #5783 Return type of
allowedProcessingMode
method inComponent
trait has been changed toAllowedProcessingModes
type which is one of:AllowedProcessingModes.All
in case of all processing modes allowedAllowedProcessingModes.SetOf(nonEmptySetOfAllowedProcessingModes)
in case only set of processing modes is allowed
- #5757 Refactored API around
FlinkSource
- Added
StandardFlinkSource
with more granular additional traits replacing the need forFlinkIntermediateRawSource
- Removed
BasicFlinkSource
andFlinkIntermediateRawSource
. Sources extending these traits should now extendStandardFlinkSource
. For reference on how to migrate, see changes inFlinkKafkaSource
orCollectionSource
- Renamed
FlinkSource
'ssourceStream
method tocontextStream
- Removed
EmptySourceFunction
- Added
- #5757 Added support for bounded sources and Flink runtime mode in
Flink tests
CollectionSource
now takes Flink'sBoundedness
with defaultUnbounded
andRuntimeExecutionMode
with defaultNone
as a parameters. It's encouraged to set theBoundedness
to bounded if applicableBoundedness
andRuntimeExecutionMode
is also possible to set inFlinkTestScenarioRunner
in new overloadingrunWithData
method
Configuration changes
- #5744 Extracted unbounded stream specific components into separate
module:
- Components
periodic
,union-memo
,previousValue
, aggregates, joins anddelay
frombase
were moved intobase-unbounded
module. They are now built asflinkBaseUnbounded.jar
underwork/components/flink/flinkBaseUnbounded.jar
. - Configuration of tumbling windows aggregate offset is changed at the ComponentProvider level:
components.base.aggregateWindowsConfig.tumblingWindowsOffset
should now be set ascomponents.baseUnbounded.aggregateWindowsConfig.tumblingWindowsOffset
- If you previously specified base component jar explicitly in
modelConfig.classPath
ascomponents/flink/flinkBase.jar
and want to retain the unbounded specific components you need to addcomponents/flink/flinkBaseUnbounded.jar
explicitly. - #5887 When using a custom DesignerConfig, ensure that long text elements like 'generate file' are positioned in the last row to prevent excessive spacing between elements.
- Components
Other changes
- #5574 Removed the support for the pluggable expression languages:
ExpressionConfig.languages
removed - #5724 Improvements: Run Designer locally
- Introduce
JAVA_DEBUG_PORT
to run the Designer locally with remote debugging capability - Removed
SCALA_VERSION
, please useNUSSKNACKER_SCALA_VERSION
instead of it
- Introduce
- #5824 Decision Table parameters rename:
- "Basic Decision Table" -> "Decision Table"
- "Expression" -> "Match condition"
- #5881
nussknacker-interpreter
module was renamed tonussknacker-scenario-compiler
- #5875 Added configurable idle timeout to Flink Kafka source with the
default value of 3 minutes. You can configure this timeout in Kafka component config at
idleTimeout.duration
or disable it atidleTimeout.enabled
. You can learn about idleness in Flink general docs and Kafka connector-specific docs - #5875 Removed
useNamingStrategyForConsumerGroupId
feature flag allowing for disabling namespaced Kafka consumer groups - #5848: Introduced a new method for handling colors, aimed at simplifying customization. Now, all colors are centrally stored in a single location. Refer to README.md for details on theme colors customization.
- #5914 Removed dev-specific configuration files
dev-application.conf
anddev-tables-definition.sql
from public distribution artifacts
In version 1.14.0
Code API changes
- #5271 Changed
AdditionalUIConfigProvider.getAllForProcessingType
API to be more in line with FragmentParameterSingleComponentConfigWithoutId
renamed toComponentAdditionalConfig
- field
params: Map[String, ParameterConfig]
changed toparameterConfigs: Map[String, ParameterAdditionalUIConfig]
ParameterAdditionalUIConfig
is handled analogously toFragmentParameter
(expect forvalueCompileTimeValidation
, which isn't yet handled)ParameterConfig.defaultValue
->ParameterAdditionalUIConfig.initialValue
ParameterConfig.hintText
->ParameterAdditionalUIConfig.hintText
- most of the capabilities of
ParameterConfig.editor
andParameterConfig.validators
are covered byParameterAdditionalUIConfig.valueEditor
andParameterAdditionalUIConfig.valueCompileTimeValidation
- #5285 Changes around scenario id/name fields:
CanonicalProcess.id
of typeString
was replaced byname
field of typeProcessName
CanonicalProcess.withProcessId
was renamed towithProcessName
ScenarioWithDetails.id
was removed (it had the same value asname
)ScenarioWithDetails.processId
changed the type toOption[ProcessId]
and will have alwaysNone
valueComponentUsagesInScenario.id
was removed (it had the same value asname
)ComponentUsagesInScenario.processId
was removedListenerScenarioWithDetails.id
was removed (it had the same value asname
)ValidatedDisplayableProcess.id
of typeString
was replaced byname
field of typeProcessName
DisplayableProcess.id
of typeString
was replaced byname
field of typeProcessName
,processName
field is removed- deprecated
AsyncExecutionContextPreparer.prepareExecutionContext
was removed AsyncExecutionContextPreparer.prepare
now takesProcessName
instead ofString
- #5288 #5474 RemoteEnvironment / ModelMigration changes:
ProcessMigration.failOnNewValidationError
was removed - it wasn't used anywhere anymoreRemoteEnvironment.testMigration
result types changesshouldFailOnNewErrors
field was removed - it wasn't used anywhere anymoreconverted
field was replaced by theprocessName
field which was the only information that was used
RemoteEnvironment.migrate
takesScenarioParameters
instead ofcategory
- #5361
Parameter
has new, optionallabelOpt
field which allows to specify label presented to the user without changing identifier used in scenario graph json (Parameteter.name
) - #5356 Changes in AdditionalUIConfigProvider.getAllForProcessingType now require model reload to take effect.
- #5393 #5444
- Changes around metadata removal from the REST API requests and responses:
DisplayableProcess
was renamed toScenarioGraph
ScenarioGraph
fields that were removed:name
,processingType
,category
- all these fields already were inScenarioWithDetails
ProcessProperties
field removed:isFragment
- this field already was inScenarioWithDetails
ScenarioWithDetails
fieldjson.validationResult
was moved into the top level ofScenarioWithDetails
ScenarioWithDetails
fieldjson
was renamed intoscenarioGraph
and changed the type intoScenarioGraph
ValidatedDisplayableProcess
was renamed toScenarioGraphWithValidationResult
ScenarioGraphWithValidationResult
all scenario graph fields were replaced by onescenarioGraph: DisplayableProcess
field
- Migration mechanisms (
RemoteEnvironment
andTestModelMigrations
) useScenarioWithDetailsForMigrations
instead ofScenarioWithDetails
- Changes around metadata removal from the REST API requests and responses:
- #5424 Naming cleanup around
ComponentId
/ComponentInfo
ComponentInfo
was renamed toComponentId
ComponentId
was renamed toDesignerWideComponentId
- new
ComponentId
is serialized in json to string in format$componentType-$componentName
instead of separate fields (name
andtype
) NodeComponentInfo.componentInfo
was renamed tocomponentId
- #5438 Removed sealed trait
CustomActionError
, nowCustomActionResult
is always used - #5465 #5457 Typed related changes
CommonSupertypeFinder
shouldn't be created directly anymore -CommonSupertypeFinder.*
predefined variables should be used instead, in most cases just (CommonSupertypeFinder.Default
)TypedObjectTypingResult.apply
removed legacy factory method takingList[(String, TypingResult)]
- should be used variant withMap
TypedObjectTypingResult.apply
removed legacy factory method takingTypedObjectDefinition
- should be used variant withMap
TypedObjectTypingResult.apply
is deprecated - should be usedTyped.record(...)
instead. It will be removed in further releasesTypedObjectDefinition
was removedTyped.empty
was removed,TypedUnion
now handles only >= 2 typesTyped.apply(vararg...)
was replaced byTyped.apply(NonEmptyList)
andTyped.apply(firstType, secondType, restOfTypesVaraarg...)
If you have a list of types and you are not sure how to translate it toTypingResult
you can try to useTyped.fromIterableOrUnknownIfEmpty
but it is not recommended - see docs next to it.TypedUnion
is not a case class anymore, but is still serializable - If it was used in a Flink state, state will be probably not compatible
- #5517 Legacy
OnFinished
listener-api event was removed - #5474
Component
class now need to specifyallowedProcessingModes
. Most of the implementations (CustomStreamTransformer
,Service
,SinkFactory
) has default wildcard (None
). ForSourceFactory
you need to specify whichProcessingMode
this source support. You have predefined traits:UnboundedStreamComponent
,BoundedStreamComponent
,RequestResponseComponent
,AllProcessingModesComponent
that can be mixed into the component - #5474 Changes around new scenario metadata (aka "parameters"):
ScenarioWithDetails
: addedprocessingMode
andengineSetupName
fields
- #5522, #5521, #5519
DeploymentManager
API related changes:- In the
DeploymentManager
:DeploymentManager.getProcessState(ProcessIdWithName, Option[ProcessAction])
become final. You should implementresolve
method instead. It does the same, onlyList[StatusDetails]
are already determined.- Method
DeploymentManager.getProcessStates
signature was changed and now requires an implicitfreshnessPolicy: DataFreshnessPolicy
- Trait
AlwaysFreshProcessState
and methodgetFreshProcessStates
were removed, instead of it please usegetProcessStates
withDataFreshnessPolicy.Fresh
policy - Managers
FlinkStreamingRestManager
andFlinkRestManager
require new parameter:scenarioStateCacheTTL: Option[FiniteDuration]
- In the
DeploymentManagerProvider
:- New methods were added:
defaultEngineSetupName
andengineSetupIdentity
. They have default implementations, you should consider to replace them by your own - New, overloaded
createDeploymentManager
was added. In the new one most of the parameters were bundled intoDeploymentManagerDependencies
class which allows to easier pass these dependencies to delegates. Also, this method returnsValidateNel[String, DeploymentManager]
. You can return errors that will be visible to users e.g. invalid configuration etc. The old one is deleted. - Method
createDeploymentManager
signature was changed and now requires new parameter:scenarioStateCacheTTL: Option[FiniteDuration]
- New methods were added:
- In the
- #5526 Refactored namespaces:
- Removed
ObjectNaming
SPI - Removed logging when using naming strategy
- Replaced
ObjectNaming
with singleNamingStrategy
which prepares a name with a prefix fromnamespace
key fromModelConfig
or returns the original name if the value is not configured
- Removed
- #5535
ProcessingTypeConfig.classpath
contains now raw,String
entries instead ofURL
. TheString
toURL
converting logic is now insideModelClassLoader.apply
- #5505 anonymous access functionality for Tapir-based API
AuthenticationResources
&AnonymousAccess
traits were changed to be able to introduce anonymous access featureAuthCredentials
class was changed too
- #5373#5694 changes related to
Component
s andLazyParameter
s:LazyParameter
can be evaluated on request thanks to itsevaluate
methodParams
data class was introduced as a replacement for runtime parameters values defined asMap[String, Any]
.Params
data class, in its extraction methods, assumes that a parameter with the given name exists in the underlying Map.TypedExpression
was removed fromBaseDefinedParameter
hierarchy in favour ofTypingResult
TypedExpression
doesn't depend onExpressionTypingInfo
anymoreServiceInvoker
refactoring (parameters map was removed, a context is passed to its method)ProcessListener
interface changed slightlyParameterWithExtractor
util was replaced withParameterDeclaration
.- classes renaming:
LazyParameterInterpreter
toLazyParameterInterpreter
GenericNodeTransformation
toDynamicComponent
SingleInputGenericNodeTransformation
toSingleInputDynamicComponent
JoinGenericNodeTransformation
toJoinDynamicComponent
JavaGenericTransformation
toJavaDynamicComponent
JavaGenericSingleTransformation
toJavaSingleInputDynamicComponent
JavaGenericJoinTransformation
toJavaJoinDynamicComponent
JavaSourceFactoryGenericTransformation
toJavaSourceFactoryDynamicComponent
GenericContextTransformationWrapper
toDynamicComponentWrapper
SingleGenericContextTransformationWrapper
toSingleInputDynamicComponentWrapper
SourceFactoryGenericContextTransformationWrapper
toSourceFactoryDynamicComponentWrapper
JoinGenericContextTransformationWrapper
toJoinDynamicComponentWrapper
- type
NodeTransformationDefinition
(insideDynamicComponent
) renamed toContextTransformationDefinition
- #5641
PeriodicProcessDeployment
/DeploymentWithJarData
/PeriodicProcess
now takes type parameterCanonicalProcess
orUnit
to point out whether it contains scenario json. - #5656
pl.touk.nussknacker.engine.api.expression.Expression#language
method returnsLanguage
trait instead ofString
- #5707
ParameterName
data class was introduced. It replacesString
in whole places where it's used as a parameter name - #5754 Fix for broken encoding mechanism in tests from file with Avro format, revert 0d9b600
- Classes
ResultsCollectingListener
,TestResults
,ExpressionInvocationResult
,ExternalInvocationResult
depend onT
- Classes
TestResults.nodeResults
usesResultContext
instead ofContext
- Classes
TestResults.exceptions
usesExceptionResult
instead ofNuExceptionInfo
- Added
variableEncoder
toResultsCollectingListenerHolder.registerRun
- Classes
REST API changes
- #5280#5368 Changes in the definition API:
/api/processDefinitionData/componentIds
endpoint is removed/api/processDefinitionData/*
response changes:services
,sourceFactories
,sinkFactories
,customStreamTransformers
andfragmentInputs
maps fields were replaced by onecomponents
map with key in format$componentType-$componentName
and moved into top level of responsetypesInformation
field was renamed intoclasses
, moved into top level of response and nestedclazzName
inside each element was extractedcomponentsConfig
field was removed - now all information about components are available in thecomponents
fieldnodeId
field insideedgesForNodes
was renamed intocomponentId
in the flat$componentType-$componentName
formatdefaultAsyncInterpretation
field was removed
- #5285 Changes around scenario id/name fields:
/api/process(Details)/**
endpoints:id
fields was removed (it had the same value asname
)processId
fields return alwaysnull
.json.id
fields was renamed to.json.name
/api/components/*/usages
endpoint:id
fields was removed (it had the same value asname
)processId
fields was removed
/api/processes/**/activity/attachments
-processId
fields was removed/api/processes/**/activity/comments
-processId
fields was removed- GET
processes/$name/$version/activity/attachments
-$version
segment is removed now
- #5393 Changes around metadata removal from the REST API requests and responses:
/api/processValidation
was changed to/api/processValidation/$scenarioName
and changed request type/api/testInfo/*
was changed to/api/testInfo/$scenarioName/*
and changed request format regarding code API changes/api/processManagement/generateAndTest/$samples
was changed to/api/processManagement/generateAndTest/$scenarioName/$samples
/api/processesExport/*
was changed to/api/processesExport/$scenarioName/*
and changed response format regarding code API changes/api/processes/import/$scenarioName
was changed response into{"scenarioGraph": {...}, "validationResult": {...}
- GET
/api/processes/*
and/api/processesDetails/*
changed response format regarding code API changes - PUT
/api/processes/$scenarioName
was changed request field fromprocess
toscenarioGraph
/api/adminProcessManagement/testWithParameters/$scenarioName
was changed request field fromdisplayableProcess
toscenarioGraph
- #5424 Naming cleanup around
ComponentId
/ComponentInfo
- Endpoints returning test results (
/api/processManagement/test*
) returnnodeId
instead ofnodeComponentInfo
now /processDefinitionData/*
response: fieldtype
was replaced bycomponentId
inside the path.componentGroups[].components[]
- Endpoints returning test results (
- #5462
/api/processes/category/*
endpoint was removed - #5474 POST
/api/processes/$scenarioName/$category?isFragment=$isFragment
resource become deprecated. It will be replaced by POST/processes
with fields:name
,isFragment
,forwardedUserName
,category
,processingMode
,engineSetupName
. Three last fields are optional. Please switch to the new API because in version 1.5, old API will be removed. - POST
/api/nodes/$scenarioName/validation
response for object invalidationErrors
array can havedetails
of the error
Configuration changes
- #5297
componentsUiConfig
key handling change:$processingType-$componentType-$componentName
format was replaced by$componentType-$componentName
format
- #5323 Support for the legacy categories configuration format was removed.
In the new format, you should specify
category
field inside each scenario type. - #5419 Support for system properties was removed from model configuration (they aren't resolved and added to merged configuration)
- #5474 You have to ensure that in every scenarioType model's
classPath
, in every jar are only components with not colliding processing modes. Also at least one component has defined processing mode other than wildcard. On the other hand starting from this version, you can use the same category for many scenarioTypes. You only have to ensure that they have components with other processing modes or other deployment configuration. - #5558 The
processToolbarConfig
toolbar withtype: "process-info-panel"
no longer accepts thebuttons
property. It only display scenario information now. However, a new toolbar withtype: "process-actions-panel"
has been introduced, which does accept thebuttons
property and renders actions similar to the oldtype: "process-info-panel"
.
Helm chart changes
- #5515 #5474 Helm chart now has two preconfigured scenario types (
streaming
andrequest-response
) instead of one (default
). Because of that, scenario created using previous version of helm chart will have invalid configuration in the database. To fix that, you have to manually connect to the database and execute sql statement:UPDATE processes SET processing_type = 'given-scenario-type' where processing_type = 'default';
Other changes
- #4287 Cats Effect 3 bump Be careful with IO monad mode, we provide an experimental way to create IORuntime for the cat's engine.
- #5432 Kafka client, Confluent Schema Registry Client and Avro bump
- #5447 JDK downgraded from 17 to 11 in lite runner image for scala 2.13
- #5465 Removed
strictTypeChecking
option andSupertypeClassResolutionStrategy.Union
used behind it - #5517 Removed legacy mechanism marking scenario finished based on the fact that the last action was deploy and job was finished. The new mechanism leverage deployment id which was introduced in #4462 in 1.11 version.
- #5474 The mechanism allowing migration between two environments uses by default the new,
scenario creating API. In case when the secondary environment is in the version < 1.14, you should switch
secondaryEnvironment.useLegacyCreateScenarioApi
flag to on. - #5526 Added namespacing of Kafka consumer group id in both engines.
If you have namespaces configured, the consumer group id will be prefixed with
namespace
key from model config - in that case a consumer group migration may be necessary for example to retain consumer offsets. For gradual migration, this behaviour can be disabled by settinguseNamingStrategyInConsumerGroups = false
inKafkaConfig
. Note that theuseNamingStrategyInConsumerGroups
flag is intended to be removed in the future.
In version 1.13.1 (Not released yet)
Code API changes
- #5447 JDK downgraded from 17 to 11 in lite runner image for scala 2.13
In version 1.13.0
Code API changes
- #4988 Method definition
def authenticationMethod(): Auth[AuthCredentials, _]
was changed todef authenticationMethod(): EndpointInput[AuthCredentials]
- #4860 DeploymentManagerProvider implementations have to implement the method
def scenarioPropertiesConfig(config: Config): Map[String, ScenarioPropertyConfig]
instead ofdef additionalPropertiesConfig(config: Config): Map[String, AdditionalPropertyConfig]
- #4919 Improvement: Support for handling runtime exceptions at FlinkTestScenarioRunner:
TestProcess.exceptions
type changed fromList[ExceptionResult[T]]
toList[NuExceptionInfo[_ <: Throwable]]
- #4912 Changes in scenario details:
pl.touk.nussknacker.restmodel.processdetails.BaseProcessDetails[_]
andpl.touk.nussknacker.restmodel.processdetails.BasicProcess
used in rest resources were merged intopl.touk.nussknacker.restmodel.scenariodetails.ScenarioWithDetails
pl.touk.nussknacker.restmodel.processdetails.BaseProcessDetails[_]
used inpl.touk.nussknacker.ui.listener.services.PullProcessRepository
were moved intolistener-api
and renamed intopl.touk.nussknacker.ui.listener.ListenerScenarioWithDetails
pl.touk.nussknacker.restmodel.processdetails.ProcessDetails
andpl.touk.nussknacker.restmodel.processdetails.ValidatedProcessDetails
type aliases are not available anymore - you should probably useScenarioWithDetails
in these placespl.touk.nussknacker.restmodel.processdetails.ProcessVersion
was moved intopl.touk.nussknacker.engine.api.process.ScenarioVersion
pl.touk.nussknacker.restmodel.processdetails.StateActionsTypes
was moved intoProcessActionType.StateActionsTypes
- #4959
listener-api
module become decoupled fromrestmodel
module. Some classes were moved toextensions-api
module to make it possible:pl.touk.nussknacker.restmodel.displayedgraph
package was renamed topl.touk.nussknacker.engine.api.displayedgraph
pl.touk.nussknacker.restmodel.displayedgraph.ValidatedDisplayableProcess
was moved topl.touk.nussknacker.restmodel.validation
packagepl.touk.nussknacker.restmodel.process.ProcessingType
was moved topl.touk.nussknacker.engine.api.process
packagepl.touk.nussknacker.restmodel.scenariodetails.ScenarioVersion
was moved topl.touk.nussknacker.engine.api.process
package
- #4745 Added method
ScenarioBuilder
to create fragments with specified input node id instead of taking a default from fragment id - #4745 Add more errors for scenario and node id validation and change names, messages of existing ones
- #4928 #5028
Validator.isValid
method now takesexpression: Expression, value: Option[Any]
instead ofvalue: String
which was not really value, but expression. Straight-forward migration is to change method definition and now useexpression.expression
instead ofvalue
if your validator depends on raw expression. If validator was doing quasi-evaluation, for example trimming'
to get string, you can just takevalue
and cast it to desired class.LiteralNumberValidator
is removed, to achieve same result useCompileTimeEvaluableValueValidator
with parameter ofNumber
type,LiteralIntegerValidator
is considered deprecated and will be removed in the future, to achieve same result useCompileTimeEvaluableValueValidator
with parameter ofInteger
type,LiteralRegExpParameterValidator
is renamed toRegExpParameterValidator
- annotation
pl.touk.nussknacker.engine.api.validation.Literal
was renamed topl.touk.nussknacker.engine.api.validation.CompileTimeEvaluableValue
- #5079
AuthCredentials
is moved topl.touk.nussknacker.security
inextensions-api
- #5103
- Values of
ExpressionConfig.globalImports
andExpressionConfig.dictionaries
aren't wrapped withWithCategories
anymore WithCategories.apply
withcategories
varrag variant is replaced by version with headcategory
and tailcategories
varrag Previous version was commonly wrongly used as an "object without categories specified" but in fact it was "object with empty categories list" which means that object should be never visible. To create "object without categories specified" use,WithCategories.anyCategory
. If you want to pass just a list of categories, useWithCategories(value, Some(list), SingleComponentConfig.zero)
- Values of
- #5171 Changes around
ComponentType
values changes:- In
ComponentType
values:- Built-in component's artificial component types (
Filter
,Split
,Switch
,Variable
,MapVariable
) were replaced byBuiltIn
type Processor
andEnricher
component types were replaced byService
Fragments
was replaced byFragment
CustomNode
was replaced byCustomComponent
- Built-in component's artificial component types (
- In
ComponentInfo
: Order of parameters swapped + names of them changedcomponentType
->type
,componentName
->name
- In
- #5209 Now
TestScenarioRunner
doesn't load components fromComponentProvider
automatically. Instead, it loads some predefined set of components. Rest of them you need to pass components usingwithExtraComponents
method. Components loaded automatically:TestScenarioRunner.liteBased
- frombase
providerTestScenarioRunner.kafkaLiteBased
- frombase
andkafka
providersTestScenarioRunner.requestResponseBased
- frombase
andrequestResponse
providersTestScenarioRunner.flinkBased
- frombase
providerTestScenarioRunner
now also uses global variables from default model
- #4956 Refactor: Cleanup TestResults
- Changed signature
DeploymentManager.test
method, and removedvariableEncoder
param - Classes
TestResults
,ExpressionInvocationResult
,ExternalInvocationResult
don't depend onT
- Classes
NodeResult
is removed. Instead,Context
is used directly - Removed
variableEncoder
fromResultsCollectingListenerHolder.registerRun
- Removed
ResultContext
, please useContext
instead of it
- Changed signature
- #5240 Simpler result types in
TestScenarioRunner
RunResult
andRunUnitResult
has no generic parameter anymoreRunResult
and its descendants has nosuccess
method anymore - forRunListResult
should be usedsuccesses
instead
REST API changes
- #4745 Change
api/properties/*/validation
endpoint request type- Replace
processProperties
withadditionalFields
- Add
id
field for scenario or fragment id
- Replace
- #5039#5052 Changes in endpoints
api/parameters/*/suggestions
requestvariables
is renamed tovariableTypes
and it should have only local variables now
api/processes/**
response.json.validationResult.nodeResults.variableTypes
doesn't contain global variables types anymore
api/processDefinitionData/*
response.processDefinition.globalVariables
is removed
api/parameters/*/validate
requestscenarioName
is removedprocessProperties
is removed
Configuration changes
- #4860 In file-based configuration, the field
scenarioTypes.<scenarioType>.additionalPropertiesConfig
is renamed toscenarioTypes.<scenarioType>.scenarioPropertiesConfig
- #5077 In SQL enricher configuration,
connectionProperties
was changed todataSourceProperties
Other changes
- #4901 Improvements TestScenarioRunner:
- Changes at
FlinkProcessRegistrar.register
passingresultCollector
instead oftestRunId
- Changes at
- #5033 Scala 2.13 was updated to 2.13.12, you may update your
flink-scala-2.13
to 1.1.1 (it's not required, new version is binary-compatible) - #5059 #5100 Categories configuration doesn't allow configuring multiple categories for the same scenario type. If you have such a case, you have to extract another scenario types and assign each category to each scenario type. Because of this change configuration of categories was also removed from Components configuration
- #4953 Stricter validation in base components:
- Boolean expressions in
Switch
andFilter
nodes are required not null values - Variable values in
MapVariable
,FragmentOutput
andVariable
are mandatory - Field names in
MapVariable
,FragmentOutput
are required to be unique
- Boolean expressions in
- #4698 Due to change in program argument encoding all scheduled batch scenarios handled by periodic DM must be cancelled before upgrade
In version 1.12.6
Other changes
- #5447 JDK downgraded from 17 to 11 in lite runner image for scala 2.13
In version 1.12.x
Code API changes
- #4574 Improvements: at
KafkaClient
andRichKafkaConsumer
in kafka-test-utilsRichKafkaConsumer.consumeWithJson
needs json decoder- removed
RichKafkaConsumer.consumeWithConsumerRecord
, useRichKafkaConsumer.consumeWithJson
instead of it RichKafkaConsumer.defaultSecondsToWait
renamed toRichKafkaConsumer.DefaultSecondsToWait
KafkaClient.sendMessage
accepts generic content with json encoder
- #4583
DeploymentManager
has new variants of methodcancel
andstop
takingDeployomentId
next toProcessName
. They will be used with batch processing mechanism (periodic DM) so it is necessary to implement it only if your DM will be wrapped byPeriodicDeploymentManager
- #4685 In
AuthenticationResources
trait it was added two new methods that have to be implemented in the child classes:def authenticationMethod(): Auth[AuthCredentials, _]
anddef authenticate(authCredentials: AuthCredentials): Future[Option[AuthenticatedUser]]
. The first one tells what authentication method will be used (it's for Tapir-based API purposes) and the latter one is the authentication action itself. Thedef authenticate(): Directive1[AuthenticatedUser]
should be treated as deprecated. It's used in the NU APIs which are still Akka HTTP-based. When we get rid of Akka HTTP, it will be removed. - #4762 Rename
RegExpParameterValidator
toLiteralRegExpParameterValidator
REST API changes
- #4697 Change
api/parameters/*/validate
andapi/parameters/*/suggestions
endpoints.- Use
processingType
instead ofprocessName
- Add
scenarioName
parameter toParametersValidationRequest
used inapi/parameters/*/validate
- Use
- #4602 Cleaning subprocess usages after NU 1.11 release
- Removed isSubprocess endpoint param, use isFragment from now on.
- Removed backward compatibility for subprocess fields.