Create the following process variables:
A request for approval action requires a Call Activity element to call an external process named Request Approval. The called Request Approval process is hidden from the list on the Workflows page to prevent unintentional edits.
From the palette, drag a Call Activity element onto the canvas.

Warning
Do not use the Create Request Approval Stub Entry element to generate approval requests. This element is used inside the Request Approval process that the workflow calls.
- Enter a descriptive name for the Label.
The name must be unique from all the other elements in the same workflow, for example, Call Request Approval. - In the Properties panel, expand Called Process.
- Search for the built-in process named Request Approval, and verify that All Processes > MyITSB-Approval > Request Approval appears, as shown in the following illustration:

- Click Request Approval to select the process.
- Click Call Activity, and submit all required input parameters for the Request Approval called process.

- Click Click to build an expression to open the expression builder for any of the available parameters.
Expand the process context process variable (identified as requestInfo) to insert the specified variables into each parameter, as shown in the following table.
| | | |
---|
| | | Use the following parameter from the process context variable: Process Variables > context > Requested For User > Login Name |
| | "Request for "+SERVICE NAME+ "by "+FULL NAME | The Approval Summary field appears in the request for approval notification in BMC Helix Digital Workplace. Create a descriptive summary by adding helpful parameters and text in this field. Example: To send text that includes the service name and the requestor's full name, use the following parameters from the process context variable:
- Process Variables > context > Service > Service Name
- Process Variables > context > Requested For User > Full Name
Concatenate the text to complete the following expression: "Request for "+SERVICE NAME+ "by "+FULL NAME |
| | | Use the following parameter from the process context variable: Process Variables > context > Service > Service Name |
| | | Use the following parameter from the process context variable: Process Variables > context > Service Request > Service Request ID |
| | | Use the following parameter from the process context variable: Process Variables > context > Requested By User > Login Name |
| | | Use the following parameter from the process context variable: Process Variables > context > Service > Service ID |
| | "SB Request Manager Approval" | If the Approval Process Name is blank, the action will call the default SB Request Manager Approval process in the Approval Server. If the Approval Process Name is specified, the action will attempt to call a process of the same name in the Approval Server. For information about calling a custom request for approval, see Calling-a-custom-approval-process. |
| | | |
| | | |
| | | Use the following parameter from the process context variable: Process Variables > context > Service > Order ID |
| | | Use the Receive Task element to suspend the workflow until the external system sends a response back to BMC Helix Digital Workplace Catalog. The Receive Task element waits for the response in the form of a Signal Parameter. For more information, see Responses returned from the request for approvalbelow.
|
| | |
(Optional) To send user input to the called custom approval process, populate one or more of the following flexible input fields with your process input variables:
Tip
To populate the Flex fields with user input, create the required process variables. For more details about process variables, see Data-handling-in-workflow-activities.
To pass text input from the service requester, create a text process input variable. For more details about process input variables, see Adding-process-input-variables-to-a-workflow.
To pass date and time information, create date and time process input variables. To pass the current UTC time of the server, you can use one of the available general variables: the Current Date, Current Time, Current Date and Time.
When you have created a workflow, create a questionnaire, and map the process input variables that you have used to populate the Flex fields with the process questions. For more details about process questions, see Exploring-the-workflow-designer.
Click here to view the JSON of the example workflow
Failed to execute the [code] macro. Cause: [RuntimeError: maximum recursion depth exceeded (Java StackOverflowError)]. Click on this message for details.
org.xwiki.rendering.macro.MacroExecutionException: Failed to highlight content
at org.xwiki.rendering.internal.macro.code.CodeMacro.highlight(CodeMacro.java:176)
at org.xwiki.rendering.internal.macro.code.CodeMacro.parseContent(CodeMacro.java:151)
at org.xwiki.rendering.internal.macro.code.CodeMacro.parseContent(CodeMacro.java:66)
at org.xwiki.rendering.macro.box.AbstractBoxMacro$BoxBlockBuilder.build(AbstractBoxMacro.java:264)
at org.xwiki.rendering.macro.box.AbstractBoxMacro.execute(AbstractBoxMacro.java:179)
at org.xwiki.rendering.macro.box.AbstractBoxMacro.execute(AbstractBoxMacro.java:56)
at org.xwiki.rendering.internal.transformation.macro.MacroTransformation.transform(MacroTransformation.java:441)
at org.xwiki.rendering.internal.transformation.DefaultRenderingContext.transformInContext(DefaultRenderingContext.java:183)
at org.xwiki.rendering.internal.transformation.DefaultTransformationManager.performTransformations(DefaultTransformationManager.java:88)
at org.xwiki.display.internal.DocumentContentAsyncExecutor.executeInCurrentExecutionContext(DocumentContentAsyncExecutor.java:396)
at org.xwiki.display.internal.DocumentContentAsyncExecutor.execute(DocumentContentAsyncExecutor.java:269)
at org.xwiki.display.internal.DocumentContentAsyncRenderer.execute(DocumentContentAsyncRenderer.java:112)
at org.xwiki.rendering.async.internal.block.AbstractBlockAsyncRenderer.render(AbstractBlockAsyncRenderer.java:157)
at org.xwiki.rendering.async.internal.block.AbstractBlockAsyncRenderer.render(AbstractBlockAsyncRenderer.java:54)
at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.syncRender(DefaultAsyncRendererExecutor.java:290)
at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.render(DefaultAsyncRendererExecutor.java:267)
at org.xwiki.rendering.async.internal.block.DefaultBlockAsyncRendererExecutor.execute(DefaultBlockAsyncRendererExecutor.java:125)
at org.xwiki.display.internal.DocumentContentDisplayer.display(DocumentContentDisplayer.java:67)
at org.xwiki.display.internal.DocumentContentDisplayer.display(DocumentContentDisplayer.java:43)
at org.xwiki.display.internal.DefaultDocumentDisplayer.display(DefaultDocumentDisplayer.java:96)
at org.xwiki.display.internal.DefaultDocumentDisplayer.display(DefaultDocumentDisplayer.java:39)
at org.xwiki.sheet.internal.SheetDocumentDisplayer.display(SheetDocumentDisplayer.java:123)
at org.xwiki.sheet.internal.SheetDocumentDisplayer.display(SheetDocumentDisplayer.java:52)
at org.xwiki.display.internal.ConfiguredDocumentDisplayer.display(ConfiguredDocumentDisplayer.java:68)
at org.xwiki.display.internal.ConfiguredDocumentDisplayer.display(ConfiguredDocumentDisplayer.java:42)
at com.xpn.xwiki.doc.XWikiDocument.display(XWikiDocument.java:1412)
at com.xpn.xwiki.doc.XWikiDocument.getRenderedContent(XWikiDocument.java:1548)
at com.xpn.xwiki.doc.XWikiDocument.displayDocument(XWikiDocument.java:1498)
at com.xpn.xwiki.doc.XWikiDocument.displayDocument(XWikiDocument.java:1467)
at com.xpn.xwiki.api.Document.displayDocument(Document.java:788)
at jdk.internal.reflect.GeneratedMethodAccessor27093.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:569)
at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.doInvoke(UberspectImpl.java:571)
at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.invoke(UberspectImpl.java:554)
at org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:221)
at org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:368)
at org.apache.velocity.runtime.parser.node.ASTReference.value(ASTReference.java:704)
at org.apache.velocity.runtime.parser.node.ASTExpression.value(ASTExpression.java:75)
at org.apache.velocity.runtime.parser.node.ASTSetDirective.render(ASTSetDirective.java:242)
at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:147)
at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:439)
at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:190)
at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:147)
at org.xwiki.velocity.internal.directive.TryCatchDirective.render(TryCatchDirective.java:86)
at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:304)
at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:439)
at org.apache.velocity.Template.merge(Template.java:358)
at org.apache.velocity.Template.merge(Template.java:262)
at org.xwiki.velocity.internal.InternalVelocityEngine.evaluate(InternalVelocityEngine.java:225)
at com.xpn.xwiki.internal.template.VelocityTemplateEvaluator.evaluateContent(VelocityTemplateEvaluator.java:105)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.evaluateContent(TemplateAsyncRenderer.java:219)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.renderVelocity(TemplateAsyncRenderer.java:174)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.render(TemplateAsyncRenderer.java:135)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.render(TemplateAsyncRenderer.java:54)
at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.lambda$syncRender$0(DefaultAsyncRendererExecutor.java:284)
at com.xpn.xwiki.internal.security.authorization.DefaultAuthorExecutor.call(DefaultAuthorExecutor.java:98)
at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.syncRender(DefaultAsyncRendererExecutor.java:284)
at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.render(DefaultAsyncRendererExecutor.java:267)
at org.xwiki.rendering.async.internal.block.DefaultBlockAsyncRendererExecutor.render(DefaultBlockAsyncRendererExecutor.java:154)
at com.xpn.xwiki.internal.template.InternalTemplateManager.render(InternalTemplateManager.java:904)
at com.xpn.xwiki.internal.template.InternalTemplateManager.renderFromSkin(InternalTemplateManager.java:866)
at com.xpn.xwiki.internal.template.InternalTemplateManager.render(InternalTemplateManager.java:853)
at com.xpn.xwiki.internal.template.InternalTemplateManager.renderNoException(InternalTemplateManager.java:808)
at com.xpn.xwiki.internal.template.InternalTemplateManager.renderNoException(InternalTemplateManager.java:800)
at com.xpn.xwiki.internal.template.DefaultTemplateManager.renderNoException(DefaultTemplateManager.java:79)
at com.xpn.xwiki.internal.template.DefaultTemplateManager.renderNoException(DefaultTemplateManager.java:73)
at org.xwiki.template.script.TemplateScriptService.render(TemplateScriptService.java:54)
at jdk.internal.reflect.GeneratedMethodAccessor32722.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:569)
at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.doInvoke(UberspectImpl.java:571)
at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.invoke(UberspectImpl.java:554)
at org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:221)
at org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:368)
at org.apache.velocity.runtime.parser.node.ASTReference.render(ASTReference.java:492)
at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:147)
at org.apache.velocity.runtime.directive.VelocimacroProxy.render(VelocimacroProxy.java:218)
at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:331)
at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:261)
at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:304)
at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:439)
at org.apache.velocity.Template.merge(Template.java:358)
at org.apache.velocity.Template.merge(Template.java:262)
at org.xwiki.velocity.internal.InternalVelocityEngine.evaluate(InternalVelocityEngine.java:225)
at com.xpn.xwiki.internal.template.VelocityTemplateEvaluator.evaluateContent(VelocityTemplateEvaluator.java:105)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.evaluateContent(TemplateAsyncRenderer.java:219)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.renderVelocity(TemplateAsyncRenderer.java:174)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.render(TemplateAsyncRenderer.java:135)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.render(TemplateAsyncRenderer.java:54)
at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.lambda$syncRender$0(DefaultAsyncRendererExecutor.java:284)
at com.xpn.xwiki.internal.security.authorization.DefaultAuthorExecutor.call(DefaultAuthorExecutor.java:98)
at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.syncRender(DefaultAsyncRendererExecutor.java:284)
at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.render(DefaultAsyncRendererExecutor.java:267)
at org.xwiki.rendering.async.internal.block.DefaultBlockAsyncRendererExecutor.render(DefaultBlockAsyncRendererExecutor.java:154)
at com.xpn.xwiki.internal.template.InternalTemplateManager.render(InternalTemplateManager.java:904)
at com.xpn.xwiki.internal.template.InternalTemplateManager.renderFromSkin(InternalTemplateManager.java:866)
at com.xpn.xwiki.internal.template.InternalTemplateManager.render(InternalTemplateManager.java:853)
at com.xpn.xwiki.internal.template.InternalTemplateManager.renderNoException(InternalTemplateManager.java:808)
at com.xpn.xwiki.internal.template.InternalTemplateManager.renderNoException(InternalTemplateManager.java:800)
at com.xpn.xwiki.internal.template.DefaultTemplateManager.renderNoException(DefaultTemplateManager.java:79)
at com.xpn.xwiki.internal.template.DefaultTemplateManager.renderNoException(DefaultTemplateManager.java:73)
at org.xwiki.template.script.TemplateScriptService.render(TemplateScriptService.java:54)
at jdk.internal.reflect.GeneratedMethodAccessor32722.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:569)
at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.doInvoke(UberspectImpl.java:571)
at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.invoke(UberspectImpl.java:554)
at org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:221)
at org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:368)
at org.apache.velocity.runtime.parser.node.ASTReference.render(ASTReference.java:492)
at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:147)
at org.apache.velocity.runtime.directive.VelocimacroProxy.render(VelocimacroProxy.java:218)
at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:331)
at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:261)
at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:304)
at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:147)
at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:171)
at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:147)
at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:439)
at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:190)
at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:147)
at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:439)
at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:190)
at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:439)
at org.apache.velocity.Template.merge(Template.java:358)
at org.apache.velocity.Template.merge(Template.java:262)
at org.xwiki.velocity.internal.InternalVelocityEngine.evaluate(InternalVelocityEngine.java:225)
at com.xpn.xwiki.internal.template.VelocityTemplateEvaluator.evaluateContent(VelocityTemplateEvaluator.java:105)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.evaluateContent(TemplateAsyncRenderer.java:219)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.renderVelocity(TemplateAsyncRenderer.java:174)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.render(TemplateAsyncRenderer.java:135)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.render(TemplateAsyncRenderer.java:54)
at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.lambda$syncRender$0(DefaultAsyncRendererExecutor.java:284)
at com.xpn.xwiki.internal.security.authorization.DefaultAuthorExecutor.call(DefaultAuthorExecutor.java:98)
at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.syncRender(DefaultAsyncRendererExecutor.java:284)
at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.render(DefaultAsyncRendererExecutor.java:267)
at org.xwiki.rendering.async.internal.block.DefaultBlockAsyncRendererExecutor.render(DefaultBlockAsyncRendererExecutor.java:154)
at com.xpn.xwiki.internal.template.InternalTemplateManager.render(InternalTemplateManager.java:904)
at com.xpn.xwiki.internal.template.InternalTemplateManager.renderFromSkin(InternalTemplateManager.java:866)
at com.xpn.xwiki.internal.template.InternalTemplateManager.renderFromSkin(InternalTemplateManager.java:846)
at com.xpn.xwiki.internal.template.InternalTemplateManager.render(InternalTemplateManager.java:832)
at com.xpn.xwiki.internal.template.DefaultTemplateManager.render(DefaultTemplateManager.java:91)
at com.xpn.xwiki.internal.template.DefaultTemplateManager.render(DefaultTemplateManager.java:85)
at com.xpn.xwiki.XWiki.evaluateTemplate(XWiki.java:2564)
at com.xpn.xwiki.web.Utils.parseTemplate(Utils.java:180)
at com.xpn.xwiki.web.XWikiAction.execute(XWikiAction.java:651)
at com.xpn.xwiki.web.XWikiAction.execute(XWikiAction.java:339)
at com.xpn.xwiki.web.LegacyActionServlet.service(LegacyActionServlet.java:108)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at com.xpn.xwiki.web.ActionFilter.doFilter(ActionFilter.java:122)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.xwiki.wysiwyg.filter.ConversionFilter.doFilter(ConversionFilter.java:61)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.xwiki.container.servlet.filters.internal.SetHTTPHeaderFilter.doFilter(SetHTTPHeaderFilter.java:63)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.xwiki.resource.servlet.RoutingFilter.doFilter(RoutingFilter.java:132)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.xwiki.container.servlet.filters.internal.SavedRequestRestorerFilter.doFilter(SavedRequestRestorerFilter.java:208)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.xwiki.container.servlet.filters.internal.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:117)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:687)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:764)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:354)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:382)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:888)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1684)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.base/java.lang.Thread.run(Thread.java:840)
Caused by: org.xwiki.rendering.parser.ParseException: Failed to highlight code
at org.xwiki.rendering.internal.parser.pygments.PygmentsParser.highlight(PygmentsParser.java:176)
at org.xwiki.rendering.internal.macro.code.CodeMacro.highlight(CodeMacro.java:237)
at org.xwiki.rendering.internal.macro.code.CodeMacro.highlight(CodeMacro.java:173)
... 190 more
Caused by: javax.script.ScriptException: RuntimeError: maximum recursion depth exceeded (Java StackOverflowError) in <script> at line number 52
at org.python.jsr223.PyScriptEngine.scriptException(PyScriptEngine.java:222)
at org.python.jsr223.PyScriptEngine.eval(PyScriptEngine.java:59)
at org.python.jsr223.PyScriptEngine.eval(PyScriptEngine.java:31)
at org.xwiki.rendering.internal.parser.pygments.PygmentsParser.highlight(PygmentsParser.java:208)
at org.xwiki.rendering.internal.parser.pygments.PygmentsParser.highlight(PygmentsParser.java:174)
... 192 more
Caused by: Traceback (most recent call last):
File "<script>", line 52, in <module>
File "__pyclasspath__/pygments/__init__.py", line 85, in highlight
File "__pyclasspath__/pygments/__init__.py", line 64, in format
File "__pyclasspath__/pygments/__init__.py", line 64, in format
File "__pyclasspath__/pygments/formatters/xdom.py", line 44, in format
File "__pyclasspath__/pygments/lexer.py", line 191, in streamer
File "__pyclasspath__/pygments/lexer.py", line 628, in get_tokens_unprocessed
RuntimeError: maximum recursion depth exceeded (Java StackOverflowError)
at org.python.core.Py.RuntimeError(Py.java:155)
at org.python.core.Py.JavaError(Py.java:538)
at org.python.core.PyTableCode.call(PyTableCode.java:182)
at org.python.core.PyGenerator.__iternext__(PyGenerator.java:161)
at org.python.core.PyGenerator.__iternext__(PyGenerator.java:143)
at pygments.lexer$py.streamer$10(__pyclasspath__/pygments/lexer.py:191)
at pygments.lexer$py.call_function(__pyclasspath__/pygments/lexer.py)
at org.python.core.PyTableCode.call(PyTableCode.java:173)
at org.python.core.PyGenerator.__iternext__(PyGenerator.java:161)
at org.python.core.PyGenerator.__iternext__(PyGenerator.java:143)
at pygments.formatters.xdom$py.format$3(__pyclasspath__/pygments/formatters/xdom.py:56)
at pygments.formatters.xdom$py.call_function(__pyclasspath__/pygments/formatters/xdom.py)
at org.python.core.PyTableCode.call(PyTableCode.java:173)
at org.python.core.PyBaseCode.call(PyBaseCode.java:168)
at org.python.core.PyFunction.__call__(PyFunction.java:437)
at org.python.core.PyMethod.__call__(PyMethod.java:156)
at pygments$py.format$2(__pyclasspath__/pygments/__init__.py:74)
at pygments$py.call_function(__pyclasspath__/pygments/__init__.py)
at org.python.core.PyTableCode.call(PyTableCode.java:173)
at org.python.core.PyBaseCode.call(PyBaseCode.java:168)
at org.python.core.PyFunction.__call__(PyFunction.java:437)
at pygments$py.highlight$3(__pyclasspath__/pygments/__init__.py:85)
at pygments$py.call_function(__pyclasspath__/pygments/__init__.py)
at org.python.core.PyTableCode.call(PyTableCode.java:173)
at org.python.core.PyBaseCode.call(PyBaseCode.java:306)
at org.python.core.PyBaseCode.call(PyBaseCode.java:158)
at org.python.core.PyFunction.__call__(PyFunction.java:437)
at org.python.pycode._pyx3369855.f$0(<script>:52)
at org.python.pycode._pyx3369855.call_function(<script>)
at org.python.core.PyTableCode.call(PyTableCode.java:173)
at org.python.core.PyCode.call(PyCode.java:18)
at org.python.core.Py.runCode(Py.java:1703)
at org.python.core.__builtin__.eval(__builtin__.java:497)
at org.python.core.__builtin__.eval(__builtin__.java:501)
at org.python.util.PythonInterpreter.eval(PythonInterpreter.java:255)
at org.python.jsr223.PyScriptEngine.eval(PyScriptEngine.java:57)
... 195 more
By populating any of the flexible fields, you send the information from BMC Helix Digital Workplace Catalog to the fields that are available on the Flexible Fields tab of the SB:ServiceRequestStub form:

The information that you send to the SB:ServiceRequestStub form is saved on the Flexible Fields tab, and can be used for creating approval rules.

Click Save to close the expression builder.
When fulfilling a service, the inserted Call Request Approval activity send a request to run a process on the Approval Server.
Important
The Request Approval process times out after two months if no action is taken on the process at runtime.
A quick way to verify that the approval system is configured correctly is to route an output from a Call Request Approval process into an in-app notification, as shown in the following illustration:

The in-app notification appears on the dashboard of the administrative user you specify as the receiver.
- From the palette, drag a Send In App Notification element onto the canvas.
| |
---|
| "hannah_admin" Manually enter the user name (without the @domain extension) of the administrator who should receive the notification. |
| requestInfo > Service > Service Name + "approval process testing"
Expand and click to insert the process variable Service Name, and then manually concatenate the additional text. |
| Activities > Call Request Approval > Status + " " + Activities > Call Request Approval > Reason
Expand and click to insert the Status and Reason signal parameters, and then manually concatenate the space between the parameters. |
Click Save to close the expression builder.
The workflow is defined to send the Status and Reason returned from the approval process to the administrator's dashboard upon completion.
Tip
To test that the workflow itself is being called, you can also insert a Send In App Notification element before Call Request Approval, for example:

- Attach this workflow to a service in the Service Options panel.
- Complete the rest of the service publishing and entitlement process to view the service in BMC Helix Digital Workplace.
- Open BMC Helix Digital Workplace as a user and request the service.
The service should appear in your requests. - In a separate browser session, open BMC Helix Digital Workplace and log in as the user's manager.
The service request should appear in the manager's updates list. - Approve the service request, or reject it, and provide a reason.
- Open the BMC Helix Digital Workplace Catalog dashboard while logged in as the user specified in Send In App Notification.
Note
When the approval process is completed, this workflow will always generate a dashboard notification, even in the event of system errors. The most common error is that the user who requested the service has not been assigned a manager.
When you have confirmed that the approval configuration is correct, and it sends the appropriate notifications, you can incorporate the element into a workflow by using exclusive gateways.

You can expand the called Request Approval process to view its steps. As a service catalog administrator or internal service supplier, consider the following steps:
- The Create Approval Stub Entry (form SB:ServiceRequestStub) is created.
- The Receive Task element returns a Work Status.

| |
---|
Create Approval Stub Entry | Creates a record through the SB:ServiceRequestStub form on the Action Request System (AR System) server that triggers an Approval Server process. If the process fails to create a record, the workflow exits with a failure message. |
| Waits for the response and then exits with the following message variables, called Signal Parameters:
- Request Status
- Reject Reason
|
The approval rules and messages returned upon the receipt of signatures is configured in the process named SB Request Manager Approval in the Approval Server.
The Request Status signal parameter returns one of the following values:
| |
---|
| The manager approved the request. |
| The manager rejected the request. The manager may or may not have supplied a Reject Reason. |
| The request approval process failed. The system error message is supplied as the Reject Reason. |
| The request approval process timed out because two months elapsed since the request date. |
You can test for these returned values, and insert exclusive gateways to direct the sequence flow based on conditions.
If the workflow triggers a Fault error in BMC Helix Digital Workplace, check the configuration. Most common configuration issues include:
SaaS subscribers who use BMC Helix ITSM or BMC-Helix-Virtual-Agent-Basic-service are entitled to this feature.
Calling-a-custom-approval-process