Uploaded image for project: 'PUBLIC - Liferay Portal Community Edition'
  1. PUBLIC - Liferay Portal Community Edition
  2. LPS-90220

Kaleo Designer breaks with inclusion of '%' in workflow definition

    Details

      Description

      Description:
      Kaleo Designer breaks when user tries to input an improper workflow definition.
      After some initial testings, adding '%' to the XML workflow definition would cause the portlet to fail and Javascript console error is thrown (shown below). There is no issue with other non-ASCII characters, but this may be an encoding issue.
      Note: Workflow portlet does NOT break when Kaleo Designer is NOT enabled.

      Reproduction Steps:
      0. Enable Kaleo Designer
      1. Under Control Panel > Configuration > Workflow, duplicate the "single approver" workflow
      OR Use the "+" icon to add a new workflow (in 70x it's under Control Panel > Configuration > Kaleo Designer)
      2. Edit the workflow
      3. Click on the 'Source' tab and paste the contents of the invalid_input_workflow.xml attached
      *Or, you can just add '%' in a description or template tag
      4. Click on 'Publish' or 'Update'

      Expected Result:
      User should be able to save the workflow definition. Portlet should not break per user's input with '%'

      Actual Result:
      Workflow publishes successfully, but Kaleo designer portlet is no longer usable (see attached kaleo_disabled.png screenshot). User is unable to access the Kaleo designer portlet for that workflow any longer.
      The following browser console Uncaught URIError: URI malformed error appears:

      ?browserId=other&minifierType=&languageId=en_US&b=7210&t=1549316508276&/o/portal-workflow-kaleo-designer-web-2.0.0/designer/js/xml_definition.js&/o/portal-workflow-kaleo-designer-web-2.0.0/designer/js/xml_definition_serializer.js:11 Uncaught URIError: URI malformed
          at decodeURIComponent (<anonymous>)
          at component._sanitizeDefinitionXML (?browserId=other&minifierType=&languageId=en_US&b=7210&t=1549316508276&/o/portal-workflow-kaleo-designer-web-2.0.0/designer/js/xml_definition.js&/o/portal-workflow-kaleo-designer-web-2.0.0/designer/js/xml_definition_serializer.js:11)
          at component.initializer (?browserId=other&minifierType=&languageId=en_US&b=7210&t=1549316508276&/o/portal-workflow-kaleo-designer-web-2.0.0/designer/js/xml_definition.js&/o/portal-workflow-kaleo-designer-web-2.0.0/designer/js/xml_definition_serializer.js:2)
          at component._initHierarchy (?browserId=other&minifierType=&languageId=en_US&b=7210&t=1549316508276&/o/frontend-js-web/aui/base-core/base-core-min.js&/o/frontend-js-web/aui/base-observable/base-observable-min.js&/o/frontend-js-web/aui/aui-widget-cssclass/aui-widget-cssclass-min.js&/o/frontend-js-web/aui/aui-widget-toggle/aui-widget-toggle-min.js&/o/frontend-js-web/liferay/store.js:1)
          at component._baseInit (?browserId=other&minifierType=&languageId=en_US&b=7210&t=1549316508276&/o/frontend-js-web/aui/base-core/base-core-min.js&/o/frontend-js-web/aui/base-observable/base-observable-min.js&/o/frontend-js-web/aui/aui-widget-cssclass/aui-widget-cssclass-min.js&/o/frontend-js-web/aui/aui-widget-toggle/aui-widget-toggle-min.js&/o/frontend-js-web/liferay/store.js:1)
          at component.init (?browserId=other&minifierType=&languageId=en_US&b=7210&t=1549316508276&/o/frontend-js-web/aui/base-core/base-core-min.js&/o/frontend-js-web/aui/base-observable/base-observable-min.js&/o/frontend-js-web/aui/aui-widget-cssclass/aui-widget-cssclass-min.js&/o/frontend-js-web/aui/aui-widget-toggle/aui-widget-toggle-min.js&/o/frontend-js-web/liferay/store.js:2)
          at component._initBase (?browserId=other&minifierType=&languageId=en_US&b=7210&t=1549316508276&/o/frontend-js-web/aui/base-core/base-core-min.js&/o/frontend-js-web/aui/base-observable/base-observable-min.js&/o/frontend-js-web/aui/aui-widget-cssclass/aui-widget-cssclass-min.js&/o/frontend-js-web/aui/aui-widget-toggle/aui-widget-toggle-min.js&/o/frontend-js-web/liferay/store.js:1)
          at component.v (?browserId=other&minifierType=&languageId=en_US&b=7210&t=1549316508276&/o/frontend-js-web/aui/base-core/base-core-min.js&/o/frontend-js-web/aui/base-observable/base-observable-min.js&/o/frontend-js-web/aui/aui-widget-cssclass/aui-widget-cssclass-min.js&/o/frontend-js-web/aui/aui-widget-toggle/aui-widget-toggle-min.js&/o/frontend-js-web/liferay/store.js:1)
          at component.Base (combo?browserId=other&minifierType=js&languageId=en_US&b=7210&t=1549316508276&/o/frontend-js-web/clay/popper.js&/o/frontend-js-web/clay/bootstrap.js&/o/frontend-js-web/loader/config.js&/o/frontend-js-web/loader/loader.js&/o/frontend-js-web/aui/aui/aui.js&/o/frontend-js-web/aui/aui-base-html5-shiv/aui-base-html5-shiv.js&/o/frontend-js-web/liferay/browser_selectors.js&/o/frontend-js-web/liferay/modules.js&/o/frontend-js-web/liferay/aui_sandbox.js&/o/frontend-js-web/clay/collapsible-search.js&/o/frontend-js-web/clay/side-navigation.js&/o/frontend-js-web/misc/svg4everybody.js&/o/frontend-js-web/aui/arraylist-add/arraylist-add.js&/o/frontend-js-web/aui/arraylist-filter/arraylist-filter.js&/o/frontend-js-web/aui/arraylist/arraylist.js&/o/frontend-js-web/aui/array-extras/array-extras.js&/o/frontend-js-web/aui/array-invoke/array-invoke.js&/o/frontend-js-web/aui/attribute-base/attribute-base.js&/o/frontend-js-web/aui/attribute-complex/attribute-complex.js&/o/frontend-js-web/aui/attribute-core/attribute-core.js&/o/frontend-js-web/aui/attribute-observable/attribute-observable.js&/o/frontend-js-web/aui/attribute-extras/attribute-extras.js&/o/frontend-js-web/aui/base-base/base-base.js&/o/frontend-js-web/aui/base-pluginhost/base-pluginhost.js&/o/frontend-js-web/aui/classnamemanager/classnamemanager.js&/o/frontend-js-web/aui/datatype-xml-format/datatype-xml-format.js&/o/frontend-js-web/aui/datatype-xml-parse/datatype-xml-parse.js&/o/frontend-js-web/aui/dom-base/dom-base.js&/o/frontend-js-web/aui/dom-core/dom-core.js&/o/frontend-js-web/aui/dom-screen/dom-screen.js&/o/frontend-js-web/aui/dom-style/dom-style.js&/o/frontend-js-web/aui/event-base/event-base.js&/o/frontend-js-web/aui/event-custom-base/event-custom-base.js&/o/frontend-js-web/aui/event-custom-complex/event-custom-complex.js&/o/frontend-js-web/aui/event-delegate/event-delegate.js&/o/frontend-js-web/aui/event-focus/event-focus.js&/o/frontend-js-web/aui/event-hover/event-hover.js&/o/frontend-js-web/aui/event-key/event-key.js:764)
          at new component (combo?browserId=other&minifierType=js&languageId=en_US&b=7210&t=1549316508276&/o/frontend-js-web/aui/yui-throttle/yui-throttle.js&/o/frontend-js-web/aui/aui-base-core/aui-base-core.js&/o/frontend-js-web/aui/aui-base-lang/aui-base-lang.js&/o/frontend-js-web/aui/aui-classnamemanager/aui-classnamemanager.js&/o/frontend-js-web/aui/aui-component/aui-component.js&/o/frontend-js-web/aui/aui-debounce/aui-debounce.js&/o/frontend-js-web/aui/aui-delayed-task-deprecated/aui-delayed-task-deprecated.js&/o/frontend-js-web/aui/aui-event-base/aui-event-base.js&/o/frontend-js-web/aui/aui-event-input/aui-event-input.js&/o/frontend-js-web/aui/aui-form-validator/aui-form-validator.js&/o/frontend-js-web/aui/aui-node-base/aui-node-base.js&/o/frontend-js-web/aui/aui-node-html5/aui-node-html5.js&/o/frontend-js-web/aui/aui-selector/aui-selector.js&/o/frontend-js-web/aui/aui-timer/aui-timer.js&/o/frontend-js-web/liferay/dependency.js&/o/frontend-js-web/liferay/dom_task_runner.js&/o/frontend-js-web/liferay/events.js&/o/frontend-js-web/liferay/language.js&/o/frontend-js-web/liferay/lazy_load.js&/o/frontend-js-web/liferay/liferay.js&/o/frontend-js-web/liferay/util.js&/o/frontend-js-web/liferay/global.bundle.js&/o/frontend-js-web/liferay/portal.js&/o/frontend-js-web/liferay/portlet.js&/o/frontend-js-web/liferay/workflow.js&/o/frontend-js-web/liferay/address.js&/o/frontend-js-web/liferay/form.js&/o/frontend-js-web/liferay/form_placeholders.js&/o/frontend-js-web/liferay/icon.js&/o/frontend-js-web/liferay/menu.js&/o/frontend-js-web/liferay/notice.js&/o/frontend-js-web/liferay/poller.js&/o/frontend-js-web/aui/async-queue/async-queue.js&/o/frontend-js-web/aui/base-build/base-build.js&/o/frontend-js-web/aui/cookie/cookie.js&/o/frontend-js-web/aui/event-touch/event-touch.js&/o/frontend-js-web/aui/overlay/overlay.js&/o/frontend-js-web/aui/querystring-stringify/querystring-stringify.js&/o/frontend-js-web/aui/widget-child/widget-child.js&/o/frontend-js-web/aui/widget-position-align/widget-position-align.js:93)
      

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                joyce.wang Joyce Wang
                Reporter:
                nelly.liu-peng Nelly Liu-Peng
                Participants of an Issue:
                Recent user:
                Clarissa Velazquez
              • Votes:
                0 Vote for this issue
                Watchers:
                0 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved:
                  Days since last comment:
                  29 weeks, 4 days ago

                  Packages

                  Version Package
                  7.0.0 DXP FP75
                  7.0.10.11 DXP SP11
                  7.0.X
                  7.1.10 DXP FP8
                  7.1.10.2 SP2
                  7.1.3 CE GA4
                  7.1.X
                  Master