issue.fields.becomes field not found

Не понимаю почему код падает на строке

issue.fields.becomes(STATUS_DEV, 'В разработке')

Но при этом этот код отрабатывает корректно

issue.fields.isChanged(STATUS_DEV)

 

Сам код:

var entities = require('@jetbrains/youtrack-scripting-api/entities');

const STATUS_DEV = 'Статус (DEV)';

exports.rule = entities.Issue.onChange({
title: 'В работе',

guard: function (ctx) {
return true;
},

action: function (ctx) {
var issue = ctx.issue;

console.log(issue.fields.isChanged(STATUS_DEV));
console.log(issue.fields.becomes(STATUS_DEV, 'В разработке'));
},

requirements: {}
});

 

Результат:

artemev@0.0.0.0 13 июл. 2021 18:48
true

artemev@0.0.0.0 13 июл. 2021 18:48
Processing issue ECOM-1185:
No field with name Статус (DEV) found for type Issue
<js>.findField(dir1619082897652/@jetbrains/youtrack-scripting-api/entities.js:237)
<js>.becomes(dir1619082897652/@jetbrains/youtrack-scripting-api/entities.js:410)
<js>.value(dir1619082897652/@jetbrains/youtrack-scripting-api/entities.js:328)
<js>.action(dir1619082897652/statuses_ecom/in_work.js:16)
<js>.:anonymous(ctx.js:88)
org.graalvm.polyglot.Value.execute(Value.java:457)
jetbrains.youtrack.workflow.visitors.RuleVisitor$findAction$1.action(RuleVisitor.kt:49)
jetbrains.youtrack.workflow.model.StatelessRule$doHandle$1.invoke(StatelessRule.kt:36)
jetbrains.youtrack.workflow.model.StatelessRule$doHandle$1.invoke(StatelessRule.kt:5)
jetbrains.youtrack.workflow.model.Rule.withLogging(Rule.kt:288)
jetbrains.youtrack.workflow.model.StatelessRule.doHandle(StatelessRule.kt:26)
jetbrains.youtrack.workflow.model.Rule$handle$1.invoke(Rule.kt:92)
jetbrains.youtrack.workflow.model.Rule$handle$1.invoke(Rule.kt:40)
jetbrains.youtrack.scripts.internals.RunInContextKt.runInContext(RunInContext.kt:17)
jetbrains.youtrack.workflow.model.Rule.runInContext(Rule.kt:344)
jetbrains.youtrack.workflow.model.Rule.handle(Rule.kt:91)
jetbrains.youtrack.workflow.ext.RulesRunner.handleBeforeFlush(RulesRunner.kt:171)
jetbrains.youtrack.workflow.ext.RulesRunner.callRules(RulesRunner.kt:132)
jetbrains.youtrack.workflow.ext.RulesRunner.run(RulesRunner.kt:79)
jetbrains.youtrack.workflow.ext.WorkflowIssueListenerImpl.beforeFlushBeforeConstraints(WorkflowIssueListenerImpl.kt:63)
com.jetbrains.teamsys.dnq.database.TransientSessionImpl$notifyBeforeFlushListeners$2.invoke(TransientSessionImpl.kt:752)
com.jetbrains.teamsys.dnq.database.TransientSessionImpl$notifyBeforeFlushListeners$2.invoke(TransientSessionImpl.kt:45)
com.jetbrains.teamsys.dnq.database.TransientSessionImpl$forAllListeners$1.invoke(TransientSessionImpl.kt:1309)
com.jetbrains.teamsys.dnq.database.TransientSessionImpl$forAllListeners$1.invoke(TransientSessionImpl.kt:45)
com.jetbrains.teamsys.dnq.database.TransientEntityStoreImpl.forAllListeners$dnq_transient_store(TransientEntityStoreImpl.kt:319)
com.jetbrains.teamsys.dnq.database.TransientSessionImpl.forAllListeners(TransientSessionImpl.kt:1307)
com.jetbrains.teamsys.dnq.database.TransientSessionImpl.notifyBeforeFlushListeners(TransientSessionImpl.kt:752)
com.jetbrains.teamsys.dnq.database.TransientSessionImpl.beforeFlush(TransientSessionImpl.kt:708)
com.jetbrains.teamsys.dnq.database.TransientSessionImpl.flushChanges(TransientSessionImpl.kt:510)
com.jetbrains.teamsys.dnq.database.TransientSessionImpl.flush(TransientSessionImpl.kt:190)
jetbrains.charisma.main.YouTrackTransactionalFilter.filter(RestFilters.kt:110)
org.glassfish.jersey.server.ContainerFilteringStage$ResponseFilterStage.apply(ContainerFilteringStage.java:196)
org.glassfish.jersey.server.ContainerFilteringStage$ResponseFilterStage.apply(ContainerFilteringStage.java:163)
org.glassfish.jersey.process.internal.Stages.process(Stages.java:171)
org.glassfish.jersey.server.ServerRuntime$Responder.processResponse(ServerRuntime.java:442)
org.glassfish.jersey.server.ServerRuntime$Responder.process(ServerRuntime.java:434)
org.glassfish.jersey.server.ServerRuntime$2.run(ServerRuntime.java:329)
org.glassfish.jersey.internal.Errors$1.call(Errors.java:271)
org.glassfish.jersey.internal.Errors$1.call(Errors.java:267)
org.glassfish.jersey.internal.Errors.process(Errors.java:315)
org.glassfish.jersey.internal.Errors.process(Errors.java:297)
org.glassfish.jersey.internal.Errors.process(Errors.java:267)
org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:317)
org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:305)
org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1154)
org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:473)
org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:427)
jetbrains.youtrack.webapp.servlets.GapRestServlet.service(GapRestServlet.kt:82)
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:341)
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:228)
org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:763)
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1651)
jetbrains.youtrack.webapp.filters.SecurityResponseHeadersFilter.doFilter(SecurityResponseHeadersFilter.kt:18)
jetbrains.youtrack.webapp.filters.FilterAdapter.doFilter(FilterAdapter.kt:26)
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1638)
jetbrains.youtrack.webapp.filters.LoggingServletRequestFilter.doFilter(LoggingServletRequestFilter.kt:33)
jetbrains.youtrack.webapp.filters.FilterAdapter.doFilter(FilterAdapter.kt:26)
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1638)
jetbrains.youtrack.gaprest.filters.HttpContextAccessorFilter.doFilter(HttpContextAccessorFilter.kt:22)
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1638)
webr.framework.controller.BaseApplicationServletFilter.doFilter(BaseApplicationServletFilter.java:24)
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1638)
jetbrains.youtrack.webapp.filters.MdcProviderServletFilter.doFilter(MdcProviderServletFilter.kt:17)
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1638)
jetbrains.youtrack.webapp.filters.CorsRequestFilter.doFilter(CorsRequestFilter.kt:57)
jetbrains.youtrack.webapp.filters.FilterAdapter.doFilter(FilterAdapter.kt:26)
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1638)
jetbrains.youtrack.webapp.filters.InitOrderFilter.doFilter(InitOrderFilter.kt:37)
jetbrains.youtrack.webapp.filters.FilterAdapter.doFilter(FilterAdapter.kt:26)
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1638)
org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:567)
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:767)
org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:602)
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235)
org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1610)
org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)
org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1377)
org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)
org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:507)
org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1580)
org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)
org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1292)
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:234)
org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:146)
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
org.eclipse.jetty.server.Server.handle(Server.java:501)
org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:383)
org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:556)
org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:375)
org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:273)
org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)
org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)
org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)
org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336)
org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313)
org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171)
org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:129)
org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:375)
org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:806)
org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:938)
java.base/java.lang.Thread.run(Thread.java:834)
0
7 comments

Здравствуйте!

А у Вас в проекте есть поле "Статус (DEV)"? Попробуйте, пожалуйста, отредактировать секцию requirements таким способом:

requirements: {
"Статус (DEV)": {
type: entities.State.fieldType,
'В разработке': {}
}
}

Если у этого поля не тип State, то укажите нужный тип.

1

Поле есть

console.log(issue.fields.isChanged(STATUS_DEV)); <<<----- этот код отрабатывает
console.log(issue.fields.becomes(STATUS_DEV, 'В разработке')); <<<----- а этот код выдаёт ошибку что поля нет, магия
¯\_(ツ)_/¯

0

Если Вы используете какое-либо поле и его значение в воркфлоу, то их нужно указать в требованиях.

Так как у Вас поле типа enum, добавьте вот такие требования в воркфлоу:

requirements: {
"Статус (DEV)": {
type: entities.EnumField.fieldType,
'В разработке': {}
}
}

С ними ошибки быть не должно.

1

Прописал

requirements: {
"Статус (DEV)": {
type: entities.EnumField.fieldType,
'В работе': {}
}
}

Ошибка всё ещё присутствует

 

0

Создал точно такое же поле, но с другим названием. С новым полем workflow  работает нормально.

0

Проблема появилась после редактирования полей, после перезапуска контейнера с ютреком проблема пропала, похоже что то закешировалось и из-за этого работало некорректно

0

Действительно, возможно, предыдущее поле было закешировано. Рада, что Вы разобрались и проблема решилась!

1

Please sign in to leave a comment.