Я использую Mule 4.1 и Anypoint Studio 7.3.
У меня есть рабочий процесс, который использует соединитель массовой вставки базы данных для вставки массива записей JSON в базу данных SQL Server.
Когда я развертываю приложение Mule и вызываю API, рабочий процесс успешно завершается, и я вижу новые записи, вставленные в таблицу базы данных.Все кажется хорошим, но есть ошибка (красный восклицательный знак) рядом с соединителем массовой вставки базы данных в рабочем процессе и напротив панели ввода метаданных с правой стороны, когда я нажимаю на соединитель.Ошибка отображается как ошибка распространения и имеет следующие подробности ошибки:
Я прочитал, что это потому, что я использую нотацию $ (vars.dataName) в своем SQL, но я хочу сделать это динамическим, поэтому яне нужно копировать SQL каждый раз, когда имя таблицы изменяется, так как остальная часть запроса совпадает, и я хотел передать имя таблицы как переменную из потока, который вызывает поток с помощью соединителя вставки базы данных.
Есть ли способ сделать это?Я пытался использовать свойства, но мне нужно иметь возможность изменить имя свойства для ссылки на другую таблицу, когда это необходимо.
Код базы данных
<db:sql >#["INSERT INTO $(vars.dataName)
(
$(vars.dataName)ID,
Code,
Comments,
CreatedBy,
CreatedDate
)
VALUES
(
NEWID(),
:Code,
:Comments,
'SA',
GETDATE()
)"]</db:sql>
Сообщение об ошибке
org.mule.runtime.module.extension.internal.runtime.ValueResolvingException: Unable to resolve value for the parameter: sql
at org.mule.runtime.module.extension.internal.runtime.operation.OperationParameterValueResolver.getParameterValue(OperationParameterValueResolver.java:80)
at org.mule.runtime.module.extension.internal.metadata.MetadataMediator.getMetadataKeyObjectValue(MetadataMediator.java:309)
at org.mule.runtime.module.extension.internal.metadata.MetadataMediator.getMetadata(MetadataMediator.java:154)
at org.mule.runtime.module.extension.internal.runtime.ExtensionComponent.lambda$null$13(ExtensionComponent.java:298)
at org.mule.runtime.core.api.util.ExceptionUtils.tryExpecting(ExceptionUtils.java:227)
at org.mule.runtime.core.api.util.ClassUtils.withContextClassLoader(ClassUtils.java:849)
at org.mule.runtime.core.api.util.ClassUtils.withContextClassLoader(ClassUtils.java:813)
at org.mule.runtime.module.extension.internal.runtime.ExtensionComponent.lambda$getMetadata$14(ExtensionComponent.java:297)
at org.mule.runtime.module.extension.internal.runtime.ExtensionComponent.runWithMetadataContext(ExtensionComponent.java:354)
at org.mule.runtime.module.extension.internal.runtime.ExtensionComponent.getMetadata(ExtensionComponent.java:296)
at org.mule.runtime.core.internal.metadata.MuleMetadataService.lambda$getComponentMetadata$4(MuleMetadataService.java:185)
at org.mule.runtime.core.internal.metadata.MuleMetadataService.exceptionHandledMetadataFetch(MuleMetadataService.java:141)
at org.mule.runtime.core.internal.metadata.MuleMetadataService.getComponentMetadata(MuleMetadataService.java:184)
at org.mule.runtime.core.internal.metadata.MuleMetadataService.getOperationMetadata(MuleMetadataService.java:83)
at org.mule.runtime.config.internal.LazyMetadataService.lambda$getOperationMetadata$1(LazyMetadataService.java:69)
at java.util.Optional.orElseGet(Optional.java:267)
at org.mule.runtime.config.internal.LazyMetadataService.getOperationMetadata(LazyMetadataService.java:69)
at com.mulesoft.agent.services.metadata.MuleAgentMetadataService.lambda$getOperationMetadata$2(MuleAgentMetadataService.java:74)
at com.mulesoft.agent.services.metadata.MuleAgentMetadataService.withMetadataService(MuleAgentMetadataService.java:144)
at com.mulesoft.agent.services.metadata.MuleAgentMetadataService.getOperationMetadata(MuleAgentMetadataService.java:74)
at com.mulesoft.agent.external.handlers.metadata.MetadataRequestHandler.lambda$getOperationMetadata$3(MetadataRequestHandler.java:200)
at com.mulesoft.agent.util.ResponseHelper.response(ResponseHelper.java:88)
at com.mulesoft.agent.external.handlers.metadata.MetadataRequestHandler.getOperationMetadata(MetadataRequestHandler.java:198)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81)
at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:151)
at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:171)
at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:152)
at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:104)
at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:387)
at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:331)
at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:103)
at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:271)
at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271)
at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267)
at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
at org.glassfish.jersey.internal.Errors.process(Errors.java:267)
at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:297)
at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:254)
at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1028)
at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:372)
at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:381)
at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:344)
at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:221)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:865)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1655)
at com.mulesoft.agent.rest.RequestLoggingFilter.doFilter(RequestLoggingFilter.java:95)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:533)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1595)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1340)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:473)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1564)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1242)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
at org.eclipse.jetty.server.Server.handle(Server.java:503)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:364)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260)
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)
at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:765)
at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:683)
at java.lang.Thread.run(Thread.java:748)
Caused by: org.mule.runtime.core.api.expression.ExpressionRuntimeException: "You called the function 'AnonymousFunction' with these arguments:
1: Null (null)
2: String ("ID,\nCode,\nComments,\nCreatedBy,\nCreatedD...)
But it expects arguments of these types:
1: String
2: String
Trace:
at Anonymous function (Unknown)
at main (Unknown)" evaluating expression: ""INSERT INTO $(vars.dataName)
(
$(vars.dataName)ID,
Code,
Comments,
CreatedBy,
CreatedDate
)
VALUES
(
NEWID(),
:Code,
:Comments,
'SA',
GETDATE()
)"".
Caused by: org.mule.runtime.api.el.ExpressionExecutionException: You called the function 'AnonymousFunction' with these arguments:
1: Null (null)
2: String ("ID,\nCode,\nComments,\nCreatedBy,\nCreatedD...)
But it expects arguments of these types:
1: String
2: String
Trace:
at Anonymous function (Unknown)
at main (Unknown)
Спасибо за любую помощь