I am trying to parse a string by using split. Unfortunately, Orchestrator complains that "Cannot read property "length" from null".
My code:
System.log( "inputExecArgs = " + inputExecArgs ); Server.log( "inputExecArgs = " + inputExecArgs ); System.log( "Object.prototype.toString.call( inputExecArgs ) = " + Object.prototype.toString.call( inputExecArgs ) ); Server.log( "Object.prototype.toString.call( inputExecArgs ) = " + Object.prototype.toString.call( inputExecArgs ) ); var inputTokens = inputExecArgs.split( "{" ); System.log( "inputTokens = " + inputTokens ); Server.log( "inputTokens = " + inputTokens ); if ( inputTokens = null ){ System.log( "inputTokens is null" ); Server.log( "inputTokens is null" ); }else{ System.log( "inputTokens not null" ); Server.log( "inputTokens not null" ); System.log( "Object.prototype.toString.call( inputTokens ) = " + Object.prototype.toString.call( inputTokens ) ); Server.log( "Object.prototype.toString.call( inputTokens ) = " + Object.prototype.toString.call( inputTokens ) ); System.log( "----- begin iterating through inputTokens -----" ); Server.log( "----- begin iterating through inputTokens -----" ); for (var key in inputTokens) { //if (tokens.hasOwnProperty(key)) { System.log( key + " -> " + inputTokens[key] ); Server.log( key + " -> " + inputTokens[key] ); //} } System.log( "----- end iterating through inputTokens -----" ); Server.log( "----- end iterating through inputTokens -----" ); var tokensLength = tokens.length System.log( "tokensLength = " + tokensLength ); Server.log( "tokensLength = " + tokensLength ); }
My result:
[2017-11-17 13:50:28.864] [I] ******************************************************************************* [2017-11-17 13:50:28.868] [I] Start: Root workflow name = Andrew.Parse_input_properties [2017-11-17 13:50:28.872] [I] Start: Root workflow id = d5f4738e-e947-45d2-a123-cc62696c1a31 [2017-11-17 13:50:28.876] [I] Start: Current workflow name = Andrew.Parse_input_properties [2017-11-17 13:50:28.880] [I] Start: Current workflow id = d5f4738e-e947-45d2-a123-cc62696c1a31 [2017-11-17 13:50:28.886] [I] Start: Current workflow startDate = 2017-11-17 20:50:27 [2017-11-17 13:50:28.891] [I] ******************************************************************************* [2017-11-17 13:50:28.907] [I] -------------------------------------------------------------------------------- [2017-11-17 13:50:28.911] [I] Start: parse string for curly bracket properties [2017-11-17 13:50:28.920] [I] [2017-11-17 13:50:28.924] [I] inputExecArgs = } {token1} {token2} { [2017-11-17 13:50:28.927] [I] Object.prototype.toString.call( inputExecArgs ) = [object String] [2017-11-17 13:50:28.932] [I] inputTokens = } ,token1} ,token2} , [2017-11-17 13:50:28.936] [I] inputTokens not null [2017-11-17 13:50:28.940] [I] Object.prototype.toString.call( inputTokens ) = [object Main] [2017-11-17 13:50:28.944] [I] ----- begin iterating through inputTokens ----- [2017-11-17 13:50:28.947] [I] ----- end iterating through inputTokens ----- [2017-11-17 13:50:28.953] [E] Error in (Workflow:Andrew.Parse_input_properties / parse string for curly bracket properties (item1)#37) ReferenceError: "tokens" is not defined. [2017-11-17 13:50:28.964] [E] Workflow execution stack: *** item: 'Andrew.Parse_input_properties/item1', state: 'failed', business state: 'null', exception: 'ReferenceError: "tokens" is not defined. (Workflow:Andrew.Parse_input_properties / parse string for curly bracket properties (item1)#37)' workflow: 'Andrew.Parse_input_properties' (d5f4738e-e947-45d2-a123-cc62696c1a31) | 'input': name=inputExecArgs type=string value= } {token1} {token2} { | 'output': name=outputExecArgs type=string value=null | 'no attributes' *** End of execution stack.
I need to be able to iterate over the result of the split("{"). I Googled this thing to death. I must be missing something obvious or obscure.