dolphinscheduler icon indicating copy to clipboard operation
dolphinscheduler copied to clipboard

[Improvement][Master] switch task doesn't support includes function

Open ChaoquanTao opened this issue 1 year ago • 1 comments

Search before asking

  • [X] I had searched in the issues and found no similar feature requirement.

Description

I want to execute condition like ['abc','def'].includes(${output}) in switch task, but error occurs:

javax.script.ScriptException: TypeError: ["abc", "efg"].includes is not a function in <eval> at line number 1
	at jdk.nashorn.api.scripting.NashornScriptEngine.throwAsScriptException(NashornScriptEngine.java:470)
	at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:454)
	at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:406)
	at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:402)
	at jdk.nashorn.api.scripting.NashornScriptEngine.eval(NashornScriptEngine.java:155)
	at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:264)
	at org.apache.dolphinscheduler.server.master.utils.SwitchTaskUtils.evaluate(SwitchTaskUtils.java:35)

Actually the includes function can be supported by using polyfills as https://stackoverflow.com/questions/47543566/scriptengine-javascript-doesnt-support-includes mentioned.

Are you willing to submit a PR?

  • [X] Yes I am willing to submit a PR!

Code of Conduct

ChaoquanTao avatar Aug 28 '24 07:08 ChaoquanTao

Can you provide reproduce steps?

SbloodyS avatar Aug 28 '24 08:08 SbloodyS

create a workflow containing a switch task. set the condition like ['abc','def'].includes('abc'), and you will get the exception. I use the 3.2.0 version, and I also tried in 3.2.2, same situation.

ChaoquanTao avatar Aug 29 '24 07:08 ChaoquanTao

I see. Would you like to fix it? @ChaoquanTao

SbloodyS avatar Sep 02 '24 07:09 SbloodyS

no problem

ChaoquanTao avatar Sep 03 '24 01:09 ChaoquanTao