Changelog
1.5.0 (16 Aug 2022)
- #3099 Added validation for input nodes names in UnionMemo
- #2992 Moved DeploymentComment validation to backend. Deploy with invalid comment now returns error with validation information, which is shown below input like in case of node parameters.
- #3113 Moved last panel tab Services from Admin tab. Removed Admin tab.
- #3121 Components and Component usages filters are more like those on Scenarios. Scenario status and editor is now visible on Component usages. Some performance issues fixed. Minor visual changes.
- #3136 Improvements: Lite Kafka testkit
- #3178 Improvements: more complex test scenario runner result
- #3134 Metric counters (e.g. nodeCount) are initialized eagerly to minimize problems with initial count computations.
- #3162 OAuth2 access token can be optionally set in cookie (useful e.g. for Grafana proxy authentication)
- #3165 Added configuration
enableConfigEndpoint
which controls whether expose config over http (GET /api/app/config/). Default value is false. - #3169 API endpoint
/api/app/healthCheck
returning short json answer with "OK" status is now not secured - you can use it without authentication - #3075 Added full outer join
- #3183 Attachments table has proper column format (migration is automatic, doesn't need any manual actions)
- #3189 Pass accessToken to iframes
- #3192 Improvements: db enrichers measuring
- #3198 Fix: request response metrics
- #3149 Changed end bracket for SpEL in SQL to
}#
- #3191 Fix: wrong value shown when removing row in MapVariable
- #3227 Allow TAB navigation from expression editors
- #3208 Fix: set maxAge in seconds in set-cookie header
- #3209 ConfigMap for K8 runtime has been split into two config maps (to separate logback conf) and one secret (with model config - which often contains confidential data)
- #3187 #3224 Switch component replaced by Choice component. Moved choice/filter edges conditions configuration to form visible in node window, added few enhancements: ordered of switch edges, only false edge for filter component. "Default" choice edge type, exprVal and expression are now deprecated and disabled in new usages.
- #3187 Fix: duplicated union edges.
- #3210 Expose UI metrics and scenario lite metrics via Prometheus
- #3045 json2avro bump 0.2.11 -> 0.2.15 + fix default values wasn't converted to logical types
- #3223 Fix for encoding/decoding JWT & OIDC tokens - correct handling fields representing epoch time (e.g.
exp
- which represents token expiration time). Also, CachingOAuth2Service was migrated to use sync cache instead of async (evicting data in async cache can be tricky -expireAfterWriteFn
is not applied to not completed futures). Since, it was only usage ofDefaultAsyncCache
- it has been removed from the codebase. - #3239 Added jul-to-slf4j to be sure that all logs going via logback
- #3238 K8 runtime's logback conf can be stored in single ConfigMap for all runtime pods
- #3201 Added literal types
- #3240 Error topic created by default if not exists
- #3245 #3265
#3288 #3295 #3297
#3299 #3309 #3316
#3322 #3337 #3287
Universal kafka source/sink, handling multiple scenarios like: avro message for avro schema, json message for json schema. Legacy, low level kafka components can be turned on by new lowLevelComponentsEnabled flag
- #3317 Support json schema in universal source
- #3332 Config option to handle json payload with avro schema
- #3354 Universal source optimization - if message without schemaId, using cache when getting one
- #3346 UniversalKafkaSink provides also 'raw editor'
- #3345 Swagger 2.2.1, OpenAPI 3.1, jsonSchema typing and deserialization same as in openapi components
- #3249 Confluent 5.5->7.2, avro 1.9->1.11 bump
- #3250 #3302 Kafka 2.4 -> 2.8, Flink 1.14.4 -> 1.14.5
- #3270 Added type representing null
- #3263 Batch periodic scenarios carry processing type to distinguish scenarios with different categories.
- #3269 Fix populating cache in CachingOAuth2Service. It is fully synchronous now.
- #3264 Added support for generic functions
- #3253 Separate validation step during scenario deployment
- #3328 Schema type aware serialization of
NkSerializableParsedSchema
- #3071 3379 More strict avro schema validation: include optional fields validation, handling some invalid cases like putting long to int field, strict union types validation, reduced number of validation modes to lax | strict.
- #3289 Handle asynchronous deployment and status checks better
- #3071 Improvements: Allow to import file with different id
- #3412 Corrected filtering disallowed types in methods
- #3363 Kafka consumer no longer set
auto.offset.reset
toearliest
by default. Instead, Kafka client will use default Kafka value which islatest
- #3371 Fix for: Indexing on arrays wasn't possible
- #3376 (Flink) Handling kafka source deserialization errors by exceptionHandler (https://nussknacker.io/documentation/docs/installation_configuration_guide/model/Flink#configuring-exception-handling)
1.4.0 (14 Jun 2022)
- #2983 Extract Permission to extensions-api
- #3010 Feature: Docker Java Debug Option
- #3003 Streaming-lite runtime aware of k8s resource quotas
- #3028 Force synchronous interpretation for scenario parts that does not contain any services
(enrichers, processors). Disable the feature with flag
globalParameters.forceSyncInterpretationForSyncScenarioPart: false
. - #3006 Fixed passing RESTARTING status to GUI (applies to both Flink and K8 engines)
- #3029 Added
kafka.schemaRegistryCacheConfig
(was hardcoded before) - #3047 Remove deprecated Admin panel tabs that are replaced with Components tab: Search Components and Unused Components (together with API endpoints: /processesComponents and /unusedComponents)
- #3049 Added
collector
component to lite base components - #3065 OIDC: Passing jwt audience in request to /authorize
- #3066 Fix for OAuth2 authentication: Don't redirect when 'invalid_request' error is passed to avoid redirection loop
- #3067 OIDC: More precise error messages during JWT validation
- #3068 OIDC: Support for JWT encoded using symmetric public key
- #3063 #3067 #3070 Add integration with JmxExporter Agent.
- #3077 Change scenarios tab to use new UI by default
- #3084 Change
for-each
fromSingleElementComponent
toLiteCustomComponent
- #3114 Add
flush
method toWithSharedKafkaProducer
- #3034 Fixed sorting on new scenarios list
- #3330 ConfluentUniversalKafkaDeserializer - deserialize using latest schema for topic if no headers or magic-byte/schemaId/payload
1.3.0 (22 Apr 2022)
- #2967 Add json-utils module and move there json-utils from
liteRequestResponseComponents
. - #2955 Add Json schema sink/source (with editor) for request/response. Move inputSchema to properties.
- #2841 Some performance improvements - reduced number of serialization round-trips for scenario jsons
- #2741 #2841 Remove custom scenario (custom process)
- #2773 Using VersionId / ProcessId / ProcessName instead of Long or String
- #2830
RunMode
is renamed toComponanteUseCase
andNormal
value is split into:EngineRuntime
,Validation
,ServiceQuery
,TestDataGeneration
.RunMode.Test
becomesComponanteUseCase.TestRuntime
- #2825, #2868, #2907 API refactorings:
- Division of API by usage:
nussknacker-components-api
,nussknacker-scenario-api
,nussknacker-extensions-api
- API cleanup, some classes moved to
utils
orinterpreter
, untangling dependencies, see migration guide for the details
- Division of API by usage:
- #2886 Add explicit serialVersionUID for classes registered by
Serializers.registerSerializers
. - #2887 Request-response engine in embedded mode
- #2890 Fixed displaying configured labels for node details fields.
- #2920 Close periodic engine actors. Reverse processing type reload - close and then reload.
- #2941 Update Flink to 1.14.4
- #2957 Add
executionConfig.rescheduleOnFailure
flag to control whether failed deployment should be rescheduled for a next run. - #2972 Add Url type to tabs configuration
1.2.0 (11 Feb 2022)
- Added component tab
- #2537 Refactoring of
LazyParameter
API:map
,product
andpure
methods don't requireLazyParameterInterpreter
implicit parameter anymore: can be used in other place thenLazyParameterInterpreterFunction
pure
method moved toLazyParameter
companion object- new
sequence
method added toLazyParameter
companion object map
method now takesTypingResult => TypingResult
instead of justTypingResult
to be visible what is relation between input and output type
- #2535, #2625 Rename
standalone
torequest-response
, move request-response modules tobase
dir. Also - small refactorings in the engine and configuration format - #2483 Embedded DeploymentManager for Lite Streaming.
- #2441 avro sink supports defaults of primitive avro types
- #2498, #2499, #2503, #2539 EspExceptionHandler is removed from ProcessConfigCreator. Flink engine uses now fixed exception handler: FlinkExceptionHandler. All deprecated FlinkEspExceptionHandler implementations are removed.
- #2543 Eager parameters can have helpers injected.
- #2493 kafka configuration is now provided by components provider configuration, if not provided avroKryoGenericRecordSchemaIdSerialization default is set to true - previously false
- #2569 Flink aggregations are now part of flinkBaseComponents.
flink-model-util
is no longer needed and is removed. - #2651 Fixed behaviour of fragments which use components which clear context.
- #2564 Flink union simplification, it now takes only 'Output expression' parameters for branches (previously 'value' parameter), output variable must be of the same type
- #2671 Bumped libs:
- akka 2.15 -> 2.16
- akka-http 10.1 -> 10.2
- akka-http-circe 1.28 -> 1.38
- #2684 Handled 'Restarting' state in Embedded DeploymentManager when the embedded scenario is failing
- #2686 Rename
ServiceWithStaticParameters
toEagerServiceWithStaticParameters
to avoid confusion about lazy and eager parameters used by default - #2695 Replaced
nodeId
withNodeComponentInfo
inNuExceptionInfo
- #2746
modelConfig.classPath
can handle directories - #2775 Fixed: kafka-registry-typed-json source was recognizing logical types during typing but during evaluation were used raw, underlying types
- #2790 Update Flink to 1.14.3
- #2794 Added
for-each
component to basic flink components
1.1.1 (01 Feb 2022)
- #2660 Fix for handling errors after split in async mode
- #2744 Ugly resource waste fixed in component drag preview
- #2754 Fix error with pasting node,
- #2807 Fix default values for GenericNodeTransformation
1.1.0 (07 Dec 2021)
- #2176 Allow to enrich periodic scenario config on initial schedule and each deployment.
- #2179 Permission allowing for editing scenario on FE, but not saving etc.
- #2150 Better handling of multiple schedules in batch periodic engine - fixed running one time scenarios and improved current scenario status reporting.
- #2208 Upgrade libraries: cats 2.6.x, cats-effect 2.5.x, circe 0.14.x
- #1422 Remove
ServiceReturningType
andWithExplicitMethod
, added helpers, small refactor - #2278 SQL Variable is removed
- #2280 Default values for parameters can be setup programmatically now - thanks to
@DefaultValue
annotation andParameter.defaultValue
field. - #2293 Enhancement: change
nodeCategoryMapping
configuration tocomponentsGroupMapping
- #2169 Add Apache Ignite support to SQL Component by implementing a custom DB metadata provider that extends the standard JDBC Driver with missing features.
- #2301 #2366
#2409 #2477 Simplification of component API:
GenericNodeTransformation.initialParameters
was removedGenericNodeTransformation.fallbackFinalResult
introduced for not handle step, with default graceful strategyGenericNodeTransformation.contextTransformation
now handlesParameterValidator
properly. Invalid value is handled asFailedToDefineParameter
andGenericNodeTransformation.implementation
is not invoked in this caseFinalResults.forValidation
utility method added to easily handle situation when you need to make some validation on context of variables (e.g. add variable checking if it already exists)
- #2245 Periodic process scheduler retries failed scenario deployments based on PeriodicBatchConfig. Breaking change in PeriodicProcessListener FailedEvent. Failed event is split into FailedOnDeployEvent and FailedOnRunEvent. Please note that this mechanism only retries when failure on deployment occurs - failure recovery of running scenario should be handled by restart strategy
- #2304 Upgrade to Flink 1.14
- #2295
FlinkLazyParameterFunctionHelper
has additional methods to handle exceptions during evaluation gracefully - #2300 Enhancement: refactor and improvements at components group
- #2347 Support for implicit type conversions between
String
and various value classes (Locale
etc.) - #2346 Remove
endResult
fromSink
in graph. - #2331 #2496 Refactor
nussknacker-avro-flink-util
module. Move non-flink specific classes to newnussknacker-avro-util
module. - #2348 #2459 #2486
#2490 #2496
Refactor
nussknacker-kafka-flink-util
module. Move non-flink specific classes tonussknacker-kafka-util
module. - #2344 Redesign of
#DATE
and#DATE_FORMAT
utilities. - #2305 Enhancement: change
processingTypeToDashboard
configuration toscenarioTypeToDashboard
- #2374 Auto-loaded
ComponentProvider
s - #2337 Extract base engine from standalone
- Common functionality of base engine (i.e. microservice based, without Flink) is extracted to
base-api
andbase-runtime
- It's possible to use generic effect type instead of
Future
- Possibility to accumulate errors
- New API for custom components (transformers and sinks)
- Common functionality of base engine (i.e. microservice based, without Flink) is extracted to
- #2349 Removed module
queryable-state
,FlinkQueryableClient
was moved tonussknacker-flink-manager
. PrettyValidationErrors
,CustomActionRequest
andCustomActionResponse
moved fromnussknacker-ui
tonussknacker-restmodel
.- #2361 Removed
security
dependency fromlistener-api
.LoggedUser
replaced with dedicated class inlistener-api
. - #2367, #2406 Simple kafka-based streaming scenario interpreter. Stateless, with basic kafka sinks and sources. This is MVP, not intended for direct usage, more work with sources, sinks and invoking will come in next PRs
- #2377 Remove
clazz
fromSourceFactory
. It was used mainly for test sources. - #2534 Remove generic parameter from
Source
andSourceFactory
. It was used mainly to determineTypingResult
inSourceFactory.noParam
- #2397 Common
EngineRuntimeContext
lifecycle andMetricsProvider
, cleaning unnecessary dependencies on Flink - #2486 Aggregates now producing context id in similar format as sources - will be visible in "Test case" during usage of tests mechanism
- #2465 aggregate-sliding emitWhenEventLeft parameter changed default value from true to false
- #2474 Interpreter return type changed from
F[Either[List[InterpretationResult], EspExceptionInfo[_ <: Throwable]]]
toF[List[Either[InterpretationResult, EspExceptionInfo[_ <: Throwable]]]]
. Hence, e.g. multiple branches in Graph can be evaluated, both positively and negatively at the same time. - #2540 It's possible to use different Effects than
Future
in request-response (standalone) runtime.InvocationMetrics
are no longer automatically computed, as they areFuture
dependent - seeStandaloneRequestHandler
how to enable them.
1.0.0 (24 Sep 2021)
- #1968
BestEffortJsonEncoder
usesServiceLoader
mechanism to load additional encoders. - #1439 Upgrade to Flink 1.13
- #1993 Demo was moved to https://github.com/TouK/nussknacker-quickstart. Some additional refactors done: logback configuration enhancements, simpler run.sh script, removed docker defaults from default configs.
- #2105 #2112 Better handling Flink's job deploying - we report job initialization as a "DURING_DEPLOY" instead of "RUNNING" now, and we are checking available slots on Flink before deploy
- #2152 Possibility to create
SchedulePropertyExtractor
using deployment manager's configuration. - #2133 SQL Variable is hidden in generic model
- #2101 Global permissions can be arbitrary string, can configure all top tabs (by default
Scenarios
is available) - #2103 Counts work correctly with different timezones,
counts.queryMode
defaults toSumOfDifferencesForRestarts
- #2104 SQL component can retrieve table names for completion
- #2028 Limit (row and bytes) for generating and using test data
- Various improvements in security/OAuth components
- #2046 Additional functions in generic model
- Security improvements:
- #2095 Remove business view
- #2110 Remove node grouping
- #2098 Correct timestamps for tests of Kafka sources
- #2108 Enhanced class extraction settings, fewer unnecessary methods
- #2191 KafkaAvroSink performance fix
- UI enhancements:
- #1706 New window manager, consistent behaviour, many improvements, e.g. modals can be expanded to full screen, fix display of fragments in FF
- #2184, #2101 Fix undo breaking UI in certain circumstances
- #2181, #1975 Remove spurious 'unsaved changes' after opening aggregation nodes
- #2202 Correct hashes of FE assets
- #2097, #2178 Pasting nodes in correct places
- #2003 Counts dialog fixes: timezone handling, datepicker allows editing from keyboard
- #2111 Correct graph display after opening fragment
- #2087 Pan and zoom animation
- #2081 Fix switch behaviour after changing condition
- #2071 Fix pasting cell on multiple edges
- #1978 Removed unclear node details panel
0.4.0 (12 Aug 2021)
- More precise TypeInformation generation
- #1361 Lazy vars removal
- #1363 Open/close only services that are actually used in process
- #1367 Custom actions - first, experimental version
- Migration of CI to github actions
- #1382 First E2E FE tests
- #1373 Ability to load custom model config programmatically
- #1406 Eager services - ability to create service object using static parameters
- #962 New ways of querying InfluxDB for counts, integration tests, no default database name in code
- #1428 Kafka SchemaRegistry source/sink can use JSON payloads. In this PR we assume one schema registry contains either json or avro payloads but not both.
- #1445 Small refactor of RecordFormatter, correct handling different formatting in kafka-json in test data generation
- #1433 Pass DeploymentData to process, including deploymentId and possible additional info
- #1458
PeriodicProcessListener
allows custom handling ofPeriodicProcess
events - #1466
ProcessManager
API allows to return ExternalDeploymentId immediately from deploy - #1405 'KafkaAvroSinkFactoryWithEditor' for more user-friendly Avro message definition.
- #1514 Expose DeploymentData in Flink UI via
NkGlobalParameters
- #1510
FlinkSource
API allows to create stream ofContext
(FlinkSource API and test support API refactoring). - #1497 Initial support for multiple (named) schedules in
PeriodicProcessManager
- #1499 ClassTag is provided in params in avro key-value deserialization schema factory:
KafkaAvroKeyValueDeserializationSchemaFactory
- #1533 Fix: Update process with same json
- #1546 Unions (e.g after split) are possible in standalone mode. Also, it's possible to define transformers which operate on all results (e.g. for sorting recommendations)
- #1547 Publish first version of BOM including dependencyOverrides
- #1543
ComponentProvider
API enables adding new extensions without changing e.g.ProcessConfigCreator
- #1471 Initial version of session window aggregate added (API may change in the future).
- #1631 Ability to use multiple config files with
nussknacker.config.location
system property - #1512
KafkaSourceFactory
is replaced with source that provides additional #inputMeta variable with event's metadata. - #1663 Flink restart strategies and exception consumers can now be configured.
- #1728 Replace schemaRegistryClient and recordFormatter in
SchemaRegistryProvider
with their factories. - #1651
KafkaAvroSourceFactory
provides additional #inputMeta variable with event's metadata. - #1756
TypingResultAwareTypeInformationDetection
can be used to serialize aggregates more efficiently - #1772 Fix for Spel validation when we try use not existing method reference
- #1741 KafkaExceptionConsumer can be configured to send errors to Kafka
- #1809 Performance optimization for aggregates: do not update state if added element is neutral for current state
- #1886 Performance optimization for aggregates: do not save context in state. Added
#AGG
utility for easier switching from simple aggregating functions like'Sum'
to more complex#AGG.map()
- #1820 Added missing support for some logical types (LocalDate, LocalTime, UUID) in json encoding
- #1799 ConfluentAvroToJsonFormatter produces and reads test data in valid json format with full kafka metadata and schema ids.
- #1839 Set up
explicitUidInStatefulOperators
model's flag totrue
by default. - #1357 Add run mode to nodes to be able to determine if we are inside e.g. test process run.
Run mode is can be declared as a dependency in generic node transformations. Nodes created via
@MethodToInvoke
can declareRunMode
as an implicit parameter.RunMode
is also available inFlinkCustomNodeContext
. - Various naming changes:
- Performance fixes:
- #1321 Exception handler accessible via custom node context, avro record encoding errors reported by exception handler
0.3.0 (17 Nov 2020)
- #1298 Feature flag
avroKryoGenericRecordSchemaIdSerialization
for avro kryo serialization optimization (default = false) - #1315 Spring bumped 5.1.4 -> 5.1.19
- #1312 Ficus bumped 1.4.1 -> 1.4.7
- #1288 Namespaces can be configured for ObjectNaming
- #1261 Fix: Access to
map.missingKey
causedProperty or field cannot be found on object
- #1244 Ability to define
variablesToHide
inParameter
- #1165 Typed global variables
- #1128 Union-memo transformer
- #1054 Tabbed dark process list
- Configuration improvements (library upgrade, conventions): #1151, #1166
- #873, #1044 Flink upgrade (to 1.11)
- More graceful handling of Flink compatibility issues (in particular, ```FlinkCompatibilityProvider`` trait introduced, also ProcessManager implementations are separated from UI to allow easier changes in deployments): #1150, #1218
- #1183 New back to process button on metrics
- #1188 Fix env label and provide nussknacker logo
- #249 Inferred expression type in node modal
- #1255 Moved displaying
Metrics tab
tocustomTabs
- #1257 Improvements: Flink test util package
- #1287 OAuth2: add accessTokenRequestContentType parameter
- #1290 Own kryo serializers can be provided through SPI
- #1303 TypedObjectTypingResult can have additional info (e.g. Schema for GenericRecord)
0.2.2 (03 Sep 2020)
- #1175 Fix for: BestEffortAvroEncoder haven't produced record with logical types for missing field with default values
- #1173 Fix for: Avro source wasn't be able to read record with schema with invalid defaults
0.2.1 (31 Aug 2020)
- #1127 Fix too small count values
- #1133 Improvements: More flexible TestReporter instancies implementation
- #1131 Fix: Disable "deploy" & "metrics" buttons for subprocess
- #1148 Fix FE regexp for match node id
0.2.0 (07 Aug 2020)
- #1099 New outer-join node
- #1024 Added default async interpretation value configured by
asyncExecutionConfig.defaultUseAsyncInterpretation
(false if missing). - #879 Metrics can now use Flink variables for better reporting, it's recommended to use InfluxDB native protocol instead of legacy Graphite protocol to send metrics to InfluxDB.
- #940 More detailed node errors
- #949 JVM options can be configured via JDK_JAVA_OPTIONS env variable (in docker and standalone distribution)
- #954 Correct handling of types in empty inline lists
- #944 System cache mechanism
- #704 Preloaded creator panel node icons
- #943 Literal min / max validators
- #976 Fixed save button & groups expand for businessView
- #973 Textarea editor
- #987 Optimized graph rendering time, fixed minor bugs (expand group icon, view center & fit after layout).
- Introduction to KafkaAvro API: #871, #881, #903, #981, #989, #998, #1007, #1014, #1041,
- Performance improvements in interpreter: #1008, #1013. The second one also removes Future[] from expression evaluation
- Dynamic parameters: filter validation, GenericNodeTransformation introduction (for CustomNodes, Sources, Sinks) - also handling dynamic parameters on UI: #978, #996, #1001, #1011
- #988 Json editor
- #1066 Duration and period editors fixes
- #1126 New nodes: periodic source, delay and dead-end
0.1.2 (15 May 2020)
- #965 Added new, 'aggregate-tumbling' node.
- #957 Custom node
aggregate
has now additional aggregation functionSum
. Also was changed parameter fromwindowLengthInSeconds
towindowLength
with human friendly duration input.
0.1.1 (06 May 2020)
- Branch parameters now can be eager (computed during process compilation)
- More restrictive type checking in SpEL - mainly added verification of types of method's paramaters
- Added support for Kafka consumer group strategies - setted up by
kafka.consumerGroupNamingStrategy
configuraton option - Bugfixes for joins
0.1.0 (30 Apr 2020)
- Added support for explicitly setting uids in operators - turned on by
explicitUidInStatefulOperators
model's flag. By default setted up to false. - Old way of configuring Flink and model (via
flinkConfig
andprocessConfig
) is removed.processTypes
configuration should be used from now on. - Change of additional properties configuration
0.0.12 (26 Oct 2019)
- Cross builds with Scala 2.11 and 2.12
- First version of join nodes
- OAuth2 authentication capabilities
- Migration of Argonaut to Circe
- Preliminary version of dictionaries in expressions
- Major upgrade of frontend libraries (React, Redux, etc)
- Various usability improvements
0.0.11 (1 Apr 2019)
0.0.10 (13 Nov 2018)
0.0.9 (13 Jul 2018)
0.0.8 (7 May 2018)
- expressions code syntax highlighting
- source/sink params as expressions
- multiline expression suggestions
- method signature and documentation in code suggestions
- inject new node after dragging on edge
- Query services tab in UI
- subprocess disabling
- display http request-response for query service tab
- flink kafka 0.11 connector
- dynamic source return type
- SQL can be used as expression language
- Processes page rendering optimized
- suggestions for projections/selections in spel
- upgrade to flink 1.4.2
- upgrade to scala 2.11.12
- Make sinks disableable
0.0.7 (22 Dec 2017)
- global imports in expressions
- deployment standalone on multiple nodes
- typed SpEL expressions - first iteration
- can post process standalone results
- support for java services
- handling get requests in standalone mode
- metric fixes for standalone
- compare with other env
- split in request/response mode by expression
- ProcessConfigCreator Java API support added
- extendable authentication
- comparing environments - first part, can compare processes
- subprocess versions
- process migrations + some refactoring
- async execution with toggle
- better exception for errors in service invocations
- nussknacker java api
- spring version bump because of SPR-9194