Migration guide
To see the biggest differences please consult the changelog.
In version 1.18.0 (Not released yet)
Configuration changes
-
- Button name for 'test adhoc' was renamed from
test-with-form
toadhoc-testing
If you are using custom button config remember to update button type totype: "adhoc-testing"
inprocessToolbarConfig
- Button name for 'test adhoc' was renamed from
-
- Scenario Activity audit log is available
- logger name,
scenario-activity-audit
, it is optional, does not have to be configured - it uses MDC context, example of configuration in
logback.xml
:
<logger name="scenario-activity-audit" level="INFO" additivity="false">
<appender-ref ref="STDOUT_FOR_SCENARIO_ACTIVITY_AUDIT"/>
</logger>
<appender name="STDOUT_FOR_SCENARIO_ACTIVITY_AUDIT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<Pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - [scenarioId=%X{scenarioId}][version=%X{scenarioVersionId}][user=%X{username}] %msg%n</Pattern>
</encoder>
</appender>
Code API changes
- #6971
DeploymentManagerDependencies
API changes:- Added field
scenarioActivityManager: ScenarioActivityManager
scenarioActivityManager
can be used by anyDeploymentManager
to save scenario activities in the Nu database- there is
NoOpScenarioActivityManager
implementation available (if needed for tests etc.)
- Added field
- #6971
DeploymentManager
API changes:- Added method
scenarioActivityHandling: ScenarioActivityHandling
ScenarioActivityHandling
has two variants:AllScenarioActivitiesStoredByNussknacker
DeploymentManager
does not handle any custom ScenarioActivities outside the core Nussknacker mechanism
ManagerSpecificScenarioActivitiesStoredByManager
DeploymentManager
handles custom ScenarioActivities and may be queried about those custom activities for scenario
- default value of
scenarioActivityHandling
isScenarioActivityHandling.AllScenarioActivitiesStoredByNussknacker
- Added method
- #6695
SingleTypingResult
API changes:- Renamed
objType
toruntimeObjType
which indicates a current object in a runtime.
- Renamed
- #6766
- Process API changes:
- Field
ScenarioWithDetails.labels
was added - Field
ScenarioWithDetails.tags
was removed (it had the same value aslabels
and was not used)
- Field
- Process API changes:
- #6988 Removed unused API classes:
MultiMap
,TimestampedEvictableStateFunction
.MultiMap
was incorrectly handled by Flink's default Kryo serializer, so if you want to copy it to your code you should write and register a proper serializer.
REST API changes
- 6944
- New endpoint
/api/scenarioTesting/{scenarioName}/adhoc/validate
- New endpoint
- #6766
- Process API changes:
- PUT
/api/processes/{processName}
- optionalscenarioLabels
field added
- PUT
- Migration API changes:
- POST
/api/migrate
supports v2 request format (withscenarioLabels
field)
- POST
- Process API changes:
Configuration changes
- #6958 Added message size limit in the "Kafka" exceptionHandler:
maxMessageBytes
. Its default value reflects Kafka's default size limit of 1 MB (max.message.bytes
), you need to increase it if your error topic allows for larger messages. Remember to add some margin for Kafka protocol overhead (100 bytes should be enough).
Other changes
-
#6692 Kryo serializers for
UnmodifiableCollection
,scala.Product
etc. are registered based on class of Serializer instead of instance of Serializer. If you have values that were serialized by these Serializers in some state, the state won't be restored after upgrade. -
#6952 Improvement: TypeInformation support for scala.Option: If you used CaseClassTypeInfoFactory with case classes that contain the Option type, the state won't be restored after the upgrade.
Configuration changes
- #6979 Add
type: "activities-panel"
to TheprocessToolbarConfig
which replace deprecated{ type: "versions-panel" }
{ type: "comments-panel" }
and{ type: "attachments-panel" }
In version 1.17.0
Code API changes
- #6248 Removed implicit conversion from string to SpeL
expression (
pl.touk.nussknacker.engine.spel.Implicits
). The conversion should be replaced bypl.touk.nussknacker.engine.spel.SpelExtension.SpelExpresion.spel
. - 6282 If you relied on the default value of the
topicsExistenceValidationConfig.enabled
setting, you must now be aware that topics will be validated by default (Kafka'sauto.create.topics.enable
setting is only considered in case of Sinks). Create proper topics manually if needed. - Component's API changes
- #6711
SingleComponentConfig
changed toComponentConfig
for better domain naming. Associated functions and objects also changed to...ComponentConfig...
. - #6418 Improvement: Pass implicit nodeId to
EagerServiceWithStaticParameters.returnType
Now methodreturnType
fromEagerServiceWithStaticParameters
requires implicit nodeId param - #6462
CustomStreamTransformer.canHaveManyInputs
field was removed. You don't need to implement any other method in replacement, just remove this method. - #6418 Improvement: Pass implicit nodeId to
EagerServiceWithStaticParameters.returnType
- Now method
returnType
fromEagerServiceWithStaticParameters
requires implicit nodeId param
- Now method
- #6340
TestRecordParser
trait used inSourceTestSupport
trait changed to work on lists instead of single records - itsparse
method now takesList[TestRecord]
instead of a singleTestRecord
and returns a list of results instead of a single result. - #6520
ExplicitTypeInformationSource
trait was removed - nowTypeInformation
produced bySourceFunction
passed toStreamExecutionEnvironment.addSource
is detected based onTypingResult
(thanks toTypeInformationDetection
)BlockingQueueSource.create
takesClassTag
implicit parameter instead ofTypeInformation
EmitWatermarkAfterEachElementCollectionSource.create
takesClassTag
implicit parameter instead ofTypeInformation
CollectionSource
'sTypeInformation
implicit parameter was removedEmptySource
'sTypeInformation
implicit parameter was removed
- #6545
FlinkSink.prepareTestValue
was replaced byprepareTestValueFunction
- a non-parameter method returning a function. Thanks to that,FlinkSink
is not serialized during test data preparation.
- #6711
TypingResult
API changes- #6436 Changes to
TypingResult
of SpEL expressions that are maps or lists:TypedObjectTypingResult.valueOpt
now returns ajava.util.Map
instead ofscala.collection.immutable.Map
- NOTE: selection (
.?
) or operations from the#COLLECTIONS
helper cause the map to lose track of its keys/values, reverting itsfields
to an empty Map
- NOTE: selection (
- SpEL list expression are now typed as
TypedObjectWithValue
, with theunderlying
TypedClass
equal to theTypedClass
before this change, and withvalue
equal to ajava.util.List
of the elements' values.- NOTE: selection (
.?
), projection (.!
) or operations from the#COLLECTIONS
helper cause the list to lose track of its values, reverting it to a value-lessTypedClass
like before the change
- NOTE: selection (
- #6566
TypedObjectTypingResult.fields
are backed byListMap
for correctRowTypeInfo
's fields order purpose. If #5457 migrations were applied, it should be a transparent change- Removed deprecated
TypedObjectTypingResult.apply
methods - should be usedTyped.record
factory method Typed.record
factory method takesIterable
instead ofMap
- Removed deprecated
- #6570
TypingResult.canBeSubclassOf
generic parameter checking related changes. Generic parameters ofTyped[java.util.Map[X, Y]]
,Typed[java.util.List[X]]
,Typed[Array[X]]
were checked as they were either covariant or contravariant. Now they are checked more strictly - depending on collection characteristic.Key
parameters ofTyped[java.util.Map[Key, Value]]
is treated as invariantValue
parameters ofTyped[java.util.Map[Key, Value]]
is treated as covariantElement
parameters ofTyped[java.util.List[Element]]
is treated as covariantElement
parameters ofTyped[Array[Element]]
is treated as covariant
- #6436 Changes to
- #6503
FlinkTestScenarioRunner
cleanupsrunWithDataAndTimestampAssigner
method was removed. Instead,timestampAssigner
was added as an optional parameter intorunWithData
- new
runWithDataWithType
was added allowing to test using other types than classes e.g. records
- #6567 Removed ability to set Flink's execution mode
in sources:
TableSource
,CollectionSource
and inFlinkTestScenarioRunner.runWithData
method. Now you can configure it undermodelConfig.executionMode
or for test purposes throughFlinkTestScenarioRunnerBuilder.withExecutionMode
method. - #6610 Add flink node context as parameter to BasicFlinkSink.
Now one can use
FlinkCustomNodeContext
in order to build sink inBasicFlinkSink#toFlinkFunction
method. - #6635 #6643
TypingResultTypeInformation
related changesTypingResultAwareTypeInformationCustomisation
API was removedFlinkCustomNodeContext.typeInformationDetection
is deprecated - useTypeInformationDetection.instance
insteadFlinkCustomNodeContext.valueWithContextInfo.forCustomContext
is is deprecated - useTypeInformationDetection.instance.forValueWithContext
instead
- #6640
BestEffort*Encoder
naming changes:- All
BestEffort*Encoder
classes renamed to fitTo<TargetFormat>(SchemaBased)Encoder
naming schema JsonToNuStruct
renamed toFromJsonDecoder
(to fitFrom<SourceFormat>Decoder
naming schema)ToJsonEncoder
renamed toToJsonEncoderCustomisation
ToJsonBasedOnSchemaEncoder
renamed toToJsonSchemaBasedEncoderCustomisation
- All
- #6586 For now on, the SQL enricher automatically converts types as shown below:
- java.sql.Array -> java.util.List
- java.sql.Time -> java.time.LocalTime
- java.sql.Date -> java.time.LocalDate
- java.sql.Timestamp -> java.time.Instant
- java.sql.Clob -> java.lang.String
REST API changes
- #6437 Removed deprecated operation to create a scenario:
POST
/api/processes/{name}/{category}
. POST/api/processes
should be used instead. - #6213 Improvement: Load resource config only in test context
WithConfig
fromtest-utils
modules behaviour changes: now it only parses given config, without resolving reference configs, system env variables etc.
Configuration changes
- #6635
globalParameters.useTypingResultTypeInformation
parameter was removed. Now we always use TypingResultTypeInformation - #6797
AVRO_USE_STRING_FOR_STRING_TYPE
environment variable is not supported anymore - we always use String for String type in Avro. If you didn't set up this environment variable, no action is needed
In version 1.16.3
Code API changes
- #6527 Changes to
TypingResult
of SpEL expressions that are maps or lists:TypedObjectTypingResult.valueOpt
now returns ajava.util.Map
instead ofscala.collection.immutable.Map
- NOTE: selection (
.?
) or operations from the#COLLECTIONS
helper cause the map to lose track of its keys/values, reverting itsfields
to an empty Map
- NOTE: selection (
- SpEL list expression are now typed as
TypedObjectWithValue
, with theunderlying
TypedClass
equal to theTypedClass
before this change, and withvalue
equal to ajava.util.List
of the elements' values.- NOTE: selection (
.?
), projection (.!
) or operations from the#COLLECTIONS
helper cause the list to lose track of its values, reverting it to a value-lessTypedClass
like before the change
- NOTE: selection (
In version 1.16.0
Code API changes
- #6184 Removed
Remote[]
string part from forwarded username for scenario creation and updates.processes
andprocess_versions
tables won't store username with this part anymore increatedBy
andmodifiedBy
columns. - #6053 Added impersonation mechanism:
OverrideUsername
permission was renamed asImpersonate
and is now used as a global permission.AuthManager
is now responsible for authentication and authorization.AuthenticationResources
handles only plugin specific authentication now. This leads to following changes inAuthenticationResources
API:authenticate()
returnsAuthenticationDirective[AuthenticatedUser]
and notDirective1[AuthenticatedUser]
authenticate(authCredentials)
receivesPassedAuthCredentials
parameter type instead ofAuthCredentials
as anonymous access is no longer part ofAuthenticationResources
logicauthenticationMethod()
returnsEndpointInput[Option[PassedAuthCredentials]]
instead ofEndpointInput[AuthCredentials]
. TheOption[PassedAuthCredentials]
should hold the value that will be passed to the mentionedauthenticate(authCredentials)
.AuthenticationResources
extendsAnonymousAccessSupport
trait:AnonymousAccessSupport
has one methodgetAnonymousRole()
which returns anonymous role name. If you do not want to have an anonymous access mechanism for your authentication method you can extend yourAuthenticationResources
implementation withNoAnonymousAccessSupport
trait.
AuthenticationResources
has a fieldimpersonationSupport
of typeImpersonationSupport
:ImpersonationSupport
is a trait stating whether authentication method supports impersonation. If you don't want impersonation support you can assignNoImpersonationSupport
object to it. If you wish to have it - assignImpersonationSupported
abstract class to it and implementgetImpersonatedUserData(impersonatedUserIdentity)
method which returns required user's data for the impersonation by user'sidentity
.
AnonymousAccess
extendingAuthCredentials
was renamed toNoCredentialsProvided
. It does not represent anonymous access to the designer anymore but simply represents passing no credentials.AuthenticationConfiguration
has one additional Boolean propertyisAdminImpersonationPossible
which defines whether admin users can be impersonated by users with theImpersonate
permission. The property is set tofalse
by default forBasicAuthenticationConfiguration
,OAuth2Configuration
andDummyAuthenticationConfiguration
.
- #6087 #6155
DeploymentManager
API changes:DMRunDeploymentCommand.savepointPath
was replaced byupdateStrategy: DeploymentUpdateStrategy
- In places where
savepointPath = None
was passed, theDeploymentUpdateStrategy.ReplaceDeploymentWithSameScenarioName(StateRestoringStrategy.RestoreStateFromReplacedJobSavepoint)
should be passed - In places where
savepointPath = Some(path)
was passed, theDeploymentUpdateStrategy.ReplaceDeploymentWithSameScenarioName(StateRestoringStrategy.RestoreStateFromCustomSavepoint(path))
should be passed
- In places where
DMValidateScenarioCommand.updateStrategy
was added- In every place should the
DeploymentUpdateStrategy.ReplaceDeploymentWithSameScenarioName(StateRestoringStrategy.RestoreStateFromReplacedJobSavepoint)
should be passed
- In every place should the
deploymentSynchronisationSupport
field was added for purpose of synchronisation of statuses. If synchronisation mechanism is not used in context of given DM, you should returnNoDeploymentSynchronisationSupport
object. The synchronisation mechanism is used by/api/deployments/{deploymentId}/status
endpoint. Other endpoints don't use it.
- #6249
TopicName
trait was introduced and is used in context of specialized topic name (for kafka sources and sinks). Moreover,UnspecializedTopicName
case class was added and is used in places when the specialization is unknown/not needed.
Configuration changes
- #6082 Default Influx database was changed from
esp
tonussknacker_metrics
Other changes
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][https://github.com/TouK/nussknacker/commit/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