Repository: ArtIsLong/flowable-ui
Branch: master
Commit: 09c93d957fc4
Files: 1390
Total size: 26.0 MB
Directory structure:
gitextract_3ian5g6f/
├── README.md
├── SECURITY.md
├── flowable-ui/
│ ├── .gitignore
│ ├── .gradle/
│ │ ├── 4.10.3/
│ │ │ └── gc.properties
│ │ └── buildOutputCleanup/
│ │ └── cache.properties
│ ├── README.md
│ ├── build.gradle
│ ├── gradle/
│ │ └── wrapper/
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── pom.xml
│ ├── settings.gradle
│ └── src/
│ └── main/
│ ├── java/
│ │ ├── com/
│ │ │ └── github/
│ │ │ └── flowable/
│ │ │ ├── FlowableApplication.java
│ │ │ ├── config/
│ │ │ │ ├── AppDispatcherServletConfiguration.java
│ │ │ │ ├── ApplicationConfiguration.java
│ │ │ │ ├── DatabaseConfiguration.java
│ │ │ │ ├── TaskUserCacheImpl.java
│ │ │ │ └── WebMvcConfiguration.java
│ │ │ └── rest/
│ │ │ └── ext/
│ │ │ ├── EditorGroupsResource.java
│ │ │ ├── EditorUsersResource.java
│ │ │ └── FlowStencilSetResource.java
│ │ └── org/
│ │ └── flowable/
│ │ └── ui/
│ │ ├── admin/
│ │ │ └── service/
│ │ │ └── engine/
│ │ │ └── CmmnTaskService.java
│ │ └── modeler/
│ │ └── rest/
│ │ └── app/
│ │ └── AppDefinitionResource.java
│ └── resources/
│ ├── application-dev.yml
│ ├── application.yml
│ ├── flow-manager.sh
│ ├── mybatisGenerator.xml
│ └── stencilset/
│ ├── en/
│ │ ├── stencilset_bpmn.json
│ │ └── stencilset_cmmn.json
│ └── zh/
│ ├── stencilset_bpmn.json
│ └── stencilset_cmmn.json
└── flowable-ui-web/
├── admin/
│ ├── additional_components/
│ │ ├── angular-ui-select2/
│ │ │ ├── angular-ui-select2.js
│ │ │ └── select2.css
│ │ └── ui-grid/
│ │ ├── ui-grid.css
│ │ └── ui-grid.js
│ ├── bower_components/
│ │ ├── angular/
│ │ │ ├── .bower.json
│ │ │ ├── README.md
│ │ │ ├── angular-csp.css
│ │ │ ├── angular.js
│ │ │ ├── angular.min.js.gzip
│ │ │ ├── bower.json
│ │ │ └── package.json
│ │ ├── angular-bootstrap/
│ │ │ ├── .bower.json
│ │ │ ├── bower.json
│ │ │ ├── ui-bootstrap-tpls.js
│ │ │ └── ui-bootstrap.js
│ │ ├── angular-cookies/
│ │ │ ├── .bower.json
│ │ │ ├── README.md
│ │ │ ├── angular-cookies.js
│ │ │ ├── bower.json
│ │ │ └── package.json
│ │ ├── angular-mocks/
│ │ │ ├── .bower.json
│ │ │ ├── README.md
│ │ │ ├── angular-mocks.js
│ │ │ ├── bower.json
│ │ │ └── package.json
│ │ ├── angular-resource/
│ │ │ ├── .bower.json
│ │ │ ├── README.md
│ │ │ ├── angular-resource.js
│ │ │ ├── bower.json
│ │ │ └── package.json
│ │ ├── angular-route/
│ │ │ ├── .bower.json
│ │ │ ├── README.md
│ │ │ ├── angular-route.js
│ │ │ ├── bower.json
│ │ │ └── package.json
│ │ ├── angular-sanitize/
│ │ │ ├── .bower.json
│ │ │ ├── README.md
│ │ │ ├── angular-sanitize.js
│ │ │ ├── bower.json
│ │ │ └── package.json
│ │ ├── angular-scenario/
│ │ │ ├── .bower.json
│ │ │ ├── README.md
│ │ │ ├── angular-scenario.js
│ │ │ ├── bower.json
│ │ │ ├── jstd-scenario-adapter-config.js
│ │ │ ├── jstd-scenario-adapter.js
│ │ │ └── package.json
│ │ ├── angular-translate/
│ │ │ ├── .bower.json
│ │ │ └── angular-translate.js
│ │ ├── angular-translate-loader-static-files/
│ │ │ ├── .bower.json
│ │ │ └── angular-translate-loader-static-files.js
│ │ ├── angular-translate-storage-cookie/
│ │ │ ├── .bower.json
│ │ │ └── angular-translate-storage-cookie.js
│ │ ├── angular-ui-utils/
│ │ │ ├── .bower.json
│ │ │ ├── .travis.yml
│ │ │ ├── CHANGELOG.md
│ │ │ ├── bower.json
│ │ │ ├── ui-utils-ieshiv.js
│ │ │ └── ui-utils.js
│ │ ├── atmosphere/
│ │ │ ├── .bower.json
│ │ │ ├── README.md
│ │ │ ├── atmosphere.js
│ │ │ └── bower.json
│ │ ├── jquery/
│ │ │ ├── .bower.json
│ │ │ ├── .editorconfig
│ │ │ ├── .gitmodules
│ │ │ ├── .jshintrc
│ │ │ ├── .mailmap
│ │ │ ├── AUTHORS.txt
│ │ │ ├── CONTRIBUTING.md
│ │ │ ├── Gruntfile.js
│ │ │ ├── MIT-LICENSE.txt
│ │ │ ├── README.md
│ │ │ ├── bower.json
│ │ │ ├── build/
│ │ │ │ ├── release-notes.js
│ │ │ │ └── release.js
│ │ │ ├── component.json
│ │ │ ├── composer.json
│ │ │ ├── jquery-migrate.js
│ │ │ ├── jquery.js
│ │ │ ├── package.json
│ │ │ ├── speed/
│ │ │ │ ├── benchmark.js
│ │ │ │ ├── benchmarker.css
│ │ │ │ ├── benchmarker.js
│ │ │ │ ├── closest.html
│ │ │ │ ├── css.html
│ │ │ │ ├── event.html
│ │ │ │ ├── filter.html
│ │ │ │ ├── find.html
│ │ │ │ ├── index.html
│ │ │ │ ├── jquery-basis.js
│ │ │ │ └── slice.vs.concat.html
│ │ │ ├── src/
│ │ │ │ ├── .jshintrc
│ │ │ │ ├── ajax/
│ │ │ │ │ ├── jsonp.js
│ │ │ │ │ ├── script.js
│ │ │ │ │ └── xhr.js
│ │ │ │ ├── ajax.js
│ │ │ │ ├── attributes.js
│ │ │ │ ├── callbacks.js
│ │ │ │ ├── core.js
│ │ │ │ ├── css.js
│ │ │ │ ├── data.js
│ │ │ │ ├── deferred.js
│ │ │ │ ├── deprecated.js
│ │ │ │ ├── dimensions.js
│ │ │ │ ├── effects.js
│ │ │ │ ├── event-alias.js
│ │ │ │ ├── event.js
│ │ │ │ ├── exports.js
│ │ │ │ ├── intro.js
│ │ │ │ ├── manipulation.js
│ │ │ │ ├── offset.js
│ │ │ │ ├── outro.js
│ │ │ │ ├── queue.js
│ │ │ │ ├── selector-native.js
│ │ │ │ ├── serialize.js
│ │ │ │ ├── sizzle-jquery.js
│ │ │ │ ├── support.js
│ │ │ │ ├── traversing.js
│ │ │ │ └── wrap.js
│ │ │ └── test/
│ │ │ ├── .jshintignore
│ │ │ ├── .jshintrc
│ │ │ ├── data/
│ │ │ │ ├── ajax/
│ │ │ │ │ └── unreleasedXHR.html
│ │ │ │ ├── atom+xml.php
│ │ │ │ ├── badcall.js
│ │ │ │ ├── badjson.js
│ │ │ │ ├── cleanScript.html
│ │ │ │ ├── core/
│ │ │ │ │ ├── cc_on.html
│ │ │ │ │ ├── dont_return.php
│ │ │ │ │ └── dynamic_ready.html
│ │ │ │ ├── dashboard.xml
│ │ │ │ ├── dimensions/
│ │ │ │ │ ├── documentLarge.html
│ │ │ │ │ └── documentSmall.html
│ │ │ │ ├── echoData.php
│ │ │ │ ├── echoQuery.php
│ │ │ │ ├── errorWithJSON.php
│ │ │ │ ├── errorWithText.php
│ │ │ │ ├── etag.php
│ │ │ │ ├── evalScript.php
│ │ │ │ ├── event/
│ │ │ │ │ ├── focusElem.html
│ │ │ │ │ ├── longLoadScript.php
│ │ │ │ │ ├── onbeforeunload.html
│ │ │ │ │ ├── promiseReady.html
│ │ │ │ │ └── syncReady.html
│ │ │ │ ├── headers.php
│ │ │ │ ├── if_modified_since.php
│ │ │ │ ├── iframe.html
│ │ │ │ ├── json.php
│ │ │ │ ├── json_obj.js
│ │ │ │ ├── jsonp.php
│ │ │ │ ├── manipulation/
│ │ │ │ │ └── iframe-denied.html
│ │ │ │ ├── name.html
│ │ │ │ ├── name.php
│ │ │ │ ├── nocontent.php
│ │ │ │ ├── offset/
│ │ │ │ │ ├── absolute.html
│ │ │ │ │ ├── body.html
│ │ │ │ │ ├── fixed.html
│ │ │ │ │ ├── relative.html
│ │ │ │ │ ├── scroll.html
│ │ │ │ │ ├── static.html
│ │ │ │ │ └── table.html
│ │ │ │ ├── params_html.php
│ │ │ │ ├── readywaitasset.js
│ │ │ │ ├── readywaitloader.js
│ │ │ │ ├── script.php
│ │ │ │ ├── selector/
│ │ │ │ │ ├── html5_selector.html
│ │ │ │ │ └── sizzle_cache.html
│ │ │ │ ├── statusText.php
│ │ │ │ ├── support/
│ │ │ │ │ ├── bodyBackground.html
│ │ │ │ │ ├── boxSizing.html
│ │ │ │ │ ├── csp.js
│ │ │ │ │ ├── csp.php
│ │ │ │ │ ├── shrinkWrapBlocks.html
│ │ │ │ │ └── testElementCrash.html
│ │ │ │ ├── test.html
│ │ │ │ ├── test.js
│ │ │ │ ├── test.php
│ │ │ │ ├── test2.html
│ │ │ │ ├── test3.html
│ │ │ │ ├── testinit.js
│ │ │ │ ├── testrunner.js
│ │ │ │ ├── testsuite.css
│ │ │ │ ├── text.php
│ │ │ │ ├── ua.txt
│ │ │ │ ├── with_fries.xml
│ │ │ │ └── with_fries_over_jsonp.php
│ │ │ ├── delegatetest.html
│ │ │ ├── hovertest.html
│ │ │ ├── index.html
│ │ │ ├── jquery.js
│ │ │ ├── localfile.html
│ │ │ ├── networkerror.html
│ │ │ ├── readywait.html
│ │ │ ├── unit/
│ │ │ │ ├── ajax.js
│ │ │ │ ├── attributes.js
│ │ │ │ ├── callbacks.js
│ │ │ │ ├── core.js
│ │ │ │ ├── css.js
│ │ │ │ ├── data.js
│ │ │ │ ├── deferred.js
│ │ │ │ ├── deprecated.js
│ │ │ │ ├── dimensions.js
│ │ │ │ ├── effects.js
│ │ │ │ ├── event.js
│ │ │ │ ├── exports.js
│ │ │ │ ├── manipulation.js
│ │ │ │ ├── offset.js
│ │ │ │ ├── queue.js
│ │ │ │ ├── selector.js
│ │ │ │ ├── serialize.js
│ │ │ │ ├── support.js
│ │ │ │ ├── traversing.js
│ │ │ │ └── wrap.js
│ │ │ └── xhtml.php
│ │ ├── jquery-atmosphere/
│ │ │ ├── .bower.json
│ │ │ ├── README.md
│ │ │ ├── bower.json
│ │ │ └── jquery.atmosphere.js
│ │ ├── json3/
│ │ │ ├── .bower.json
│ │ │ ├── .gitmodules
│ │ │ ├── .jshintrc
│ │ │ ├── .npmignore
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── benchmark/
│ │ │ │ ├── assets/
│ │ │ │ │ ├── html5.js
│ │ │ │ │ ├── jsperf.css
│ │ │ │ │ ├── nano.jar
│ │ │ │ │ └── ui.js
│ │ │ │ ├── benchmark_browser.html
│ │ │ │ └── benchmark_json3.js
│ │ │ ├── build.js
│ │ │ ├── index.html
│ │ │ ├── lib/
│ │ │ │ └── json3.js
│ │ │ ├── package.json
│ │ │ ├── page/
│ │ │ │ ├── page.html
│ │ │ │ └── style.css
│ │ │ ├── test/
│ │ │ │ ├── test_browser.html
│ │ │ │ ├── test_extendscript.jsx
│ │ │ │ └── test_json3.js
│ │ │ └── vendor/
│ │ │ ├── benchmark.js
│ │ │ ├── closure-compiler.jar
│ │ │ ├── curl.js
│ │ │ ├── evalJSON.js
│ │ │ ├── json2.js
│ │ │ ├── json_parse.js
│ │ │ ├── json_parse_state.js
│ │ │ ├── json_sans_eval.js
│ │ │ ├── lodash.js
│ │ │ ├── platform.js
│ │ │ ├── prototype.js
│ │ │ └── require.js
│ │ ├── modernizr/
│ │ │ ├── .bower.json
│ │ │ ├── .editorconfig
│ │ │ ├── .travis.yml
│ │ │ ├── feature-detects/
│ │ │ │ ├── a-download.js
│ │ │ │ ├── audio-audiodata-api.js
│ │ │ │ ├── audio-webaudio-api.js
│ │ │ │ ├── battery-api.js
│ │ │ │ ├── battery-level.js
│ │ │ │ ├── blob-constructor.js
│ │ │ │ ├── canvas-todataurl-type.js
│ │ │ │ ├── contenteditable.js
│ │ │ │ ├── contentsecuritypolicy.js
│ │ │ │ ├── contextmenu.js
│ │ │ │ ├── cookies.js
│ │ │ │ ├── cors.js
│ │ │ │ ├── css-backgroundposition-shorthand.js
│ │ │ │ ├── css-backgroundposition-xy.js
│ │ │ │ ├── css-backgroundrepeat.js
│ │ │ │ ├── css-backgroundsizecover.js
│ │ │ │ ├── css-boxsizing.js
│ │ │ │ ├── css-calc.js
│ │ │ │ ├── css-cubicbezierrange.js
│ │ │ │ ├── css-displayrunin.js
│ │ │ │ ├── css-displaytable.js
│ │ │ │ ├── css-filters.js
│ │ │ │ ├── css-hyphens.js
│ │ │ │ ├── css-lastchild.js
│ │ │ │ ├── css-mask.js
│ │ │ │ ├── css-mediaqueries.js
│ │ │ │ ├── css-objectfit.js
│ │ │ │ ├── css-overflow-scrolling.js
│ │ │ │ ├── css-pointerevents.js
│ │ │ │ ├── css-positionsticky.js
│ │ │ │ ├── css-regions.js
│ │ │ │ ├── css-remunit.js
│ │ │ │ ├── css-resize.js
│ │ │ │ ├── css-scrollbars.js
│ │ │ │ ├── css-subpixelfont.js
│ │ │ │ ├── css-supports.js
│ │ │ │ ├── css-userselect.js
│ │ │ │ ├── css-vhunit.js
│ │ │ │ ├── css-vmaxunit.js
│ │ │ │ ├── css-vminunit.js
│ │ │ │ ├── css-vwunit.js
│ │ │ │ ├── custom-protocol-handler.js
│ │ │ │ ├── dart.js
│ │ │ │ ├── dataview-api.js
│ │ │ │ ├── dom-classlist.js
│ │ │ │ ├── dom-createElement-attrs.js
│ │ │ │ ├── dom-dataset.js
│ │ │ │ ├── dom-microdata.js
│ │ │ │ ├── elem-datalist.js
│ │ │ │ ├── elem-details.js
│ │ │ │ ├── elem-output.js
│ │ │ │ ├── elem-progress-meter.js
│ │ │ │ ├── elem-ruby.js
│ │ │ │ ├── elem-time.js
│ │ │ │ ├── elem-track.js
│ │ │ │ ├── emoji.js
│ │ │ │ ├── es5-strictmode.js
│ │ │ │ ├── event-deviceorientation-motion.js
│ │ │ │ ├── exif-orientation.js
│ │ │ │ ├── file-api.js
│ │ │ │ ├── file-filesystem.js
│ │ │ │ ├── forms-fileinput.js
│ │ │ │ ├── forms-formattribute.js
│ │ │ │ ├── forms-inputnumber-l10n.js
│ │ │ │ ├── forms-placeholder.js
│ │ │ │ ├── forms-speechinput.js
│ │ │ │ ├── forms-validation.js
│ │ │ │ ├── fullscreen-api.js
│ │ │ │ ├── gamepad.js
│ │ │ │ ├── getusermedia.js
│ │ │ │ ├── ie8compat.js
│ │ │ │ ├── iframe-sandbox.js
│ │ │ │ ├── iframe-seamless.js
│ │ │ │ ├── iframe-srcdoc.js
│ │ │ │ ├── img-apng.js
│ │ │ │ ├── img-webp.js
│ │ │ │ ├── json.js
│ │ │ │ ├── lists-reversed.js
│ │ │ │ ├── mathml.js
│ │ │ │ ├── network-connection.js
│ │ │ │ ├── network-eventsource.js
│ │ │ │ ├── network-xhr2.js
│ │ │ │ ├── notification.js
│ │ │ │ ├── performance.js
│ │ │ │ ├── pointerlock-api.js
│ │ │ │ ├── quota-management-api.js
│ │ │ │ ├── requestanimationframe.js
│ │ │ │ ├── script-async.js
│ │ │ │ ├── script-defer.js
│ │ │ │ ├── style-scoped.js
│ │ │ │ ├── svg-filters.js
│ │ │ │ ├── unicode.js
│ │ │ │ ├── url-data-uri.js
│ │ │ │ ├── userdata.js
│ │ │ │ ├── vibration.js
│ │ │ │ ├── web-intents.js
│ │ │ │ ├── webgl-extensions.js
│ │ │ │ ├── websockets-binary.js
│ │ │ │ ├── window-framed.js
│ │ │ │ ├── workers-blobworkers.js
│ │ │ │ ├── workers-dataworkers.js
│ │ │ │ └── workers-sharedworkers.js
│ │ │ ├── grunt.js
│ │ │ ├── media/
│ │ │ │ ├── Modernizr 2 Logo.ai
│ │ │ │ └── Modernizr 2 Logo.eps
│ │ │ ├── modernizr.js
│ │ │ ├── readme.md
│ │ │ └── test/
│ │ │ ├── basic.html
│ │ │ ├── caniuse.html
│ │ │ ├── caniuse_files/
│ │ │ │ ├── Windsong-webfont.otf
│ │ │ │ ├── form_validation.html
│ │ │ │ ├── ga.js
│ │ │ │ ├── hashchange.html
│ │ │ │ ├── mathml.html
│ │ │ │ ├── pushstate.html
│ │ │ │ ├── style.css
│ │ │ │ ├── svg-img.svg.1
│ │ │ │ └── xhtml.html
│ │ │ ├── index.html
│ │ │ ├── js/
│ │ │ │ ├── basic.html
│ │ │ │ ├── dumpdata.js
│ │ │ │ ├── lib/
│ │ │ │ │ ├── detect-global.js
│ │ │ │ │ ├── jquery-1.7b2.js
│ │ │ │ │ ├── jsonselect.js
│ │ │ │ │ ├── polyfills.js
│ │ │ │ │ └── uaparser.js
│ │ │ │ ├── setup.js
│ │ │ │ ├── unit-caniuse.js
│ │ │ │ └── unit.js
│ │ │ └── qunit/
│ │ │ ├── qunit.css
│ │ │ ├── qunit.js
│ │ │ └── run-qunit.js
│ │ ├── ng-file-upload/
│ │ │ ├── .bower.json
│ │ │ ├── FileAPI.flash.swf
│ │ │ ├── FileAPI.js
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── bower.json
│ │ │ ├── ng-file-upload-all.js
│ │ │ ├── ng-file-upload-shim.js
│ │ │ ├── ng-file-upload.js
│ │ │ └── package.js
│ │ └── sass-bootstrap/
│ │ ├── .bower.json
│ │ ├── CNAME
│ │ ├── CONTRIBUTING.md
│ │ ├── Gemfile
│ │ ├── Gruntfile.js
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── Rakefile
│ │ ├── _config.yml
│ │ ├── _includes/
│ │ │ ├── ads.html
│ │ │ ├── footer.html
│ │ │ ├── header.html
│ │ │ ├── nav-components.html
│ │ │ ├── nav-css.html
│ │ │ ├── nav-customize.html
│ │ │ ├── nav-getting-started.html
│ │ │ ├── nav-javascript.html
│ │ │ ├── nav-main.html
│ │ │ ├── old-bs-docs.html
│ │ │ └── social-buttons.html
│ │ ├── _layouts/
│ │ │ ├── default.html
│ │ │ └── home.html
│ │ ├── assets/
│ │ │ ├── css/
│ │ │ │ ├── docs.css
│ │ │ │ └── pygments-manni.css
│ │ │ └── js/
│ │ │ ├── application.js
│ │ │ ├── customizer.js
│ │ │ ├── filesaver.js
│ │ │ ├── holder.js
│ │ │ ├── html5shiv.js
│ │ │ ├── jquery.js
│ │ │ ├── jszip.js
│ │ │ ├── less.js
│ │ │ ├── raw-files.js
│ │ │ └── uglify.js
│ │ ├── bower.json
│ │ ├── browserstack.json
│ │ ├── components.html
│ │ ├── composer.json
│ │ ├── css.html
│ │ ├── customize.html
│ │ ├── dist/
│ │ │ ├── css/
│ │ │ │ ├── bootstrap-theme.css
│ │ │ │ └── bootstrap.css
│ │ │ └── js/
│ │ │ └── bootstrap.js
│ │ ├── examples/
│ │ │ ├── carousel/
│ │ │ │ ├── carousel.css
│ │ │ │ └── index.html
│ │ │ ├── grid/
│ │ │ │ ├── grid.css
│ │ │ │ └── index.html
│ │ │ ├── jumbotron/
│ │ │ │ ├── index.html
│ │ │ │ └── jumbotron.css
│ │ │ ├── jumbotron-narrow/
│ │ │ │ ├── index.html
│ │ │ │ └── jumbotron-narrow.css
│ │ │ ├── justified-nav/
│ │ │ │ ├── index.html
│ │ │ │ └── justified-nav.css
│ │ │ ├── navbar/
│ │ │ │ ├── index.html
│ │ │ │ └── navbar.css
│ │ │ ├── navbar-fixed-top/
│ │ │ │ ├── index.html
│ │ │ │ └── navbar-fixed-top.css
│ │ │ ├── navbar-static-top/
│ │ │ │ ├── index.html
│ │ │ │ └── navbar-static-top.css
│ │ │ ├── non-responsive/
│ │ │ │ ├── index.html
│ │ │ │ └── non-responsive.css
│ │ │ ├── offcanvas/
│ │ │ │ ├── index.html
│ │ │ │ ├── offcanvas.css
│ │ │ │ └── offcanvas.js
│ │ │ ├── signin/
│ │ │ │ ├── index.html
│ │ │ │ └── signin.css
│ │ │ ├── starter-template/
│ │ │ │ ├── index.html
│ │ │ │ └── starter-template.css
│ │ │ ├── sticky-footer/
│ │ │ │ ├── index.html
│ │ │ │ └── sticky-footer.css
│ │ │ ├── sticky-footer-navbar/
│ │ │ │ ├── index.html
│ │ │ │ └── sticky-footer-navbar.css
│ │ │ └── theme/
│ │ │ ├── index.html
│ │ │ └── theme.css
│ │ ├── getting-started.html
│ │ ├── index.html
│ │ ├── javascript.html
│ │ ├── js/
│ │ │ ├── affix.js
│ │ │ ├── alert.js
│ │ │ ├── button.js
│ │ │ ├── carousel.js
│ │ │ ├── collapse.js
│ │ │ ├── dropdown.js
│ │ │ ├── modal.js
│ │ │ ├── popover.js
│ │ │ ├── scrollspy.js
│ │ │ ├── tab.js
│ │ │ ├── tests/
│ │ │ │ ├── index.html
│ │ │ │ ├── phantom.js
│ │ │ │ ├── server.js
│ │ │ │ ├── unit/
│ │ │ │ │ ├── affix.js
│ │ │ │ │ ├── alert.js
│ │ │ │ │ ├── button.js
│ │ │ │ │ ├── carousel.js
│ │ │ │ │ ├── collapse.js
│ │ │ │ │ ├── dropdown.js
│ │ │ │ │ ├── modal.js
│ │ │ │ │ ├── phantom.js
│ │ │ │ │ ├── popover.js
│ │ │ │ │ ├── scrollspy.js
│ │ │ │ │ ├── tab.js
│ │ │ │ │ ├── tooltip.js
│ │ │ │ │ └── transition.js
│ │ │ │ └── vendor/
│ │ │ │ ├── jquery.js
│ │ │ │ ├── qunit.css
│ │ │ │ └── qunit.js
│ │ │ ├── tooltip.js
│ │ │ └── transition.js
│ │ ├── lib/
│ │ │ ├── _alerts.scss
│ │ │ ├── _badges.scss
│ │ │ ├── _breadcrumbs.scss
│ │ │ ├── _button-groups.scss
│ │ │ ├── _buttons.scss
│ │ │ ├── _carousel.scss
│ │ │ ├── _close.scss
│ │ │ ├── _code.scss
│ │ │ ├── _component-animations.scss
│ │ │ ├── _dropdowns.scss
│ │ │ ├── _forms.scss
│ │ │ ├── _glyphicons.scss
│ │ │ ├── _grid.scss
│ │ │ ├── _input-groups.scss
│ │ │ ├── _jumbotron.scss
│ │ │ ├── _labels.scss
│ │ │ ├── _list-group.scss
│ │ │ ├── _media.scss
│ │ │ ├── _mixins.scss
│ │ │ ├── _modals.scss
│ │ │ ├── _navbar.scss
│ │ │ ├── _navs.scss
│ │ │ ├── _normalize.scss
│ │ │ ├── _pager.scss
│ │ │ ├── _pagination.scss
│ │ │ ├── _panels.scss
│ │ │ ├── _popovers.scss
│ │ │ ├── _print.scss
│ │ │ ├── _progress-bars.scss
│ │ │ ├── _responsive-utilities.scss
│ │ │ ├── _scaffolding.scss
│ │ │ ├── _tables.scss
│ │ │ ├── _theme.scss
│ │ │ ├── _thumbnails.scss
│ │ │ ├── _tooltip.scss
│ │ │ ├── _type.scss
│ │ │ ├── _utilities.scss
│ │ │ ├── _variables.scss
│ │ │ ├── _wells.scss
│ │ │ └── bootstrap.scss
│ │ └── package.json
│ ├── browserconfig.xml
│ ├── display/
│ │ ├── Polyline.js
│ │ ├── bpmn-draw.js
│ │ ├── bpmn-icons.js
│ │ ├── displaymodel.css
│ │ ├── displaymodel.html
│ │ ├── jquery.growl.css
│ │ └── jquery.growl.js
│ ├── display-cmmn/
│ │ ├── cmmn-draw.js
│ │ ├── cmmn-icons.js
│ │ ├── displaymodel.css
│ │ ├── displaymodel.html
│ │ └── displaymodel.js
│ ├── error/
│ │ ├── 404.html
│ │ └── 500.html
│ ├── i18n/
│ │ ├── en.json
│ │ ├── es.json
│ │ ├── fr.json
│ │ ├── pt-BR.json
│ │ └── zh-CN.json
│ ├── index.html
│ ├── manifest.json
│ ├── scripts/
│ │ ├── app-definition-controllers.js
│ │ ├── app-definitions-controllers.js
│ │ ├── app-deployment-controllers.js
│ │ ├── app-deployments-controllers.js
│ │ ├── app.js
│ │ ├── case-definition-controllers.js
│ │ ├── case-definitions-controllers.js
│ │ ├── case-instance-controllers.js
│ │ ├── case-instances-controllers.js
│ │ ├── cmmn-deployment-controllers.js
│ │ ├── cmmn-deployments-controllers.js
│ │ ├── cmmn-job-controllers.js
│ │ ├── cmmn-jobs-controllers.js
│ │ ├── cmmn-task-controllers.js
│ │ ├── cmmn-tasks-controllers.js
│ │ ├── config.js
│ │ ├── constants.js
│ │ ├── content-item-controllers.js
│ │ ├── content-items-controllers.js
│ │ ├── controllers.js
│ │ ├── decision-table-controllers.js
│ │ ├── decision-table-deployment-controllers.js
│ │ ├── decision-table-deployments-controllers.js
│ │ ├── decision-table-execution-controllers.js
│ │ ├── decision-table-executions-controllers.js
│ │ ├── decision-tables-controllers.js
│ │ ├── deployment-controllers.js
│ │ ├── deployments-controllers.js
│ │ ├── directives.js
│ │ ├── engine-controller.js
│ │ ├── event-subscription-controllers.js
│ │ ├── event-subscriptions-controllers.js
│ │ ├── filter-controllers.js
│ │ ├── form-definition-controllers.js
│ │ ├── form-definitions-controllers.js
│ │ ├── form-deployment-controllers.js
│ │ ├── form-deployments-controllers.js
│ │ ├── form-instance-controllers.js
│ │ ├── form-instances-controllers.js
│ │ ├── job-controllers.js
│ │ ├── jobs-controllers.js
│ │ ├── process-definition-controllers.js
│ │ ├── process-definitions-controllers.js
│ │ ├── process-instance-controllers.js
│ │ ├── process-instances-controllers.js
│ │ ├── recursion-helper.js
│ │ ├── services.js
│ │ ├── task-controllers.js
│ │ ├── tasks-controllers.js
│ │ ├── users-controllers.js
│ │ └── utils.js
│ ├── styles/
│ │ ├── bootstrap-theme.css
│ │ ├── bootstrap.css
│ │ └── style.css
│ └── views/
│ ├── app-definition.html
│ ├── app-definitions.html
│ ├── app-deployment.html
│ ├── app-deployments.html
│ ├── case-definition-diagram-popup.html
│ ├── case-definition.html
│ ├── case-definitions.html
│ ├── case-instance-delete-popup.html
│ ├── case-instance-diagram-popup.html
│ ├── case-instance.html
│ ├── case-instances.html
│ ├── cmmn-deployment.html
│ ├── cmmn-deployments.html
│ ├── cmmn-job.html
│ ├── cmmn-jobs.html
│ ├── cmmn-task.html
│ ├── cmmn-tasks.html
│ ├── confirm-popup.html
│ ├── content-item.html
│ ├── content-items.html
│ ├── decision-table-deployment.html
│ ├── decision-table-deployments.html
│ ├── decision-table-execution.html
│ ├── decision-table-executions.html
│ ├── decision-table-popup.html
│ ├── decision-table.html
│ ├── decision-tables.html
│ ├── deployment.html
│ ├── deployments.html
│ ├── engine-edit-config-popup.html
│ ├── engine-edit-endpoint-popup.html
│ ├── engine.html
│ ├── event-subscription.html
│ ├── event-subscriptions.html
│ ├── field-preview-template.html
│ ├── form-definition.html
│ ├── form-definitions.html
│ ├── form-deployment.html
│ ├── form-deployments.html
│ ├── form-element-template.html
│ ├── form-instance.html
│ ├── form-instances.html
│ ├── form-popup.html
│ ├── form-render-popup.html
│ ├── job-delete-popup.html
│ ├── job.html
│ ├── jobs.html
│ ├── process-definition-diagram-popup.html
│ ├── process-definition-edit-category-popup.html
│ ├── process-definition.html
│ ├── process-definitions.html
│ ├── process-instance-delete-popup.html
│ ├── process-instance-diagram-popup.html
│ ├── process-instance-migration-diagram-popup.html
│ ├── process-instance-migration-popup.html
│ ├── process-instance.html
│ ├── process-instances.html
│ ├── redeploy-app-popup.html
│ ├── task-assign-popup.html
│ ├── task-complete-popup.html
│ ├── task-delegate-popup.html
│ ├── task-delete-popup.html
│ ├── task-edit-popup.html
│ ├── task-resolve-popup.html
│ ├── task.html
│ ├── tasks.html
│ ├── update-variable-popup.html
│ ├── upload-app.html
│ ├── upload-cmmn-deployment.html
│ ├── upload-deployment.html
│ ├── upload-dmn-deployment.html
│ ├── upload-form-deployment.html
│ ├── upload-from-modeler-popup.html
│ ├── user-change-password-popup.html
│ ├── user-delete-popup.html
│ ├── user-edit-popup.html
│ ├── user-new-popup.html
│ ├── users.html
│ ├── variable-add-popup.html
│ └── variable-delete-popup.html
├── idm/
│ ├── browserconfig.xml
│ ├── error/
│ │ └── 404.html
│ ├── i18n/
│ │ ├── en.json
│ │ ├── es.json
│ │ ├── fr.json
│ │ ├── pt-BR.json
│ │ └── zh-CN.json
│ ├── index.html
│ ├── libs/
│ │ ├── angular-animate_1.3.13/
│ │ │ └── angular-animate.js
│ │ ├── angular-cookies_1.3.13/
│ │ │ └── angular-cookies.js
│ │ ├── angular-drag-and-drop-lists_1.2.0/
│ │ │ └── angular-drag-and-drop-lists.js
│ │ ├── angular-dragdrop_1.0.11/
│ │ │ └── angular-dragdrop.js
│ │ ├── angular-gridster_0.11.7/
│ │ │ └── angular-gridster.js
│ │ ├── angular-hotkeys_1.4.5/
│ │ │ ├── hotkeys--activiti-patch.js
│ │ │ ├── hotkeys.css
│ │ │ └── hotkeys.js
│ │ ├── angular-mocks_1.2.13/
│ │ │ └── angular-mocks.js
│ │ ├── angular-resource_1.3.13/
│ │ │ └── angular-resource.js
│ │ ├── angular-route_1.3.13/
│ │ │ └── angular-route.js
│ │ ├── angular-sanitize_1.3.13/
│ │ │ └── angular-sanitize.js
│ │ ├── angular-spectrum-colorpicker_1.0.13/
│ │ │ ├── spectrum.css
│ │ │ └── spectrum.js
│ │ ├── angular-strap_2.1.6/
│ │ │ ├── angular-strap.js
│ │ │ └── angular-strap.tpl.js
│ │ ├── angular-translate-loader-static-files/
│ │ │ ├── .bower.json
│ │ │ └── angular-translate-loader-static-files.js
│ │ ├── angular-translate-storage-cookie/
│ │ │ ├── .bower.json
│ │ │ └── angular-translate-storage-cookie.js
│ │ ├── angular-translate_2.15.1/
│ │ │ └── angular-translate.js
│ │ ├── angular_1.3.13/
│ │ │ └── angular.js
│ │ ├── autofill-events_1.0.0/
│ │ │ └── autofill-event.js
│ │ ├── bootstrap-daterangepicker_1.3.7/
│ │ │ ├── daterangepicker-bs3.css
│ │ │ └── daterangepicker.js
│ │ ├── bootstrap-tour_0.9.1/
│ │ │ └── bootstrap-tour.js
│ │ ├── bootstrap_3.1.1/
│ │ │ ├── css/
│ │ │ │ ├── bootstrap-theme.css
│ │ │ │ └── bootstrap.css
│ │ │ └── js/
│ │ │ └── bootstrap.js
│ │ ├── es5-shim-15.3.4.5/
│ │ │ ├── .bower.json
│ │ │ ├── .gitignore
│ │ │ ├── CHANGES
│ │ │ ├── CONTRIBUTORS.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── es5-sham.js
│ │ │ ├── es5-shim.js
│ │ │ ├── package.json
│ │ │ └── tests/
│ │ │ ├── helpers/
│ │ │ │ ├── h-kill.js
│ │ │ │ ├── h-matchers.js
│ │ │ │ └── h.js
│ │ │ ├── index.html
│ │ │ ├── index.min.html
│ │ │ ├── lib/
│ │ │ │ ├── jasmine-html.js
│ │ │ │ ├── jasmine.css
│ │ │ │ ├── jasmine.js
│ │ │ │ └── json2.js
│ │ │ └── spec/
│ │ │ ├── s-array.js
│ │ │ ├── s-date.js
│ │ │ ├── s-function.js
│ │ │ ├── s-number.js
│ │ │ ├── s-object.js
│ │ │ └── s-string.js
│ │ ├── html2canvas_0.4.1/
│ │ │ └── html2canvas.js
│ │ ├── jquery_1.11.0/
│ │ │ └── jquery.js
│ │ ├── json3_3.2.6/
│ │ │ ├── LICENSE
│ │ │ └── lib/
│ │ │ └── json3.js
│ │ ├── ng-file-upload/
│ │ │ ├── FileAPI.flash.swf
│ │ │ ├── FileAPI.js
│ │ │ ├── ng-file-upload-all.js
│ │ │ ├── ng-file-upload-shim.js
│ │ │ └── ng-file-upload.js
│ │ ├── sizzle_1.10.16/
│ │ │ ├── .bower.json
│ │ │ ├── tasks/
│ │ │ │ ├── commit.js
│ │ │ │ ├── compile.js
│ │ │ │ ├── dist.js
│ │ │ │ ├── release.js
│ │ │ │ ├── tag.js
│ │ │ │ └── version.js
│ │ │ └── test/
│ │ │ ├── data/
│ │ │ │ ├── empty.js
│ │ │ │ ├── mixed_sort.html
│ │ │ │ └── testinit.js
│ │ │ ├── index.html
│ │ │ ├── jquery.js
│ │ │ ├── libs/
│ │ │ │ └── qunit/
│ │ │ │ ├── qunit.css
│ │ │ │ └── qunit.js
│ │ │ └── unit/
│ │ │ ├── extending.js
│ │ │ ├── selector.js
│ │ │ └── utilities.js
│ │ └── ui-grid_3.0.0/
│ │ ├── ui-grid.css
│ │ └── ui-grid.js
│ ├── manifest.json
│ ├── scripts/
│ │ ├── app-cfg.js
│ │ ├── common/
│ │ │ ├── directives.js
│ │ │ ├── providers-config.js
│ │ │ └── services/
│ │ │ ├── authentication-service.js
│ │ │ ├── group-service.js
│ │ │ ├── recursion-helper.js
│ │ │ ├── resource-service.js
│ │ │ └── user-service.js
│ │ ├── controllers.js
│ │ ├── idm-app.js
│ │ ├── idm-group-mgmt-controller.js
│ │ ├── idm-privilege-mgmt-controller.js
│ │ ├── idm-profile-mgmt-controller.js
│ │ ├── idm-service.js
│ │ ├── idm-user-mgmt-controller.js
│ │ └── resource-loader.js
│ ├── styles/
│ │ ├── common/
│ │ │ └── style.css
│ │ └── style-idm.css
│ └── views/
│ ├── common/
│ │ └── popover/
│ │ ├── select-group-popover.html
│ │ └── select-people-popover.html
│ ├── empty.html
│ ├── idm-group-mgmt.html
│ ├── idm-privilege-mgmt.html
│ ├── idm-profile-mgmt.html
│ ├── idm-user-mgmt.html
│ ├── login.html
│ └── popup/
│ ├── idm-activate-group.html
│ ├── idm-change-password.html
│ ├── idm-delete-group.html
│ ├── idm-group-create.html
│ ├── idm-group-member-delete.html
│ ├── idm-profile-picture-upload.html
│ ├── idm-user-create.html
│ ├── idm-user-password-change.html
│ ├── idm-user-status-edit.html
│ └── idm-user-type-edit.html
├── modeler/
│ ├── 404.html
│ ├── browserconfig.xml
│ ├── display/
│ │ ├── .gitignore
│ │ ├── Gruntfile.js
│ │ ├── Polyline.js
│ │ ├── bpmn-draw.js
│ │ ├── bpmn-icons.js
│ │ ├── displaymodel.css
│ │ ├── displaymodel.html
│ │ ├── displaymodel.js
│ │ └── package.json
│ ├── display-cmmn/
│ │ ├── cmmn-draw.js
│ │ ├── cmmn-icons.js
│ │ ├── displaymodel.css
│ │ ├── displaymodel.html
│ │ └── displaymodel.js
│ ├── editor-app/
│ │ ├── configuration/
│ │ │ ├── flowable-header-custom.js
│ │ │ ├── flowable-toolbar-custom-actions.js
│ │ │ ├── properties/
│ │ │ │ ├── assignment-display-template.html
│ │ │ │ ├── assignment-popup.html
│ │ │ │ ├── assignment-write-template.html
│ │ │ │ ├── boolean-property-template.html
│ │ │ │ ├── calledelementtype-property-write-template.html
│ │ │ │ ├── case-reference-display-template.html
│ │ │ │ ├── case-reference-popup.html
│ │ │ │ ├── case-reference-write-template.html
│ │ │ │ ├── condition-expression-display-template.html
│ │ │ │ ├── condition-expression-popup.html
│ │ │ │ ├── condition-expression-write-template.html
│ │ │ │ ├── data-properties-display-template.html
│ │ │ │ ├── data-properties-popup.html
│ │ │ │ ├── data-properties-write-template.html
│ │ │ │ ├── decisiontable-reference-display-template.html
│ │ │ │ ├── decisiontable-reference-popup.html
│ │ │ │ ├── decisiontable-reference-write-template.html
│ │ │ │ ├── default-value-display-template.html
│ │ │ │ ├── duedate-display-template.html
│ │ │ │ ├── duedate-popup.html
│ │ │ │ ├── duedate-write-template.html
│ │ │ │ ├── errorgrid-critical.html
│ │ │ │ ├── event-listeners-display-template.html
│ │ │ │ ├── event-listeners-popup.html
│ │ │ │ ├── event-listeners-write-template.html
│ │ │ │ ├── execution-listeners-display-template.html
│ │ │ │ ├── execution-listeners-popup.html
│ │ │ │ ├── execution-listeners-write-template.html
│ │ │ │ ├── feedback-popup.html
│ │ │ │ ├── fields-display-template.html
│ │ │ │ ├── fields-popup.html
│ │ │ │ ├── fields-write-template.html
│ │ │ │ ├── form-properties-display-template.html
│ │ │ │ ├── form-properties-popup.html
│ │ │ │ ├── form-properties-write-template.html
│ │ │ │ ├── form-reference-display-template.html
│ │ │ │ ├── form-reference-popup.html
│ │ │ │ ├── form-reference-write-template.html
│ │ │ │ ├── http-request-method-display-template.html
│ │ │ │ ├── http-request-method-property-write-template.html
│ │ │ │ ├── in-parameters-display-template.html
│ │ │ │ ├── in-parameters-popup.html
│ │ │ │ ├── in-parameters-write-template.html
│ │ │ │ ├── message-definitions-display-template.html
│ │ │ │ ├── message-definitions-popup.html
│ │ │ │ ├── message-definitions-write-template.html
│ │ │ │ ├── message-property-write-template.html
│ │ │ │ ├── multiinstance-property-write-template.html
│ │ │ │ ├── ordering-property-write-template.html
│ │ │ │ ├── out-parameters-display-template.html
│ │ │ │ ├── out-parameters-popup.html
│ │ │ │ ├── out-parameters-write-template.html
│ │ │ │ ├── plan-item-lifecycle-listeners-display-template.html
│ │ │ │ ├── plan-item-lifecycle-listeners-popup.html
│ │ │ │ ├── plan-item-lifecycle-listeners-write-template.html
│ │ │ │ ├── planitem-dropdown-read-template.html
│ │ │ │ ├── planitem-dropdown-write-template.html
│ │ │ │ ├── process-historylevel-property-write-template.html
│ │ │ │ ├── process-reference-display-template.html
│ │ │ │ ├── process-reference-popup.html
│ │ │ │ ├── process-reference-write-template.html
│ │ │ │ ├── sequenceflow-order-display-template.html
│ │ │ │ ├── sequenceflow-order-popup.html
│ │ │ │ ├── sequenceflow-order-write-template.html
│ │ │ │ ├── signal-definitions-display-template.html
│ │ │ │ ├── signal-definitions-popup.html
│ │ │ │ ├── signal-definitions-write-template.html
│ │ │ │ ├── signal-property-write-template.html
│ │ │ │ ├── string-property-write-mode-template.html
│ │ │ │ ├── task-listeners-display-template.html
│ │ │ │ ├── task-listeners-popup.html
│ │ │ │ ├── task-listeners-write-template.html
│ │ │ │ ├── text-popup.html
│ │ │ │ ├── text-property-write-template.html
│ │ │ │ ├── transition-event-write-template.html
│ │ │ │ ├── trigger-mode-read-template.html
│ │ │ │ └── trigger-mode-write-template.html
│ │ │ ├── properties-assignment-controller.js
│ │ │ ├── properties-calledelementtype-controller.js
│ │ │ ├── properties-case-reference-controller.js
│ │ │ ├── properties-condition-expression-controller.js
│ │ │ ├── properties-custom-controllers.js
│ │ │ ├── properties-data-properties-controller.js
│ │ │ ├── properties-decisiontable-reference-controller.js
│ │ │ ├── properties-default-controllers.js
│ │ │ ├── properties-duedate-controller.js
│ │ │ ├── properties-event-listeners-controller.js
│ │ │ ├── properties-execution-listeners-controller.js
│ │ │ ├── properties-fields-controller.js
│ │ │ ├── properties-form-properties-controller.js
│ │ │ ├── properties-form-reference-controller.js
│ │ │ ├── properties-httprequest-controller.js
│ │ │ ├── properties-in-parameters-controller.js
│ │ │ ├── properties-message-definitions-controller.js
│ │ │ ├── properties-message-scope-controller.js
│ │ │ ├── properties-multiinstance-controller.js
│ │ │ ├── properties-ordering-controller.js
│ │ │ ├── properties-out-parameters-controller.js
│ │ │ ├── properties-plan-item-lifecycle-listeners-controller.js
│ │ │ ├── properties-planitem-dropdown-controller.js
│ │ │ ├── properties-process-historylevel-controller.js
│ │ │ ├── properties-process-reference-controller.js
│ │ │ ├── properties-sequenceflow-order-controller.js
│ │ │ ├── properties-signal-definitions-controller.js
│ │ │ ├── properties-signal-scope-controller.js
│ │ │ ├── properties-task-listeners-controller.js
│ │ │ ├── properties-transition-event-controller.js
│ │ │ ├── properties-trigger-mode-controller.js
│ │ │ ├── properties.js
│ │ │ ├── toolbar-custom-actions.js
│ │ │ ├── toolbar-default-actions.js
│ │ │ ├── toolbar.js
│ │ │ └── url-config.js
│ │ ├── css/
│ │ │ └── style.css
│ │ ├── define-data-controller.js
│ │ ├── editor/
│ │ │ ├── css/
│ │ │ │ └── editor.css
│ │ │ ├── i18n/
│ │ │ │ ├── translation_de.js
│ │ │ │ ├── translation_en_us.js
│ │ │ │ ├── translation_signavio_de.js
│ │ │ │ └── translation_signavio_en_us.js
│ │ │ ├── oryx.debug.js
│ │ │ └── oryx.js
│ │ ├── editor-config.js
│ │ ├── editor-controller.js
│ │ ├── editor-utils.js
│ │ ├── editor.html
│ │ ├── editormanager.js
│ │ ├── eventbus.js
│ │ ├── fonts/
│ │ │ └── FontAwesome.otf
│ │ ├── header-controller.js
│ │ ├── libs/
│ │ │ ├── jquery.autogrow-textarea.js
│ │ │ ├── mousetrap/
│ │ │ │ └── 1.6.0/
│ │ │ │ ├── mousetrap-record.js
│ │ │ │ └── mousetrap.js
│ │ │ ├── path_parser.js
│ │ │ ├── prototype-1.6.1.js
│ │ │ ├── prototype-1.7.3.js
│ │ │ ├── ui-utils.min-0.2.1.js
│ │ │ └── update-helper.js
│ │ ├── partials/
│ │ │ ├── process-tree-list.html
│ │ │ ├── root-stencil-item-template.html
│ │ │ └── stencil-item-template.html
│ │ ├── plugins.xml
│ │ ├── popups/
│ │ │ ├── define-data.html
│ │ │ ├── icon-template.html
│ │ │ ├── save-model.html
│ │ │ ├── select-shape.html
│ │ │ ├── unsaved-changes.html
│ │ │ └── validate-model.html
│ │ ├── process-navigator-controller.js
│ │ ├── select-shape-controller.js
│ │ ├── stencil-controller.js
│ │ ├── toolbar-controller.js
│ │ └── tour.js
│ ├── i18n/
│ │ ├── en.json
│ │ ├── es.json
│ │ ├── fr.json
│ │ ├── pt-BR.json
│ │ └── zh-CN.json
│ ├── index.html
│ ├── libs/
│ │ ├── angular-animate_1.3.13/
│ │ │ └── angular-animate.js
│ │ ├── angular-cookies_1.3.13/
│ │ │ └── angular-cookies.js
│ │ ├── angular-drag-and-drop-lists_1.2.0/
│ │ │ └── angular-drag-and-drop-lists.js
│ │ ├── angular-dragdrop_1.0.11/
│ │ │ └── angular-dragdrop.js
│ │ ├── angular-gridster_0.11.7/
│ │ │ └── angular-gridster.js
│ │ ├── angular-hotkeys_1.4.5/
│ │ │ ├── hotkeys--activiti-patch.js
│ │ │ ├── hotkeys.css
│ │ │ └── hotkeys.js
│ │ ├── angular-mocks_1.2.13/
│ │ │ └── angular-mocks.js
│ │ ├── angular-resource_1.3.13/
│ │ │ └── angular-resource.js
│ │ ├── angular-route_1.3.13/
│ │ │ └── angular-route.js
│ │ ├── angular-sanitize_1.3.13/
│ │ │ └── angular-sanitize.js
│ │ ├── angular-spectrum-colorpicker_1.0.13/
│ │ │ ├── spectrum.css
│ │ │ └── spectrum.js
│ │ ├── angular-strap_2.1.6/
│ │ │ ├── angular-strap.js
│ │ │ └── angular-strap.tpl.js
│ │ ├── angular-translate-loader-static-files/
│ │ │ ├── .bower.json
│ │ │ └── angular-translate-loader-static-files.js
│ │ ├── angular-translate-storage-cookie/
│ │ │ ├── .bower.json
│ │ │ └── angular-translate-storage-cookie.js
│ │ ├── angular-translate_2.15.1/
│ │ │ └── angular-translate.js
│ │ ├── angular_1.3.13/
│ │ │ └── angular.js
│ │ ├── autofill-events_1.0.0/
│ │ │ └── autofill-event.js
│ │ ├── bootstrap-daterangepicker_1.3.7/
│ │ │ ├── daterangepicker-bs3.css
│ │ │ └── daterangepicker.js
│ │ ├── bootstrap-tour_0.9.1/
│ │ │ └── bootstrap-tour.js
│ │ ├── bootstrap_3.1.1/
│ │ │ ├── css/
│ │ │ │ ├── bootstrap-theme.css
│ │ │ │ └── bootstrap.css
│ │ │ └── js/
│ │ │ └── bootstrap.js
│ │ ├── es5-shim-15.3.4.5/
│ │ │ ├── .bower.json
│ │ │ ├── .gitignore
│ │ │ ├── CHANGES
│ │ │ ├── CONTRIBUTORS.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── es5-sham.js
│ │ │ ├── es5-shim.js
│ │ │ ├── package.json
│ │ │ └── tests/
│ │ │ ├── helpers/
│ │ │ │ ├── h-kill.js
│ │ │ │ ├── h-matchers.js
│ │ │ │ └── h.js
│ │ │ ├── index.html
│ │ │ ├── index.min.html
│ │ │ ├── lib/
│ │ │ │ ├── jasmine-html.js
│ │ │ │ ├── jasmine.css
│ │ │ │ ├── jasmine.js
│ │ │ │ └── json2.js
│ │ │ └── spec/
│ │ │ ├── s-array.js
│ │ │ ├── s-date.js
│ │ │ ├── s-function.js
│ │ │ ├── s-number.js
│ │ │ ├── s-object.js
│ │ │ └── s-string.js
│ │ ├── html2canvas_0.4.1/
│ │ │ └── html2canvas.js
│ │ ├── jquery_1.11.0/
│ │ │ └── jquery.js
│ │ ├── json3_3.2.6/
│ │ │ ├── LICENSE
│ │ │ └── lib/
│ │ │ └── json3.js
│ │ ├── ng-file-upload/
│ │ │ ├── FileAPI.flash.swf
│ │ │ ├── FileAPI.js
│ │ │ ├── ng-file-upload-all.js
│ │ │ ├── ng-file-upload-shim.js
│ │ │ └── ng-file-upload.js
│ │ ├── ng-handsontable_0.13/
│ │ │ └── ngHandsontable.js
│ │ ├── sizzle_1.10.16/
│ │ │ ├── .bower.json
│ │ │ ├── tasks/
│ │ │ │ ├── commit.js
│ │ │ │ ├── compile.js
│ │ │ │ ├── dist.js
│ │ │ │ ├── release.js
│ │ │ │ ├── tag.js
│ │ │ │ └── version.js
│ │ │ └── test/
│ │ │ ├── data/
│ │ │ │ ├── empty.js
│ │ │ │ ├── mixed_sort.html
│ │ │ │ └── testinit.js
│ │ │ ├── index.html
│ │ │ ├── jquery.js
│ │ │ ├── libs/
│ │ │ │ └── qunit/
│ │ │ │ ├── qunit.css
│ │ │ │ └── qunit.js
│ │ │ └── unit/
│ │ │ ├── extending.js
│ │ │ ├── selector.js
│ │ │ └── utilities.js
│ │ └── ui-grid_3.0.0/
│ │ ├── ui-grid.css
│ │ └── ui-grid.js
│ ├── manifest.json
│ ├── scripts/
│ │ ├── app-cfg.js
│ │ ├── app.js
│ │ ├── common/
│ │ │ ├── controllers/
│ │ │ │ └── about.js
│ │ │ ├── directives.js
│ │ │ ├── providers-config.js
│ │ │ └── services/
│ │ │ ├── recursion-helper.js
│ │ │ └── resource-service.js
│ │ ├── configuration/
│ │ │ ├── app-definition-toolbar-default-actions.js
│ │ │ ├── app-definition-toolbar.js
│ │ │ ├── decision-table-toolbar-default-actions.js
│ │ │ ├── decision-table-toolbar.js
│ │ │ ├── form-builder-toolbar-default-actions.js
│ │ │ ├── form-builder-toolbar.js
│ │ │ └── url-config.js
│ │ ├── controllers/
│ │ │ ├── app-definition-builder.js
│ │ │ ├── app-definition-toolbar-controller.js
│ │ │ ├── app-definition.js
│ │ │ ├── app-definitions.js
│ │ │ ├── casemodel.js
│ │ │ ├── casemodels.js
│ │ │ ├── decision-table-editor.js
│ │ │ ├── decision-table-toolbar-controller.js
│ │ │ ├── decision-table.js
│ │ │ ├── decision-tables.js
│ │ │ ├── form-builder.js
│ │ │ ├── form-readonly-view.js
│ │ │ ├── form-toolbar-controller.js
│ │ │ ├── form.js
│ │ │ ├── forms.js
│ │ │ ├── model-common-actions.js
│ │ │ ├── process.js
│ │ │ └── processes.js
│ │ ├── editor-directives.js
│ │ ├── resource-loader.js
│ │ └── services/
│ │ ├── decision-table-service.js
│ │ ├── form-services.js
│ │ ├── identity-services.js
│ │ └── util-services.js
│ ├── styles/
│ │ ├── common/
│ │ │ ├── style-retina.css
│ │ │ └── style.css
│ │ └── style-editor.css
│ └── views/
│ ├── app-definition-builder.html
│ ├── app-definition.html
│ ├── app-definitions.html
│ ├── casemodel.html
│ ├── casemodels.html
│ ├── decision-table-editor.html
│ ├── decision-table.html
│ ├── decision-tables.html
│ ├── form-builder.html
│ ├── form.html
│ ├── forms.html
│ ├── popover/
│ │ ├── formfield-edit-popover.html
│ │ ├── history.html
│ │ ├── select-app-icon.html
│ │ ├── select-app-theme.html
│ │ └── select-group-popover.html
│ ├── popup/
│ │ ├── app-definition-create.html
│ │ ├── app-definition-delete.html
│ │ ├── app-definition-duplicate.html
│ │ ├── app-definition-import.html
│ │ ├── app-definition-models-included.html
│ │ ├── app-definition-publish.html
│ │ ├── app-definition-save-model.html
│ │ ├── app-definitions-import.html
│ │ ├── casemodel-create.html
│ │ ├── casemodel-duplicate.html
│ │ ├── casemodel-import.html
│ │ ├── decision-table-create.html
│ │ ├── decision-table-duplicate.html
│ │ ├── decision-table-edit-hit-policy.html
│ │ ├── decision-table-edit-input-expression.html
│ │ ├── decision-table-edit-output-expression.html
│ │ ├── decision-table-import.html
│ │ ├── decision-table-save-model.html
│ │ ├── form-create.html
│ │ ├── form-duplicate.html
│ │ ├── form-save-model.html
│ │ ├── model-delete.html
│ │ ├── model-edit.html
│ │ ├── model-use-as-new-version.html
│ │ ├── process-create.html
│ │ ├── process-duplicate.html
│ │ ├── process-import.html
│ │ └── subprocess-create.html
│ ├── process.html
│ ├── processes.html
│ └── templates/
│ ├── decision-table-header-template.html
│ ├── decision-table-headercell-template.html
│ └── form-builder-element-template.html
├── nginx/
│ └── nginx.conf
└── task/
├── browserconfig.xml
├── display/
│ ├── Gruntfile.js
│ ├── Polyline.js
│ ├── bpmn-draw.js
│ ├── bpmn-icons.js
│ ├── displaymodel.css
│ ├── displaymodel.html
│ ├── displaymodel.js
│ └── package.json
├── display-cmmn/
│ ├── cmmn-draw.js
│ ├── cmmn-icons.js
│ ├── displaymodel.css
│ ├── displaymodel.html
│ └── displaymodel.js
├── error/
│ └── 404.html
├── i18n/
│ ├── en.json
│ ├── fr.json
│ ├── pt-BR.json
│ └── zh-CN.json
├── index.html
├── libs/
│ ├── angular-animate_1.3.13/
│ │ └── angular-animate.js
│ ├── angular-cookies_1.3.13/
│ │ └── angular-cookies.js
│ ├── angular-drag-and-drop-lists_1.2.0/
│ │ └── angular-drag-and-drop-lists.js
│ ├── angular-dragdrop_1.0.11/
│ │ └── angular-dragdrop.js
│ ├── angular-gridster_0.11.7/
│ │ └── angular-gridster.js
│ ├── angular-hotkeys_1.4.5/
│ │ ├── hotkeys--activiti-patch.js
│ │ ├── hotkeys.css
│ │ └── hotkeys.js
│ ├── angular-mocks_1.2.13/
│ │ └── angular-mocks.js
│ ├── angular-resource_1.3.13/
│ │ └── angular-resource.js
│ ├── angular-route_1.3.13/
│ │ └── angular-route.js
│ ├── angular-sanitize_1.3.13/
│ │ └── angular-sanitize.js
│ ├── angular-spectrum-colorpicker_1.0.13/
│ │ ├── spectrum.css
│ │ └── spectrum.js
│ ├── angular-strap_2.1.6/
│ │ ├── angular-strap.js
│ │ └── angular-strap.tpl.js
│ ├── angular-translate-loader-static-files/
│ │ ├── .bower.json
│ │ └── angular-translate-loader-static-files.js
│ ├── angular-translate-storage-cookie/
│ │ ├── .bower.json
│ │ └── angular-translate-storage-cookie.js
│ ├── angular-translate_2.15.1/
│ │ └── angular-translate.js
│ ├── angular_1.3.13/
│ │ └── angular.js
│ ├── autofill-events_1.0.0/
│ │ └── autofill-event.js
│ ├── bootstrap-daterangepicker_1.3.7/
│ │ ├── daterangepicker-bs3.css
│ │ └── daterangepicker.js
│ ├── bootstrap-tour_0.9.1/
│ │ └── bootstrap-tour.js
│ ├── bootstrap_3.1.1/
│ │ ├── css/
│ │ │ ├── bootstrap-theme.css
│ │ │ └── bootstrap.css
│ │ └── js/
│ │ └── bootstrap.js
│ ├── es5-shim-15.3.4.5/
│ │ ├── .bower.json
│ │ ├── CHANGES
│ │ ├── CONTRIBUTORS.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── es5-sham.js
│ │ ├── es5-shim.js
│ │ ├── package.json
│ │ └── tests/
│ │ ├── helpers/
│ │ │ ├── h-kill.js
│ │ │ ├── h-matchers.js
│ │ │ └── h.js
│ │ ├── index.html
│ │ ├── index.min.html
│ │ ├── lib/
│ │ │ ├── jasmine-html.js
│ │ │ ├── jasmine.css
│ │ │ ├── jasmine.js
│ │ │ └── json2.js
│ │ └── spec/
│ │ ├── s-array.js
│ │ ├── s-date.js
│ │ ├── s-function.js
│ │ ├── s-number.js
│ │ ├── s-object.js
│ │ └── s-string.js
│ ├── html2canvas_0.4.1/
│ │ └── html2canvas.js
│ ├── jquery_1.11.0/
│ │ └── jquery.js
│ ├── json3_3.2.6/
│ │ ├── LICENSE
│ │ └── lib/
│ │ └── json3.js
│ ├── ng-file-upload/
│ │ ├── FileAPI.flash.swf
│ │ ├── FileAPI.js
│ │ ├── ng-file-upload-all.js
│ │ ├── ng-file-upload-shim.js
│ │ └── ng-file-upload.js
│ ├── sizzle_1.10.16/
│ │ ├── .bower.json
│ │ ├── tasks/
│ │ │ ├── commit.js
│ │ │ ├── compile.js
│ │ │ ├── dist.js
│ │ │ ├── release.js
│ │ │ ├── tag.js
│ │ │ └── version.js
│ │ └── test/
│ │ ├── data/
│ │ │ ├── empty.js
│ │ │ ├── mixed_sort.html
│ │ │ └── testinit.js
│ │ ├── index.html
│ │ ├── jquery.js
│ │ ├── libs/
│ │ │ └── qunit/
│ │ │ ├── qunit.css
│ │ │ └── qunit.js
│ │ └── unit/
│ │ ├── extending.js
│ │ ├── selector.js
│ │ └── utilities.js
│ └── ui-grid_3.0.0/
│ ├── ui-grid.css
│ └── ui-grid.js
├── manifest.json
├── scripts/
│ ├── app-cfg.js
│ ├── common/
│ │ ├── controllers/
│ │ │ └── about.js
│ │ ├── directives.js
│ │ ├── providers-config.js
│ │ └── services/
│ │ ├── functional-group-service.js
│ │ ├── recursion-helper.js
│ │ ├── related-content-service.js
│ │ ├── resource-service.js
│ │ ├── runtime-app-definition-service.js
│ │ └── user-service.js
│ ├── landing-app.js
│ ├── landing-controller.js
│ └── resource-loader.js
├── styles/
│ ├── common/
│ │ ├── style-retina.css
│ │ └── style.css
│ └── style-landing.css
├── views/
│ ├── common/
│ │ ├── popover/
│ │ │ ├── select-functional-group-popover.html
│ │ │ └── select-people-popover.html
│ │ └── templates/
│ │ └── external-content-template.html
│ ├── landing.html
│ └── modal/
│ └── add-app-definition-modal.html
└── workflow/
├── i18n/
│ ├── en.json
│ ├── es.json
│ ├── fr.json
│ ├── pt-BR.json
│ └── zh-CN.json
├── index.html
├── scripts/
│ ├── controllers/
│ │ ├── case-start-form.js
│ │ ├── case.js
│ │ ├── cases.js
│ │ ├── document-preview.js
│ │ ├── process.js
│ │ ├── processes.js
│ │ ├── render-form.js
│ │ ├── start-form.js
│ │ ├── start-process.js
│ │ ├── task.js
│ │ └── tasks.js
│ ├── controllers.js
│ ├── services/
│ │ ├── app-definition-service.js
│ │ ├── case-service.js
│ │ ├── cmmn-milestone-service.js
│ │ ├── cmmn-plan-item-instance-service.js
│ │ ├── cmmn-stage-service.js
│ │ ├── cmmn-user-event-listener-service.js
│ │ ├── comment-service.js
│ │ ├── form-service.js
│ │ ├── process-service.js
│ │ └── task-service.js
│ ├── workflow-app.js
│ └── workflow-directives.js
├── styles/
│ └── style-workflow.css
└── views/
├── case-detail.html
├── case-start-form.html
├── case.html
├── cases.html
├── integration-mode-error.html
├── modal/
│ ├── case-cancel.html
│ ├── case-instance-graphical.html
│ ├── delete-content.html
│ ├── process-cancel.html
│ └── process-instance-graphical.html
├── popover/
│ ├── add-related-content-popover.html
│ └── create-task-popover.html
├── process-detail.html
├── process.html
├── processes.html
├── start-form.html
├── start-process.html
├── task-detail.html
├── task-form-test.html
├── task.html
├── tasks.html
└── templates/
├── date-picker-row-edit-template.html
├── date-picker-template.html
├── document-preview.html
├── due-date-picker-template.html
├── form-element-template.html
└── form-template.html
================================================
FILE CONTENTS
================================================
================================================
FILE: README.md
================================================
经过两周左右时间的学习,Flowable基础知识自认为学习完毕,简单构思设计之后,开始上手实践了。由于Flowable官方已经提供了丰富的REST包(和Activiti差不多),基本功能已经满足我们的要求了,个别接口不适用的可自行重写稍作调整即可。
Flowable官方提供的五个war包
| starter | 描述 | 在线体验 |
| flowable-modeler | 让具有建模权限的用户可以创建流程模型、表单、选择表与应用定义。 | https://t.cn/A6cjNwAj |
| flowable-idm | 身份管理应用。为所有Flowable UI应用提供单点登录认证功能,并且为拥有IDM管理员权限的用户提供了管理用户、组与权限的功能 | https://t.cn/A6cjCFHc |
| flowable-task | 运行时任务应用。提供了启动流程实例、编辑任务表单、完成任务,以及查询流程实例与任务的功能。 | https://t.cn/A6cjNLWv |
| flowable-admin | 管理应用。让具有管理员权限的用户可以查询BPMN、DMN、Form及Content引擎,并提供了许多选项用于修改流程实例、任务、作业等。管理应用通过REST API连接至引擎,并与Flowable Task应用及Flowable REST应用一同部署。 | https://t.cn/A6cjN4uq |
| flowable-rest | Flowable页面包含的常用REST API | |
在线体验账号:**admin/123** (个人服务器,配置较低,仅供体验,请勿对应用进行压测)
**先访问idm,使用体验账号登录后,再去访问modeler,task,admin其他模块**
以官方提供的war包为基准,集成以上四个默认页面对应的REST接口。
### 开始集成
#### 后端集成
- maven
~~~xml
org.flowable
flowable-spring-boot-starter-rest
${flowable.version}
org.flowable
flowable-ui-modeler-conf
${flowable.version}
org.flowable
flowable-ui-task-conf
${flowable.version}
org.flowable
flowable-ui-admin-conf
${flowable.version}
org.flowable
flowable-ui-idm-conf
${flowable.version}
~~~
- gradle
~~~groovy
compile group: 'org.flowable', name: 'flowable-spring-boot-starter-rest', version:'6.4.1'
compile group: 'org.flowable', name: 'flowable-ui-modeler-conf', version:'6.4.1'
compile group: 'org.flowable', name: 'flowable-ui-task-conf', version:'6.4.1'
compile group: 'org.flowable', name: 'flowable-ui-admin-conf', version:'6.4.1'
compile group: 'org.flowable', name: 'flowable-ui-idm-conf', version:'6.4.1'
~~~
**注:**
> flowable-ui-xxx-conf: UI独立于业务外的配置
> flowable-ui-xxx-logic: UI的业务逻辑
> flowable-ui-xxx-rest: 提供常用的操作REST API
以上就是集成Flowable UI的基础包了。
由于flowable-ui-xxx-conf中包中,每个中都有对应自己的如`ApplicationConfiguration`等配置类,所以如果用默认配置会出现
~~~
conflicts with existing, non-compatible bean definition of same name and class
~~~
类似的错误信息,提示在Spring容器中存在两个相同名称的Bean。
所以不能使用默认的配置类,只能自己去编写配置类,完成flowable-ui-xxx-conf的配置。
- AppDispatcherServletConfiguration
```java
@Configuration
@ComponentScan(value = {
"org.flowable.ui.admin.rest",
"org.flowable.ui.task.rest.runtime",
"org.flowable.ui.idm.rest.app",
"org.flowable.ui.common.rest.exception",
"org.flowable.ui.modeler.rest.app",
"org.flowable.ui.common.rest"},
excludeFilters = {
@ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, value = RemoteAccountResource.class),
@ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, value = StencilSetResource.class),
@ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, value = EditorUsersResource.class),
@ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, value = EditorGroupsResource.class)
})
@EnableAsync
public class AppDispatcherServletConfiguration implements WebMvcRegistrations
// 下面类内容省略,可参考org.flowable.ui.xxx.servlet.AppDispatcherServletConfiguration类
```
**注:** 通过`StencilSetResource`类汉化流程设计器(其实没必要重写类,只需要将stencilset_bpmn.json文件内容汉化即可,重写的目的是以后可以通过此处兼容国际化)
- ApplicationConfiguration
~~~java
@Configuration
@EnableConfigurationProperties({FlowableIdmAppProperties.class, FlowableModelerAppProperties.class, FlowableAdminAppProperties.class})
@ComponentScan(
basePackages = {
"org.flowable.ui.admin.repository",
"org.flowable.ui.admin.service",
"org.flowable.ui.task.model.component",
"org.flowable.ui.task.service.runtime",
"org.flowable.ui.task.service.debugger",
"org.flowable.ui.idm.conf",
"org.flowable.ui.idm.security",
"org.flowable.ui.idm.service",
"org.flowable.ui.modeler.repository",
"org.flowable.ui.modeler.service",
"org.flowable.ui.common.filter",
"org.flowable.ui.common.service",
"org.flowable.ui.common.repository",
"org.flowable.ui.common.security",
"org.flowable.ui.common.tenant"
},
excludeFilters = {
@ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, value = org.flowable.ui.idm.conf.ApplicationConfiguration.class)
}
)
~~~
**注:** 通过@ComponentScan注解,扫描需要的包及其接口。
- DatabaseConfiguration
~~~java
/**
* 重写flowable-ui-xxx-conf 中的 DatabaseConfiguration 类,
* 包括:flowable-ui-modeler-conf和flowable-ui-admin-conf 的DatabaseConfiguration
*/
@Configuration
@EnableTransactionManagement
public class DatabaseConfiguration {
private static final Logger LOGGER = LoggerFactory.getLogger(DatabaseConfiguration.class);
@Bean
public Liquibase modelerLiquibase(DataSource dataSource) {
Liquibase liquibase = null;
try {
DatabaseConnection connection = new JdbcConnection(dataSource.getConnection());
Database database = DatabaseFactory.getInstance().findCorrectDatabaseImplementation(connection);
database.setDatabaseChangeLogTableName("ACT_DE_" + database.getDatabaseChangeLogTableName());
database.setDatabaseChangeLogLockTableName("ACT_DE_" + database.getDatabaseChangeLogLockTableName());
liquibase = new Liquibase("META-INF/liquibase/flowable-modeler-app-db-changelog.xml", new ClassLoaderResourceAccessor(), database);
liquibase.update("flowable");
return liquibase;
} catch (Exception e) {
throw new InternalServerErrorException("Error creating liquibase database", e);
} finally {
closeDatabase(liquibase);
}
}
@Bean
public Liquibase adminLiquibase(DataSource dataSource) {
LOGGER.debug("Configuring Liquibase");
Liquibase liquibase = null;
try {
DatabaseConnection connection = new JdbcConnection(dataSource.getConnection());
Database database = DatabaseFactory.getInstance().findCorrectDatabaseImplementation(connection);
database.setDatabaseChangeLogTableName("ACT_ADM_" + database.getDatabaseChangeLogTableName());
database.setDatabaseChangeLogLockTableName("ACT_ADM_" + database.getDatabaseChangeLogLockTableName());
liquibase = new Liquibase("META-INF/liquibase/flowable-admin-app-db-changelog.xml", new ClassLoaderResourceAccessor(), database);
liquibase.update("flowable");
return liquibase;
} catch (Exception e) {
throw new InternalServerErrorException("Error creating liquibase database");
} finally {
closeDatabase(liquibase);
}
}
private void closeDatabase(Liquibase liquibase) {
if (liquibase != null) {
Database database = liquibase.getDatabase();
if (database != null) {
try {
database.close();
} catch (DatabaseException e) {
LOGGER.warn("Error closing database", e);
}
}
}
}
}
~~~
**注:** 创建Modeler的模型存储表和Admin首页的服务配置表。
- TaskUserCacheImpl
~~~java
/**
* 重写 {@link org.flowable.ui.task.service.idm.UserCacheImpl} 类,避免启动时和 {@link org.flowable.ui.idm.service.UserCacheImpl} 命名冲突
* Cache containing User objects to prevent too much DB-traffic (users exist separately from the Flowable tables, they need to be fetched afterward one by one to join with those entities).
*
*
* @author Frederik Heremans
* @author Joram Barrez
* @author Filip Hrisafov
*/
@Service
public class TaskUserCacheImpl implements UserCache
~~~
**注:** 重写 {@link org.flowable.ui.task.service.idm.UserCacheImpl} 类,避免启动时和 {@link org.flowable.ui.idm.service.UserCacheImpl} 命名冲突
- org.flowable.ui.admin.service.engine.CmmnTaskService
~~~java
package org.flowable.ui.admin.service.engine;
/**
* 覆盖jar包中的CmmnTaskService的定义,修改Bean的定义名称,避免和org.flowable.cmmn.api.CmmnTaskService命名冲突
* Service for invoking Flowable REST services.
*/
@Service("adminCmmnTaskService")
public class CmmnTaskService
~~~
由于flowable官方提供的jar包导致的冲突问题解决完毕之后,以下是application.yml中需要对Flowable做的配置,其他如数据源相关配置省略,此处不再累述。
~~~yml
flowable:
labelFontName: 宋体
activityFontName: 宋体
annotationFontName: 宋体
rest:
app:
authentication-mode: verify-privilege
process:
definition-cache-limit: 1
idm:
app:
admin:
password: test
user-id: admin
first-name: admin
last-name: admin
common:
app:
role-prefix:
idm-url: http://localhost:${server.port}/${spring.application.name}/idm
xml:
encoding: UTF-8
modeler:
app:
rest-enabled: true
admin:
app:
security:
encryption:
credentials-secret-spec: 9FGl73ngxcOoJvmL
credentials-i-v-spec: j8kdO2hejA9lKmm6
server-config:
app:
context-root: ${spring.application.name}
password: test
server-address: http://localhost
user-name: admin
port: ${server.port}
rest-root: app-api
name: Flowable App app
description: Flowable App REST config
process:
context-root: ${spring.application.name}
server-address: http://localhost
password: test
user-name: admin
rest-root: process-api
port: ${server.port}
name: Flowable Process app
description: Flowable Process REST config
form:
context-root: ${spring.application.name}
server-address: http://localhost
password: test
user-name: admin
port: ${server.port}
rest-root: form-api
name: Flowable Form app
description: Flowable Form REST config
dmn:
context-root: ${spring.application.name}
server-address: http://localhost
password: test
user-name: admin
port: ${server.port}
rest-root: dmn-api
name: Flowable DMN app
description: Flowable DMN REST config
cmmn:
context-root: ${spring.application.name}
password: test
server-address: http://localhost
user-name: admin
port: ${server.port}
rest-root: cmmn-api
name: Flowable CMMN app
description: Flowable CMMN REST config
content:
context-root: ${spring.application.name}
server-address: http://localhost
password: test
user-name: admin
rest-root: content-api
port: ${server.port}
name: Flowable Content app
description: Flowable Content REST config
database-schema-update: true
management:
endpoint:
health:
roles: access-admin
show-details: when_authorized
endpoints:
jmx:
unique-names: true
# MyBatis配置比较重要,手动去扫描Flowable默认的Mapper.xml,以及设置字段类型
mybatis:
mapper-locations:
- classpath:/META-INF/admin-mybatis-mappings/*.xml
- classpath:/META-INF/modeler-mybatis-mappings/*.xml
configuration-properties:
prefix:
boolValue: TRUE
blobType: BLOB
~~~
至此后端集成完毕。
#### 集成思路出现偏差
一开始准备将官方提供的页面集成到后端工程来,但是由于modeler页面我是直接放到static目录下的,而其他三个页面只能自己建目录存放(idm, admin, task),导致访问modeler时是以后端项目请求路径为根访问路径的,在modeler请求后端接口时,请求路径没有问题;可访问idm、admin、task时,则必须加上idm/路径,导致请求后端接口时,不管将前端请求后端的路径改为相对路径还是绝对路径,最终请求路径都存在问题。此处花费时间较多。下面会讲讲新的页面集成方式。
#### Flowable与SpringBoot版本坑
`flowable-ui-modeler-conf`中`AppDispatcherServletConfiguration`配置类,实现了`WebMvcRegistrations`接口,SpringBoot1.x中,WebMvcRegistrations在`spring-boot-autoconfigure`中的web包下,而在SpringBoot2.x中,WebMvcRegistrations被移到web.servlet下了,所以在使用默认类时,SpringBoot版本必须是2.x。
#### Flowable官方包冲突
由于是根据flowable-modeler、flowable-idm、flowable-task、flowable-admin来集成的,所以后端基础包也是需要这对应的四个,故直接集成了flowable-ui-modeler-conf、flowable-ui-idm-conf、flowable-ui-task-conf、flowable-ui-admin-conf,但是由于这四个包中存在各自的自动配置类,而且在modeler和admin中,自动配置类又和他自己的业务逻辑有关联,而且存在多个类命名相同的Spring Bean,导致Spring上下文由于出现相同名称的Bean而初始化失败,但是默认配置有些又不能不用,最终的解决办法就是去除原来所有的默认配置,将冲突的通过@ComponentScan的excludeFilters属性移除掉,然后自己去自定义配置。
#### 登录权限问题
flowable-ui-modeler-conf、flowable-ui-idm-conf、flowable-ui-task-conf、flowable-ui-admin-conf这四个包中都存在SecurityConfiguration配置类,顾名思义是安全配置,但是在集成的过程中,modeler-conf其实我们希望的是以idm的登录为主,其他模块自己的安全校验配置不需要,但是实际上由于其他模块存在安全配置以及默认的拦截器,导致idm自己的安全验证不能通过。解决方式和上面一样,通过包扫描路径,只扫描自己需要的包路径,而有影响的包要么移除掉,要么自己去实现其中的配置。
### 页面集成
页面集成一开始采用的是集成到后端工程,以后开发自己的页面时,也可直接调用集成好的流程设计器,但是由于其他模块的页面存在问题,故暂时放弃掉这种集成方式,采用Nginx来部署前端,正好满足前后端分离架构。
- Nginx配置
~~~
server {
listen 8081;
server_name flowable_ui;
location / {
root /user/local/nginx/flowable-ui;
index index.html index.htm;
}
location /flowable_idm {
proxy_pass http://localhost:8080/flowable;
proxy_cookie_path /flowable /flowable_idm;
}
location /flowable_task {
proxy_pass http://localhost:8080/flowable;
proxy_cookie_path /flowable /flowable_task;
}
location /flowable_admin {
proxy_pass http://localhost:8080/flowable;
proxy_cookie_path /flowable /flowable_admin;
}
location /flowable_modeler {
proxy_pass http://localhost:8080/flowable;
proxy_cookie_path /flowable /flowable_modeler;
}
}
~~~
**注:** 其实可以通过Nginx将静态资源和动态资源分开解析处理即可,但是我这边尝试的过程中有问题,只能采用简单粗暴的方式了。
然后在flowable-ui目录下新建modeler、idm、task、admin目录,将flowable-modeler.war、flowable-idm.war、flowable-task.war、flowable-admin.war中的flowable-xxx/WEB-INF/classes/static下的内容分别复制到对应目录下,此时通过http://localhost:8086/modeler...可看到对应的页面,但是由于动静资源路径一致,导致请求不能转发到后端,所以需要对动态请求和静态资源请求做区分,则需要修改官方页面源码,增加统一的请求路径前缀。

统一请求路径修改:
在modeler/scripts/app-cfg.js文件中,修改contextRoot为flowable_modeler,与静态资源访问路径区分开。
~~~js
'use strict';
var FLOWABLE = FLOWABLE || {};
var pathname = window.location.pathname.replace(/^(\/[^\/]*)(\/.*)?$/, '$1').replace(/\/$/, '');
FLOWABLE.CONFIG = {
'onPremise' : true,
'contextRoot' : "/flowable_modeler",
'webContextRoot' : pathname,
'datesLocalization' : false
};
~~~
在idm/scripts/app-cfg.js文件中,修改contextRoot为flowable_idm,与静态资源访问路径区分开。
```js
'use strict';
var FLOWABLE = FLOWABLE || {};
var pathname = window.location.pathname.replace(/^(\/[^\/]*)(\/.*)?$/, '$1').replace(/\/$/, '');
FLOWABLE.CONFIG = {
'onPremise' : true,
'contextRoot' : "/flowable_idm",
'webContextRoot' : pathname,
'datesLocalization' : false
};
```
在task/scripts/app-cfg.js文件中,修改contextRoot为flowable_task,与静态资源访问路径区分开。
```js
'use strict';
var FLOWABLE = FLOWABLE || {};
var pathname = window.location.pathname.replace(/^(\/[^\/]*)(\/.*)?$/, '$1').replace(/\/$/, '');
FLOWABLE.CONFIG = {
'onPremise' : true,
'contextRoot' : "/flowable_task",
'webContextRoot' : pathname,
'datesLocalization' : false
};
```
admin和其他的不一样,所以我作为一个后端人员修改前端,采取的方式是在admin/scripts/config.js文件中,增加上面类似配置。
~~~js
FlowableAdmin.webContextRoot = '/flowable_admin';
~~~
然后通过开发工具,给所有的REST请求的增加`FlowableAdmin.webContextRoot + `前缀。
如:
~~~js
url: '/app/
~~~
替换为
~~~js
url: FlowableAdmin.webContextRoot + '/app/
~~~
其他非这种格式的URL,可自行手动修改。
至此前后端基本集成完毕。
执行后端SpringBoot启动类,启动后端服务。
启动Nginx。
此时通过以下四个链接,即可访问Flowable官方提供的四个操作页面,不过在第一次访问时,由于没有登录,会跳转到登录页面,在后端工程初次启动时,会初始化两个账号,可通过`ACT_ID_USER`表查询用户名密码。
> http://localhost:8081/idm/

> http://localhost:8081/modeler/

> http://localhost:8081/task/

> http://localhost:8081/admin/

------
关注我的微信公众号:FramePower
我会不定期发布相关技术积累,欢迎对技术有追求、志同道合的朋友加入,一起学习成长!
------

================================================
FILE: SECURITY.md
================================================
# Security Policy
## Supported Versions
Use this section to tell people about which versions of your project are
currently being supported with security updates.
| Version | Supported |
| ------- | ------------------ |
| 5.1.x | :white_check_mark: |
| 5.0.x | :x: |
| 4.0.x | :white_check_mark: |
| < 4.0 | :x: |
## Reporting a Vulnerability
Use this section to tell people how to report a vulnerability.
Tell them where to go, how often they can expect to get an update on a
reported vulnerability, what to expect if the vulnerability is accepted or
declined, etc.
================================================
FILE: flowable-ui/.gitignore
================================================
# Created by .ignore support plugin (hsz.mobi)
================================================
FILE: flowable-ui/.gradle/4.10.3/gc.properties
================================================
================================================
FILE: flowable-ui/.gradle/buildOutputCleanup/cache.properties
================================================
#Thu Jun 27 00:31:13 CST 2019
gradle.version=4.10.3
================================================
FILE: flowable-ui/README.md
================================================
================================================
FILE: flowable-ui/build.gradle
================================================
apply plugin: 'java'
apply plugin: 'maven'
group = 'flowable-modeler-study'
version = '1.0-SNAPSHOT'
description = """"""
sourceCompatibility = 1.5
targetCompatibility = 1.5
tasks.withType(JavaCompile) {
options.encoding = 'UTF-8'
}
repositories {
maven { url "http://maven.aliyun.com/nexus/content/groups/public" }
}
dependencies {
compile group: 'org.flowable', name: 'flowable-spring-boot-starter-rest', version:'6.4.1'
compile group: 'org.springframework.boot', name: 'spring-boot-starter-web', version:'2.1.3.RELEASE'
compile group: 'org.mybatis.spring.boot', name: 'mybatis-spring-boot-starter', version:'1.3.1'
compile group: 'log4j', name: 'log4j', version:'1.2.17'
compile group: 'com.alibaba', name: 'fastjson', version:'1.2.46'
compile(group: 'mysql', name: 'mysql-connector-java', version:'5.1.47') {
exclude(module: 'protobuf-java')
}
compile group: 'com.alibaba', name: 'druid-spring-boot-starter', version:'1.1.10'
compile group: 'org.flowable', name: 'flowable-ui-modeler-conf', version:'6.4.1'
compile group: 'org.flowable', name: 'flowable-ui-task-conf', version:'6.4.1'
compile group: 'org.flowable', name: 'flowable-ui-admin-conf', version:'6.4.1'
compile group: 'org.flowable', name: 'flowable-ui-idm-conf', version:'6.4.1'
compile group: 'com.spring4all', name: 'swagger-spring-boot-starter', version:'1.9.0.RELEASE'
compile group: 'org.projectlombok', name: 'lombok', version:'1.18.6'
testCompile group: 'org.springframework.boot', name: 'spring-boot-starter-test', version:'2.1.3.RELEASE'
}
================================================
FILE: flowable-ui/gradle/wrapper/gradle-wrapper.properties
================================================
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.3-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
================================================
FILE: flowable-ui/gradlew
================================================
#!/usr/bin/env sh
##############################################################################
##
## Gradle start up script for UN*X
##
##############################################################################
# Attempt to set APP_HOME
# Resolve links: $0 may be a link
PRG="$0"
# Need this for relative symlinks.
while [ -h "$PRG" ] ; do
ls=`ls -ld "$PRG"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
PRG="$link"
else
PRG=`dirname "$PRG"`"/$link"
fi
done
SAVED="`pwd`"
cd "`dirname \"$PRG\"`/" >/dev/null
APP_HOME="`pwd -P`"
cd "$SAVED" >/dev/null
APP_NAME="Gradle"
APP_BASE_NAME=`basename "$0"`
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS=""
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD="maximum"
warn () {
echo "$*"
}
die () {
echo
echo "$*"
echo
exit 1
}
# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
nonstop=false
case "`uname`" in
CYGWIN* )
cygwin=true
;;
Darwin* )
darwin=true
;;
MINGW* )
msys=true
;;
NONSTOP* )
nonstop=true
;;
esac
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD="$JAVA_HOME/jre/sh/java"
else
JAVACMD="$JAVA_HOME/bin/java"
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
JAVACMD="java"
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
# Increase the maximum file descriptors if we can.
if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
MAX_FD_LIMIT=`ulimit -H -n`
if [ $? -eq 0 ] ; then
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
MAX_FD="$MAX_FD_LIMIT"
fi
ulimit -n $MAX_FD
if [ $? -ne 0 ] ; then
warn "Could not set maximum file descriptor limit: $MAX_FD"
fi
else
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
fi
fi
# For Darwin, add options to specify how the application appears in the dock
if $darwin; then
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
fi
# For Cygwin, switch paths to Windows format before running java
if $cygwin ; then
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
JAVACMD=`cygpath --unix "$JAVACMD"`
# We build the pattern for arguments to be converted via cygpath
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
SEP=""
for dir in $ROOTDIRSRAW ; do
ROOTDIRS="$ROOTDIRS$SEP$dir"
SEP="|"
done
OURCYGPATTERN="(^($ROOTDIRS))"
# Add a user-defined pattern to the cygpath arguments
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
fi
# Now convert the arguments - kludge to limit ourselves to /bin/sh
i=0
for arg in "$@" ; do
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
else
eval `echo args$i`="\"$arg\""
fi
i=$((i+1))
done
case $i in
(0) set -- ;;
(1) set -- "$args0" ;;
(2) set -- "$args0" "$args1" ;;
(3) set -- "$args0" "$args1" "$args2" ;;
(4) set -- "$args0" "$args1" "$args2" "$args3" ;;
(5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
(6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
(7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
(8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
(9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
esac
fi
# Escape application args
save () {
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
echo " "
}
APP_ARGS=$(save "$@")
# Collect all arguments for the java command, following the shell quoting and substitution rules
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
cd "$(dirname "$0")"
fi
exec "$JAVACMD" "$@"
================================================
FILE: flowable-ui/gradlew.bat
================================================
@if "%DEBUG%" == "" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@rem
@rem ##########################################################################
@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal
set DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=.
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS=
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if "%ERRORLEVEL%" == "0" goto init
echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto init
echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:init
@rem Get command-line arguments, handling Windows variants
if not "%OS%" == "Windows_NT" goto win9xME_args
:win9xME_args
@rem Slurp the command line arguments.
set CMD_LINE_ARGS=
set _SKIP=2
:win9xME_args_slurp
if "x%~1" == "x" goto execute
set CMD_LINE_ARGS=%*
:execute
@rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
:end
@rem End local scope for the variables with windows NT shell
if "%ERRORLEVEL%"=="0" goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
exit /b 1
:mainEnd
if "%OS%"=="Windows_NT" endlocal
:omega
================================================
FILE: flowable-ui/pom.xml
================================================
4.0.0
org.springframework.boot
spring-boot-starter-parent
2.1.3.RELEASE
com.github.flowable
flowable-ui
1.0-SNAPSHOT
UTF-8
1.8
8.0.16
1.1.10
1.3.1
6.4.1
org.flowable
flowable-spring-boot-starter-rest
${flowable.version}
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-test
test
org.mybatis.spring.boot
mybatis-spring-boot-starter
${mybatis-spring-boot}
log4j
log4j
1.2.17
com.alibaba
fastjson
1.2.46
mysql
mysql-connector-java
${mysql.version}
com.alibaba
druid-spring-boot-starter
1.1.10
org.flowable
flowable-ui-modeler-conf
${flowable.version}
org.flowable
flowable-ui-task-conf
${flowable.version}
org.flowable
flowable-ui-admin-conf
${flowable.version}
org.flowable
flowable-ui-idm-conf
${flowable.version}
com.spring4all
swagger-spring-boot-starter
1.9.0.RELEASE
org.projectlombok
lombok
flowable
${project.basedir}/src/main/java
**/*.xml
**/*.ftl
${project.basedir}/src/main/resources
org.springframework.boot
spring-boot-maven-plugin
maven-resources-plugin
utf-8
true
================================================
FILE: flowable-ui/settings.gradle
================================================
rootProject.name = 'flowable-modeler-study'
================================================
FILE: flowable-ui/src/main/java/com/github/flowable/FlowableApplication.java
================================================
package com.github.flowable;
import com.spring4all.swagger.EnableSwagger2Doc;
import org.flowable.spring.boot.app.AppEngineRestConfiguration;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.beans.factory.support.BeanNameGenerator;
import org.springframework.beans.factory.support.DefaultBeanNameGenerator;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Import;
/**
* @Description:
* @Author: Bruce.liu
* @Since:9:18 2019/1/19
*/
@EnableSwagger2Doc
@SpringBootApplication
@ComponentScan(nameGenerator = DefaultBeanNameGenerator.class)
public class FlowableApplication {
public static void main(String[] args) {
SpringApplication.run(FlowableApplication.class, args);
}
public static class SpringBeanNameGenerator implements BeanNameGenerator {
@Override
public String generateBeanName(BeanDefinition definition, BeanDefinitionRegistry registry) {
return null;
}
}
}
================================================
FILE: flowable-ui/src/main/java/com/github/flowable/config/AppDispatcherServletConfiguration.java
================================================
package com.github.flowable.config;
import org.flowable.ui.common.rest.idm.remote.RemoteAccountResource;
import org.flowable.ui.modeler.rest.app.EditorGroupsResource;
import org.flowable.ui.modeler.rest.app.EditorUsersResource;
import org.flowable.ui.modeler.rest.app.StencilSetResource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.autoconfigure.web.servlet.WebMvcRegistrations;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.FilterType;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.web.servlet.i18n.LocaleChangeInterceptor;
import org.springframework.web.servlet.i18n.SessionLocaleResolver;
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
/**
* 重写flowable-ui-xxx-conf 中的rest配置类
*/
@Configuration
@ComponentScan(value = {
"org.flowable.app.rest",
"org.flowable.ui.admin.rest",
"org.flowable.ui.task.rest.runtime",
"org.flowable.ui.idm.rest.app",
"org.flowable.ui.common.rest.exception",
"org.flowable.ui.modeler.rest.app",
"org.flowable.ui.common.rest"},
excludeFilters = {
@ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, value = RemoteAccountResource.class),
@ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, value = StencilSetResource.class),
@ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, value = EditorUsersResource.class),
@ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, value = EditorGroupsResource.class)
})
@EnableAsync
public class AppDispatcherServletConfiguration implements WebMvcRegistrations{
private static final Logger LOGGER = LoggerFactory.getLogger(AppDispatcherServletConfiguration.class);
@Bean
public SessionLocaleResolver localeResolver() {
return new SessionLocaleResolver();
}
@Bean
public LocaleChangeInterceptor localeChangeInterceptor() {
LOGGER.debug("Configuring localeChangeInterceptor");
LocaleChangeInterceptor localeChangeInterceptor = new LocaleChangeInterceptor();
localeChangeInterceptor.setParamName("language");
return localeChangeInterceptor;
}
@Override
public RequestMappingHandlerMapping getRequestMappingHandlerMapping() {
LOGGER.debug("Creating requestMappingHandlerMapping");
RequestMappingHandlerMapping requestMappingHandlerMapping = new RequestMappingHandlerMapping();
requestMappingHandlerMapping.setUseSuffixPatternMatch(false);
requestMappingHandlerMapping.setRemoveSemicolonContent(false);
Object[] interceptors = {localeChangeInterceptor()};
requestMappingHandlerMapping.setInterceptors(interceptors);
return requestMappingHandlerMapping;
}
}
================================================
FILE: flowable-ui/src/main/java/com/github/flowable/config/ApplicationConfiguration.java
================================================
package com.github.flowable.config;
import org.flowable.app.rest.AppRestResponseFactory;
import org.flowable.ui.admin.properties.FlowableAdminAppProperties;
import org.flowable.ui.idm.properties.FlowableIdmAppProperties;
import org.flowable.ui.idm.servlet.ApiDispatcherServletConfiguration;
import org.flowable.ui.modeler.properties.FlowableModelerAppProperties;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.FilterType;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.DispatcherServlet;
/**
* 重写flowable-ui-xxx-conf 中的rest基础服务配置类
*/
@Configuration
@EnableConfigurationProperties({FlowableIdmAppProperties.class, FlowableModelerAppProperties.class, FlowableAdminAppProperties.class})
@ComponentScan(
basePackages = {
"org.flowable.ui.admin.repository",
"org.flowable.ui.admin.service",
"org.flowable.ui.task.model.component",
"org.flowable.ui.task.service.runtime",
"org.flowable.ui.task.service.debugger",
"org.flowable.ui.idm.conf",
"org.flowable.ui.idm.security",
"org.flowable.ui.idm.service",
"org.flowable.ui.modeler.repository",
"org.flowable.ui.modeler.service",
"org.flowable.ui.common.filter",
"org.flowable.ui.common.service",
"org.flowable.ui.common.repository",
"org.flowable.ui.common.security",
"org.flowable.ui.common.tenant"
},
excludeFilters = {
@ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, value = org.flowable.ui.idm.conf.ApplicationConfiguration.class)
}
)
public class ApplicationConfiguration {
@Bean
public ServletRegistrationBean apiServlet(ApplicationContext applicationContext) {
AnnotationConfigWebApplicationContext dispatcherServletConfiguration = new AnnotationConfigWebApplicationContext();
dispatcherServletConfiguration.setParent(applicationContext);
dispatcherServletConfiguration.register(ApiDispatcherServletConfiguration.class);
DispatcherServlet servlet = new DispatcherServlet(dispatcherServletConfiguration);
ServletRegistrationBean registrationBean = new ServletRegistrationBean(servlet, "/api/*");
registrationBean.setName("Flowable IDM App API Servlet");
registrationBean.setLoadOnStartup(1);
registrationBean.setAsyncSupported(true);
return registrationBean;
}
@Bean
public AppRestResponseFactory appRestResponseFactory() {
return new AppRestResponseFactory();
}
}
================================================
FILE: flowable-ui/src/main/java/com/github/flowable/config/DatabaseConfiguration.java
================================================
/* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.github.flowable.config;
import liquibase.Liquibase;
import liquibase.database.Database;
import liquibase.database.DatabaseConnection;
import liquibase.database.DatabaseFactory;
import liquibase.database.jvm.JdbcConnection;
import liquibase.exception.DatabaseException;
import liquibase.resource.ClassLoaderResourceAccessor;
import org.flowable.ui.common.service.exception.InternalServerErrorException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import javax.sql.DataSource;
/**
* 重写flowable-ui-xxx-conf 中的 DatabaseConfiguration 类,
* 包括:flowable-ui-modeler-conf和flowable-ui-admin-conf 的DatabaseConfiguration
*/
@Configuration
@EnableTransactionManagement
public class DatabaseConfiguration {
private static final Logger LOGGER = LoggerFactory.getLogger(DatabaseConfiguration.class);
@Bean
public Liquibase modelerLiquibase(DataSource dataSource) {
Liquibase liquibase = null;
try {
DatabaseConnection connection = new JdbcConnection(dataSource.getConnection());
Database database = DatabaseFactory.getInstance().findCorrectDatabaseImplementation(connection);
database.setDatabaseChangeLogTableName("ACT_DE_" + database.getDatabaseChangeLogTableName());
database.setDatabaseChangeLogLockTableName("ACT_DE_" + database.getDatabaseChangeLogLockTableName());
liquibase = new Liquibase("META-INF/liquibase/flowable-modeler-app-db-changelog.xml", new ClassLoaderResourceAccessor(), database);
liquibase.update("flowable");
return liquibase;
} catch (Exception e) {
throw new InternalServerErrorException("Error creating liquibase database", e);
} finally {
closeDatabase(liquibase);
}
}
@Bean
public Liquibase adminLiquibase(DataSource dataSource) {
LOGGER.debug("Configuring Liquibase");
Liquibase liquibase = null;
try {
DatabaseConnection connection = new JdbcConnection(dataSource.getConnection());
Database database = DatabaseFactory.getInstance().findCorrectDatabaseImplementation(connection);
database.setDatabaseChangeLogTableName("ACT_ADM_" + database.getDatabaseChangeLogTableName());
database.setDatabaseChangeLogLockTableName("ACT_ADM_" + database.getDatabaseChangeLogLockTableName());
liquibase = new Liquibase("META-INF/liquibase/flowable-admin-app-db-changelog.xml", new ClassLoaderResourceAccessor(), database);
liquibase.update("flowable");
return liquibase;
} catch (Exception e) {
throw new InternalServerErrorException("Error creating liquibase database");
} finally {
closeDatabase(liquibase);
}
}
private void closeDatabase(Liquibase liquibase) {
if (liquibase != null) {
Database database = liquibase.getDatabase();
if (database != null) {
try {
database.close();
} catch (DatabaseException e) {
LOGGER.warn("Error closing database", e);
}
}
}
}
}
================================================
FILE: flowable-ui/src/main/java/com/github/flowable/config/TaskUserCacheImpl.java
================================================
/**
* $Id: TaskUserCacheImpl.java,v 1.0 2019-06-25 16:12 chenmin Exp $
*/
package com.github.flowable.config;
import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;
import com.google.common.util.concurrent.UncheckedExecutionException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import javax.annotation.PostConstruct;
import org.flowable.idm.api.User;
import org.flowable.ui.common.properties.FlowableCommonAppProperties;
import org.flowable.ui.common.service.idm.RemoteIdmService;
import org.flowable.ui.task.service.api.UserCache;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.authentication.LockedException;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Service;
/**
* 重写 {@link org.flowable.ui.task.service.idm.UserCacheImpl} 类,避免启动时和 {@link org.flowable.ui.idm.service.UserCacheImpl} 命名冲突
* Cache containing User objects to prevent too much DB-traffic (users exist separately from the Flowable tables, they need to be fetched afterward one by one to join with those entities).
*
*
* @author Frederik Heremans
* @author Joram Barrez
* @author Filip Hrisafov
*/
@Service
public class TaskUserCacheImpl implements UserCache {
@Autowired
protected FlowableCommonAppProperties properties;
@Autowired
protected RemoteIdmService remoteIdmService;
protected LoadingCache userCache;
@PostConstruct
protected void initCache() {
FlowableCommonAppProperties.Cache cache = properties.getCacheUsers();
long userCacheMaxSize = cache.getMaxSize();
long userCacheMaxAge = cache.getMaxAge();
userCache = CacheBuilder.newBuilder().maximumSize(userCacheMaxSize)
.expireAfterAccess(userCacheMaxAge, TimeUnit.SECONDS).recordStats().build(new CacheLoader() {
public CachedUser load(final String userId) throws Exception {
User user = remoteIdmService.getUser(userId);
if (user == null) {
throw new UsernameNotFoundException("User " + userId + " was not found in the database");
}
Collection grantedAuthorities = new ArrayList<>();
return new CachedUser(user, grantedAuthorities);
}
});
}
@Override
public void putUser(String userId, CachedUser cachedUser) {
userCache.put(userId, cachedUser);
}
@Override
public CachedUser getUser(String userId) {
return getUser(userId, false, false, true); // always check validity by default
}
@Override
public CachedUser getUser(String userId, boolean throwExceptionOnNotFound, boolean throwExceptionOnInactive, boolean checkValidity) {
try {
// The cache is a LoadingCache and will fetch the value itself
CachedUser cachedUser = userCache.get(userId);
return cachedUser;
} catch (ExecutionException e) {
return null;
} catch (UncheckedExecutionException uee) {
// Some magic with the exceptions is needed:
// the exceptions like UserNameNotFound and Locked cannot
// bubble up, since Spring security will react on them otherwise
if (uee.getCause() instanceof RuntimeException) {
RuntimeException runtimeException = (RuntimeException) uee.getCause();
if (runtimeException instanceof UsernameNotFoundException) {
if (throwExceptionOnNotFound) {
throw runtimeException;
} else {
return null;
}
}
if (runtimeException instanceof LockedException) {
if (throwExceptionOnNotFound) {
throw runtimeException;
} else {
return null;
}
}
}
throw uee;
}
}
@Override
public void invalidate(String userId) {
userCache.invalidate(userId);
}
}
================================================
FILE: flowable-ui/src/main/java/com/github/flowable/config/WebMvcConfiguration.java
================================================
package com.github.flowable.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class WebMvcConfiguration implements WebMvcConfigurer {
//跨域配置
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedMethods("*")
.allowedOrigins("*")
.allowedHeaders("*")
.allowCredentials(true);
}
private CorsConfiguration buildConfig() {
CorsConfiguration corsConfiguration = new CorsConfiguration();
corsConfiguration.addAllowedOrigin("*");
corsConfiguration.setAllowCredentials(true);
corsConfiguration.addAllowedHeader("*");
corsConfiguration.addAllowedMethod("*");
return corsConfiguration;
}
/**
* 跨域过滤器
*
* @return
*/
@Bean
public CorsFilter corsFilter() {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", buildConfig()); // 4
return new CorsFilter(source);
}
}
================================================
FILE: flowable-ui/src/main/java/com/github/flowable/rest/ext/EditorGroupsResource.java
================================================
/* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.github.flowable.rest.ext;
import org.flowable.idm.api.Group;
import org.flowable.idm.api.IdmIdentityService;
import org.flowable.ui.common.model.GroupRepresentation;
import org.flowable.ui.common.model.ResultListDataRepresentation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
/**
* 重写 {@link org.flowable.ui.modeler.rest.app.EditorGroupsResource} 类,直接查库获取用户组列表
* @author 陈敏
* @version $Id: EditorGroupsResource.java,v 1.1 2019-06-20 15:00 chenmin Exp $
* Created on 2019-06-20 15:00
* My blog: https://www.chenmin.info
*/
@RestController
@RequestMapping("/app")
public class EditorGroupsResource {
@Autowired
protected IdmIdentityService idmIdentityService;
@RequestMapping(value = "/rest/editor-groups", method = RequestMethod.GET)
public ResultListDataRepresentation getGroups(@RequestParam(required = false, value = "filter") String filter) {
if(!StringUtils.isEmpty(filter)){
filter = filter.trim();
String sql = "select * from act_id_group where NAME_ like #{name} limit 10";
filter = "%"+filter+"%";
List groups = idmIdentityService.createNativeGroupQuery().sql(sql).parameter("name",filter).list();
List result = new ArrayList<>();
for (Group group : groups) {
result.add(new GroupRepresentation(group));
}
return new ResultListDataRepresentation(result);
}
return null;
}
}
================================================
FILE: flowable-ui/src/main/java/com/github/flowable/rest/ext/EditorUsersResource.java
================================================
/* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.github.flowable.rest.ext;
import org.flowable.engine.ManagementService;
import org.flowable.idm.api.IdmIdentityService;
import org.flowable.idm.api.User;
import org.flowable.ui.common.model.ResultListDataRepresentation;
import org.flowable.ui.common.model.UserRepresentation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
/**
* 重写 {@link org.flowable.ui.modeler.rest.app.EditorUsersResource} 类,直接查库获取用户列表
* @author 陈敏
* @version $Id: EditorUsersResource.java,v 1.1 2019-06-20 15:01 chenmin Exp $
* Created on 2019-06-20 15:01
* My blog: https://www.chenmin.info
*/
@RestController
@RequestMapping("/app")
public class EditorUsersResource {
@Autowired
protected IdmIdentityService idmIdentityService;
@Autowired
protected ManagementService managementService;
@RequestMapping(value = "/rest/editor-users", method = RequestMethod.GET)
public ResultListDataRepresentation getUsers(@RequestParam(value = "filter", required = false) String filter) {
if (!StringUtils.isEmpty(filter)) {
filter = filter.trim();
String sql = "select * from act_id_user where ID_ like #{id} or LAST_ like #{name} limit 10";
filter = "%"+filter+"%";
List matchingUsers = idmIdentityService.createNativeUserQuery().sql(sql).parameter("id",filter).parameter("name",filter).list();
List userRepresentations = new ArrayList<>(matchingUsers.size());
for (User user : matchingUsers) {
userRepresentations.add(new UserRepresentation(user));
}
return new ResultListDataRepresentation(userRepresentations);
}
return null;
}
}
================================================
FILE: flowable-ui/src/main/java/com/github/flowable/rest/ext/FlowStencilSetResource.java
================================================
package com.github.flowable.rest.ext;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
import org.flowable.ui.common.service.exception.InternalServerErrorException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
/**
* 扩展流程图在线设计器(汉化) {@link org.flowable.ui.modeler.rest.app.StencilSetResource}
* @author 陈敏
* @version $Id: FlowStencilSetResource.java,v 1.1 2019-06-20 15:02 chenmin Exp $
* Created on 2019-06-20 15:02
* My blog: https://www.chenmin.info
*/
@Slf4j
@RestController
@RequestMapping("/app")
public class FlowStencilSetResource {
@Autowired
protected ObjectMapper objectMapper;
/**
* 汉化流程设计器编辑数据(后续可支持国际化改造)
* @return
*/
@RequestMapping(value = "/rest/stencil-sets/editor", method = RequestMethod.GET, produces = "application/json")
public JsonNode getStencilSetForEditor() {
try {
JsonNode stencilNode = objectMapper.readTree(this.getClass().getClassLoader().getResourceAsStream("stencilset/zh/stencilset_bpmn.json"));
return stencilNode;
} catch (Exception e) {
log.error("Error reading bpmn stencil set json", e);
throw new InternalServerErrorException("Error reading bpmn stencil set json");
}
}
/**
* 汉化流程设计器编辑数据(后续可支持国际化改造)
* @return
*/
@RequestMapping(value = "/rest/stencil-sets/cmmneditor", method = RequestMethod.GET, produces = "application/json")
public JsonNode getCmmnStencilSetForEditor() {
try {
JsonNode stencilNode = objectMapper.readTree(this.getClass().getClassLoader().getResourceAsStream("stencilset/zh/stencilset_cmmn.json"));
return stencilNode;
} catch (Exception e) {
log.error("Error reading bpmn stencil set json", e);
throw new InternalServerErrorException("Error reading bpmn stencil set json");
}
}
}
================================================
FILE: flowable-ui/src/main/java/org/flowable/ui/admin/service/engine/CmmnTaskService.java
================================================
/* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.flowable.ui.admin.service.engine;
import java.text.MessageFormat;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpStatus;
import org.apache.http.client.methods.HttpDelete;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpPut;
import org.apache.http.client.utils.URIBuilder;
import org.flowable.ui.admin.domain.ServerConfig;
import org.flowable.ui.admin.service.engine.exception.FlowableServiceException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
/**
* Service for invoking Flowable REST services.
*/
@Service("adminCmmnTaskService")
public class CmmnTaskService {
public static final String HISTORIC_TASK_LIST_URL = "cmmn-history/historic-task-instances";
public static final String HISTORIC_TASK_QUERY_URL = "cmmn-query/historic-task-instances";
public static final String HISTORIC_TASK_URL = "cmmn-history/historic-task-instances/{0}";
public static final String RUNTIME_TASK_URL = "cmmn-runtime/tasks/{0}";
public static final String HISTORIC_VARIABLE_INSTANCE_LIST_URL = "cmmn-history/historic-variable-instances";
public static final String HISTORIC_TASK_IDENTITY_LINK_LIST_URL = "cmmn-history/historic-task-instances/{0}/identitylinks";
public static final String[] TASK_FILTERS = new String[] { "taskNameLike", "taskAssigneeLike", "taskOwner", "finished",
"dueDateAfter", "dueDateBefore", "taskCompletedAfter", "taskCompletedBefore", "taskCreatedAfter", "taskCreatedBefore", "parentTaskId", "caseInstanceId" };
private static final String DEFAULT_SUBTASK_RESULT_SIZE = "1024";
private static final String DEFAULT_VARIABLE_RESULT_SIZE = "1024";
@Autowired
protected FlowableClientService clientUtil;
@Autowired
protected ObjectMapper objectMapper;
public JsonNode listTasks(ServerConfig serverConfig, ObjectNode bodyNode) {
JsonNode resultNode = null;
try {
URIBuilder builder = clientUtil.createUriBuilder(HISTORIC_TASK_QUERY_URL);
String uri = clientUtil.getUriWithPagingAndOrderParameters(builder, bodyNode);
HttpPost post = clientUtil.createPost(uri, serverConfig);
post.setEntity(clientUtil.createStringEntity(bodyNode.toString()));
resultNode = clientUtil.executeRequest(post, serverConfig);
} catch (Exception e) {
throw new FlowableServiceException(e.getMessage(), e);
}
return resultNode;
}
public JsonNode getTask(ServerConfig serverConfig, String taskId, boolean runtime) {
if (taskId == null) {
throw new IllegalArgumentException("Task id is required");
}
URIBuilder builder = null;
if (runtime) {
builder = clientUtil.createUriBuilder(MessageFormat.format(RUNTIME_TASK_URL, taskId));
} else {
builder = clientUtil.createUriBuilder(MessageFormat.format(HISTORIC_TASK_URL, taskId));
}
HttpGet get = new HttpGet(clientUtil.getServerUrl(serverConfig, builder));
return clientUtil.executeRequest(get, serverConfig);
}
/**
* Delete a task.
*/
public void deleteTask(ServerConfig serverConfig, String taskId) {
if (taskId == null) {
throw new IllegalArgumentException("Task id is required");
}
JsonNode taskNode = getTask(serverConfig, taskId, false);
if (taskNode.has("endTime")) {
JsonNode endTimeNode = taskNode.get("endTime");
if (endTimeNode != null && !endTimeNode.isNull() && StringUtils.isNotEmpty(endTimeNode.asText())) {
// Completed task
URIBuilder builder = clientUtil.createUriBuilder(MessageFormat.format(HISTORIC_TASK_URL, taskId));
HttpDelete delete = new HttpDelete(clientUtil.getServerUrl(serverConfig, builder));
clientUtil.executeRequestNoResponseBody(delete, serverConfig, HttpStatus.SC_NO_CONTENT);
} else {
// Not completed task
URIBuilder builder = clientUtil.createUriBuilder(MessageFormat.format(RUNTIME_TASK_URL, taskId) + "?cascadeHistory=true");
HttpDelete delete = new HttpDelete(clientUtil.getServerUrl(serverConfig, builder));
clientUtil.executeRequestNoResponseBody(delete, serverConfig, HttpStatus.SC_NO_CONTENT);
}
}
}
public void executeTaskAction(ServerConfig serverConfig, String taskId, JsonNode actionRequest) {
if (taskId == null) {
throw new IllegalArgumentException("Task id is required");
}
URIBuilder builder = clientUtil.createUriBuilder(MessageFormat.format(RUNTIME_TASK_URL, taskId));
HttpPost post = clientUtil.createPost(builder, serverConfig);
post.setEntity(clientUtil.createStringEntity(actionRequest));
clientUtil.executeRequestNoResponseBody(post, serverConfig, HttpStatus.SC_OK);
}
public void updateTask(ServerConfig serverConfig, String taskId, JsonNode actionRequest) {
if (taskId == null) {
throw new IllegalArgumentException("Task id is required");
}
URIBuilder builder = clientUtil.createUriBuilder(MessageFormat.format(RUNTIME_TASK_URL, taskId));
HttpPut put = clientUtil.createPut(builder, serverConfig);
put.setEntity(clientUtil.createStringEntity(actionRequest));
clientUtil.executeRequestNoResponseBody(put, serverConfig, HttpStatus.SC_OK);
}
public JsonNode getSubTasks(ServerConfig serverConfig, String taskId) {
URIBuilder builder = clientUtil.createUriBuilder(HISTORIC_TASK_LIST_URL);
builder.addParameter("parentTaskId", taskId);
builder.addParameter("size", DEFAULT_SUBTASK_RESULT_SIZE);
HttpGet get = new HttpGet(clientUtil.getServerUrl(serverConfig, builder));
return clientUtil.executeRequest(get, serverConfig);
}
public JsonNode getVariables(ServerConfig serverConfig, String taskId) {
URIBuilder builder = clientUtil.createUriBuilder(HISTORIC_VARIABLE_INSTANCE_LIST_URL);
builder.addParameter("taskId", taskId);
builder.addParameter("size", DEFAULT_VARIABLE_RESULT_SIZE);
builder.addParameter("sort", "variableName");
HttpGet get = new HttpGet(clientUtil.getServerUrl(serverConfig, builder));
return clientUtil.executeRequest(get, serverConfig);
}
public JsonNode getIdentityLinks(ServerConfig serverConfig, String taskId) {
URIBuilder builder = clientUtil.createUriBuilder(MessageFormat.format(HISTORIC_TASK_IDENTITY_LINK_LIST_URL, taskId));
HttpGet get = new HttpGet(clientUtil.getServerUrl(serverConfig, builder));
return clientUtil.executeRequest(get, serverConfig);
}
}
================================================
FILE: flowable-ui/src/main/java/org/flowable/ui/modeler/rest/app/AppDefinitionResource.java
================================================
/* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.flowable.ui.modeler.rest.app;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.flowable.ui.common.service.exception.InternalServerErrorException;
import org.flowable.ui.modeler.model.AppDefinitionPublishRepresentation;
import org.flowable.ui.modeler.model.AppDefinitionRepresentation;
import org.flowable.ui.modeler.model.AppDefinitionSaveRepresentation;
import org.flowable.ui.modeler.model.AppDefinitionUpdateResultRepresentation;
import org.flowable.ui.modeler.service.AppDefinitionExportService;
import org.flowable.ui.modeler.service.AppDefinitionImportService;
import org.flowable.ui.modeler.serviceapi.AppDefinitionService;
import org.flowable.ui.modeler.serviceapi.ModelService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@RestController("modelerAppDefinitionResource")
@RequestMapping("/app")
public class AppDefinitionResource {
@Autowired
protected AppDefinitionService appDefinitionService;
@Autowired
protected AppDefinitionExportService appDefinitionExportService;
@Autowired
protected AppDefinitionImportService appDefinitionImportService;
@Autowired
protected ModelService modelService;
@Autowired
protected ObjectMapper objectMapper;
private static final Logger LOGGER = LoggerFactory.getLogger(AppDefinitionResource.class);
@RequestMapping(value = "/rest/app-definitions/{modelId}", method = RequestMethod.GET, produces = "application/json")
public AppDefinitionRepresentation getAppDefinition(@PathVariable("modelId") String modelId) {
return appDefinitionService.getAppDefinition(modelId);
}
@RequestMapping(value = "/rest/app-definitions/{modelId}/history/{modelHistoryId}", method = RequestMethod.GET, produces = "application/json")
public AppDefinitionRepresentation getAppDefinitionHistory(@PathVariable String modelId, @PathVariable String modelHistoryId) {
return appDefinitionService.getAppDefinitionHistory(modelId, modelHistoryId);
}
@RequestMapping(value = "/rest/app-definitions/{modelId}", method = RequestMethod.PUT, produces = "application/json")
public AppDefinitionUpdateResultRepresentation updateAppDefinition(@PathVariable("modelId") String modelId, @RequestBody AppDefinitionSaveRepresentation updatedModel) {
AppDefinitionUpdateResultRepresentation resultRepresentation = null;
try {
resultRepresentation = appDefinitionService.updateAppDefinition(modelId, updatedModel);
} catch (Exception ex) {
resultRepresentation = new AppDefinitionUpdateResultRepresentation();
resultRepresentation.setError(true);
resultRepresentation.setErrorDescription(ex.getMessage());
}
return resultRepresentation;
}
@RequestMapping(value = "/rest/app-definitions/{modelId}/publish", method = RequestMethod.POST, produces = "application/json")
public AppDefinitionUpdateResultRepresentation publishAppDefinition(@PathVariable("modelId") String modelId, @RequestBody AppDefinitionPublishRepresentation publishModel) {
AppDefinitionUpdateResultRepresentation resultRepresentation = null;
try {
resultRepresentation = appDefinitionImportService.publishAppDefinition(modelId, publishModel);
} catch (Exception ex) {
resultRepresentation = new AppDefinitionUpdateResultRepresentation();
resultRepresentation.setError(true);
resultRepresentation.setErrorDescription(ex.getMessage());
}
return resultRepresentation;
}
@RequestMapping(value = "/rest/app-definitions/{modelId}/export", method = RequestMethod.GET)
public void exportAppDefinition(HttpServletResponse response, @PathVariable String modelId) throws IOException {
appDefinitionExportService.exportAppDefinition(response, modelId);
}
@RequestMapping(value = "/rest/app-definitions/{modelId}/export-bar", method = RequestMethod.GET)
public void exportDeployableAppDefinition(HttpServletResponse response, @PathVariable String modelId) throws IOException {
appDefinitionExportService.exportDeployableAppDefinition(response, modelId);
}
@Transactional
@RequestMapping(value = "/rest/app-definitions/{modelId}/import", method = RequestMethod.POST, produces = "application/json")
public AppDefinitionRepresentation importAppDefinition(HttpServletRequest request, @PathVariable String modelId, @RequestParam("file") MultipartFile file) {
return appDefinitionImportService.importAppDefinitionNewVersion(request, file, modelId);
}
@Transactional
@RequestMapping(value = "/rest/app-definitions/{modelId}/text/import", method = RequestMethod.POST)
public String importAppDefinitionText(HttpServletRequest request, @PathVariable String modelId, @RequestParam("file") MultipartFile file) {
AppDefinitionRepresentation appDefinitionRepresentation = appDefinitionImportService.importAppDefinitionNewVersion(request, file, modelId);
String appDefinitionRepresentationJson = null;
try {
appDefinitionRepresentationJson = objectMapper.writeValueAsString(appDefinitionRepresentation);
} catch (Exception e) {
LOGGER.error("Error while App Definition representation json", e);
throw new InternalServerErrorException("App definition could not be saved");
}
return appDefinitionRepresentationJson;
}
@Transactional
@RequestMapping(value = "/rest/app-definitions/import", method = RequestMethod.POST, produces = "application/json")
public AppDefinitionRepresentation importAppDefinition(HttpServletRequest request, @RequestParam("file") MultipartFile file) {
return appDefinitionImportService.importAppDefinition(request, file);
}
@Transactional
@RequestMapping(value = "/rest/app-definitions/text/import", method = RequestMethod.POST)
public String importAppDefinitionText(HttpServletRequest request, @RequestParam("file") MultipartFile file) {
AppDefinitionRepresentation appDefinitionRepresentation = appDefinitionImportService.importAppDefinition(request, file);
String appDefinitionRepresentationJson = null;
try {
appDefinitionRepresentationJson = objectMapper.writeValueAsString(appDefinitionRepresentation);
} catch (Exception e) {
LOGGER.error("Error while App Definition representation json", e);
throw new InternalServerErrorException("App definition could not be saved");
}
return appDefinitionRepresentationJson;
}
}
================================================
FILE: flowable-ui/src/main/resources/application-dev.yml
================================================
spring:
datasource:
druid:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/workFlow?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true
password: root
username: root
================================================
FILE: flowable-ui/src/main/resources/application.yml
================================================
spring:
profiles:
active: dev
security:
filter:
dispatcher-types: REQUEST,FORWARD,ASYNC
aop:
proxy-target-class: false
auto: false
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8
application:
name: flowable
jmx:
default-domain: ${spring.application.name}
servlet:
multipart:
max-request-size: 100MB
max-file-size: 100MB
http:
encoding:
charset: UTF-8
force: true
enabled: true
banner:
location: classpath:/org/flowable/spring/boot/flowable-banner.txt
mvc:
favicon:
enabled: false
liquibase:
enabled: false
datasource:
druid:
min-idle: 5
max-pool-prepared-statement-per-connection-size: 20
test-while-idle: true
time-between-eviction-runs-millis: 60000
max-active: 40
validation-query: SELECT 'x'
max-wait: 60000
test-on-borrow: false
pool-prepared-statements: true
initial-size: 10
min-evictable-idle-time-millis: 300000
test-on-return: false
server:
tomcat:
uri-encoding: UTF-8
port: 8080
servlet:
context-path: /${spring.application.name}
compression:
mime-types: application/json,application/xml,text/html,text/xml,text/plain
enabled: true
min-response-size: 4096
flowable:
rest:
app:
authentication-mode: verify-privilege
process:
definition-cache-limit: 1
idm:
app:
admin:
password: test
user-id: admin
first-name: admin
last-name: admin
labelFontName: 宋体
common:
app:
role-prefix:
idm-url: http://localhost:${server.port}/${spring.application.name}/idm
xml:
encoding: UTF-8
activityFontName: 宋体
modeler:
app:
rest-enabled: true
deployment-api-url: http://localhost:${server.port}/${spring.application.name}/app-api
rest-api-enabled: true
admin:
app:
security:
encryption:
credentials-secret-spec: 9FGl73ngxcOoJvmL
credentials-i-v-spec: j8kdO2hejA9lKmm6
server-config:
app:
context-root: ${spring.application.name}
password: test
server-address: http://localhost
user-name: admin
port: ${server.port}
rest-root: app-api
name: Flowable App app
description: Flowable App REST config
process:
context-root: ${spring.application.name}
server-address: http://localhost
password: test
user-name: admin
rest-root: process-api
port: ${server.port}
name: Flowable Process app
description: Flowable Process REST config
form:
context-root: ${spring.application.name}
server-address: http://localhost
password: test
user-name: admin
port: ${server.port}
rest-root: form-api
name: Flowable Form app
description: Flowable Form REST config
dmn:
context-root: ${spring.application.name}
server-address: http://localhost
password: test
user-name: admin
port: ${server.port}
rest-root: dmn-api
name: Flowable DMN app
description: Flowable DMN REST config
cmmn:
context-root: ${spring.application.name}
password: test
server-address: http://localhost
user-name: admin
port: ${server.port}
rest-root: cmmn-api
name: Flowable CMMN app
description: Flowable CMMN REST config
content:
context-root: ${spring.application.name}
server-address: http://localhost
password: test
user-name: admin
rest-root: content-api
port: ${server.port}
name: Flowable Content app
description: Flowable Content REST config
database-schema-update: true
annotationFontName: 宋体
management:
endpoint:
health:
roles: access-admin
show-details: when_authorized
endpoints:
jmx:
unique-names: true
mybatis:
mapper-locations:
- classpath:/META-INF/admin-mybatis-mappings/*.xml
- classpath:/META-INF/modeler-mybatis-mappings/*.xml
configuration-properties:
prefix:
boolValue: TRUE
blobType: BLOB
swagger:
docket:
system:
title: 系统内置工作流API
description: 工作流
version: 1.0.RELEASE
license: Apache License, Version 2.0
license-url: https://www.apache.org/licenses/LICENSE-2.0.html
terms-of-service-url: https://github.com/SpringForAll/spring-boot-starter-swagger
base-packages: org.flowable
base-path: /**
exclude-path: /error, /ops/**
own:
title: 自定义工作流API
description: 工作流
version: 1.0.RELEASE
license: Apache License, Version 2.0
license-url: https://www.apache.org/licenses/LICENSE-2.0.html
terms-of-service-url: https://github.com/SpringForAll/spring-boot-starter-swagger
base-packages: com.github.flowable
base-path: /**
exclude-path: /error, /ops/**
================================================
FILE: flowable-ui/src/main/resources/flow-manager.sh
================================================
#!/bin/bash
#这里可替换为你自己的执行程序,其他代码无需更改
APP_NAME=flow-manager.jar
ENVIRONMENT=dev
PROPERTIES=classpath:/application.properties,classpath:/application-dev.properties
DEBUG_MODE=0
#使用说明,用来提示输入参数
usage() {
echo "Usage: sh 执行脚本.sh [start|stop|restart|status] [dev|test|prod](default:dev) debug"
exit 1
}
#检查程序是否在运行
is_exist(){
pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}' `
#如果不存在返回1,存在返回0
if [ -z "${pid}" ]; then
return 1
else
return 0
fi
}
#启动方法
start(){
is_exist
if [ $? -eq "0" ]; then
echo "${APP_NAME} is already running. pid=${pid} ."
else
echo "now Profiles:${ENVIRONMENT}"
if [ ${DEBUG_MODE} -eq "1" ]; then
nohup java -jar -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5007 $APP_NAME --spring.profiles.active=$ENVIRONMENT --spring.config.location=$PROPERTIES > /dev/null 2>&1 &
else
nohup java -jar $APP_NAME --spring.profiles.active=$ENVIRONMENT --spring.config.location=$PROPERTIES > /dev/null 2>&1 &
fi
fi
}
#停止方法
stop(){
is_exist
if [ $? -eq "0" ]; then
kill -9 $pid
else
echo "${APP_NAME} is not running"
fi
}
#输出运行状态
status(){
is_exist
if [ $? -eq "0" ]; then
echo "${APP_NAME} is running. Pid is ${pid}"
else
echo "${APP_NAME} is NOT running."
fi
}
#重启
restart(){
stop
start
}
case "$3" in
"debug")
DEBUG_MODE=1
;;
*)
;;
esac
#根据第二个参数设置编译环境默认为dev
case "$2" in
"dev")
ENVIRONMENT=dev
PROPERTIES=classpath:/application.properties,classpath:/application-dev.properties
;;
"test")
ENVIRONMENT=test
PROPERTIES=classpath:/application.properties,/etc/config/flow/application-test.properties
;;
"prod")
ENVIRONMENT=prod
PROPERTIES=classpath:/application.properties,/etc/config/flow/application-prod.properties
;;
*)
if [[ -n $2 ]]; then
echo "Profiles set error ! please check again!"
exit 1
fi
;;
esac
#根据输入参数,选择执行对应方法,不输入则执行使用说明
case "$1" in
"start")
start
;;
"stop")
stop
;;
"status")
status
;;
"restart")
restart
;;
*)
usage
;;
esac
================================================
FILE: flowable-ui/src/main/resources/mybatisGenerator.xml
================================================
================================================
FILE: flowable-ui/src/main/resources/stencilset/en/stencilset_bpmn.json
================================================
{
"title" : "Process editor",
"namespace" : "http://b3mn.org/stencilset/bpmn2.0#",
"description" : "BPMN process editor",
"propertyPackages" : [ {
"name" : "process_idpackage",
"properties" : [ {
"id" : "process_id",
"type" : "String",
"title" : "Process identifier",
"value" : "process",
"description" : "Unique identifier of the process definition.",
"popular" : true
} ]
}, {
"name" : "overrideidpackage",
"properties" : [ {
"id" : "overrideid",
"type" : "String",
"title" : "Id",
"value" : "",
"description" : "Unique identifier of the element.",
"popular" : true
} ]
}, {
"name" : "namepackage",
"properties" : [ {
"id" : "name",
"type" : "String",
"title" : "Name",
"value" : "",
"description" : "The descriptive name of the BPMN element.",
"popular" : true,
"refToView" : "text_name"
} ]
}, {
"name" : "documentationpackage",
"properties" : [ {
"id" : "documentation",
"type" : "Text",
"title" : "Documentation",
"value" : "",
"description" : "The descriptive name of the BPMN element.",
"popular" : true
} ]
}, {
"name" : "categorypackage",
"properties" : [ {
"id" : "categorydefinition",
"type" : "String",
"title" : "Category",
"value" : "",
"description" : "Category of the BPMN element.",
"popular" : true
} ]
}, {
"name" : "process_authorpackage",
"properties" : [ {
"id" : "process_author",
"type" : "String",
"title" : "Process author",
"value" : "",
"description" : "Author of the process definition.",
"popular" : true
} ]
}, {
"name" : "process_versionpackage",
"properties" : [ {
"id" : "process_version",
"type" : "String",
"title" : "Process version string (documentation only)",
"value" : "",
"description" : "Version identifier for documentation purpose.",
"popular" : true
} ]
}, {
"name" : "process_historylevelpackage",
"properties" : [ {
"id" : "process_historylevel",
"type" : "flowable-processhistorylevel",
"title" : "Set a specific history level for this process definition",
"value" : "",
"description" : "Set a specific history level for this process definition",
"popular" : true
} ]
}, {
"name" : "isexecutablepackage",
"properties" : [ {
"id" : "isexecutable",
"type" : "Boolean",
"title" : "Is executable",
"value" : "true",
"description" : "Is the process executable?",
"popular" : true
} ]
}, {
"name" : "process_potentialstarteruserpackage",
"properties" : [ {
"id" : "process_potentialstarteruser",
"type" : "String",
"title" : "Potential starter user",
"value" : "",
"description" : "Which user, can start the process?",
"popular" : true
} ]
}, {
"name" : "process_potentialstartergrouppackage",
"properties" : [ {
"id" : "process_potentialstartergroup",
"type" : "String",
"title" : "Potential starter group",
"value" : "",
"description" : "Which group, can start the process?",
"popular" : true
} ]
}, {
"name" : "process_namespacepackage",
"properties" : [ {
"id" : "process_namespace",
"type" : "String",
"title" : "Target namespace",
"value" : "http://www.flowable.org/processdef",
"description" : "Target namespace for the process definition.",
"popular" : true
} ]
}, {
"name" : "process_iseagerexecutionfetchpackage",
"properties" : [ {
"id" : "iseagerexecutionfetch",
"type" : "Boolean",
"title" : "Eager execution fetching",
"value" : "false",
"description" : "Enable eager execution fetching for this process definition?",
"popular" : true
} ]
}, {
"name" : "asynchronousdefinitionpackage",
"properties" : [ {
"id" : "asynchronousdefinition",
"type" : "Boolean",
"title" : "Asynchronous",
"value" : "false",
"description" : "Define the activity as asynchronous.",
"popular" : true
} ]
}, {
"name" : "datapropertiespackage",
"properties" : [ {
"id" : "dataproperties",
"type" : "Complex",
"title" : "Data Objects",
"value" : "",
"description" : "Definition of the data object properties",
"popular" : true
} ]
}, {
"name" : "exclusivedefinitionpackage",
"properties" : [ {
"id" : "exclusivedefinition",
"type" : "Boolean",
"title" : "Exclusive",
"value" : "false",
"description" : "Define the activity as exclusive.",
"popular" : true
} ]
}, {
"name" : "executionlistenerspackage",
"properties" : [ {
"id" : "executionlisteners",
"type" : "multiplecomplex",
"title" : "Execution listeners",
"value" : "",
"description" : "Listeners for an activity, process, sequence flow, start and end event.",
"popular" : true
} ]
}, {
"name" : "tasklistenerspackage",
"properties" : [ {
"id" : "tasklisteners",
"type" : "multiplecomplex",
"title" : "Task listeners",
"value" : "",
"description" : "Listeners for a user task",
"popular" : true
} ]
}, {
"name" : "eventlistenerspackage",
"properties" : [ {
"id" : "eventlisteners",
"type" : "multiplecomplex",
"title" : "Event listeners",
"value" : "",
"description" : "Listeners for any event happening in the Flowable Engine. It's also possible to rethrow the event as a signal, message or error event",
"popular" : true
} ]
}, {
"name" : "usertaskassignmentpackage",
"properties" : [ {
"id" : "usertaskassignment",
"type" : "Complex",
"title" : "Assignments",
"value" : "",
"description" : "Assignment definition for the user task",
"popular" : true
} ]
}, {
"name" : "formpropertiespackage",
"properties" : [ {
"id" : "formproperties",
"type" : "Complex",
"title" : "Form properties",
"value" : "",
"description" : "Definition of the form with a list of form properties",
"popular" : true
} ]
}, {
"name" : "formkeydefinitionpackage",
"properties" : [ {
"id" : "formkeydefinition",
"type" : "String",
"title" : "Form key",
"value" : "",
"description" : "Form key that provides a reference to a form.",
"popular" : true
} ]
}, {
"name" : "duedatedefinitionpackage",
"properties" : [ {
"id" : "duedatedefinition",
"type" : "String",
"title" : "Due date",
"value" : "",
"description" : "Due date of the user task.",
"popular" : true
} ]
}, {
"name" : "prioritydefinitionpackage",
"properties" : [ {
"id" : "prioritydefinition",
"type" : "String",
"title" : "Priority",
"value" : "",
"description" : "Priority of the user task.",
"popular" : true
} ]
}, {
"name" : "servicetaskclasspackage",
"properties" : [ {
"id" : "servicetaskclass",
"type" : "String",
"title" : "Class",
"value" : "",
"description" : "Class that implements the service task logic.",
"popular" : true
} ]
}, {
"name" : "servicetaskexpressionpackage",
"properties" : [ {
"id" : "servicetaskexpression",
"type" : "Text",
"title" : "Expression",
"value" : "",
"description" : "Service task logic defined with an expression.",
"popular" : true
} ]
}, {
"name" : "servicetaskdelegateexpressionpackage",
"properties" : [ {
"id" : "servicetaskdelegateexpression",
"type" : "Text",
"title" : "Delegate expression",
"value" : "",
"description" : "Service task logic defined with a delegate expression.",
"popular" : true
} ]
}, {
"name" : "servicetaskfieldspackage",
"properties" : [ {
"id" : "servicetaskfields",
"type" : "Complex",
"title" : "Class fields",
"value" : "",
"description" : "Field extensions",
"popular" : true
} ]
}, {
"name" : "servicetaskresultvariablepackage",
"properties" : [ {
"id" : "servicetaskresultvariable",
"type" : "String",
"title" : "Result variable name",
"value" : "",
"description" : "Process variable name to store the service task result.",
"popular" : true
} ]
}, {
"name" : "servicetaskresultvariablepackage",
"properties" : [ {
"id" : "servicetaskUseLocalScopeForResultVariable",
"type" : "Boolean",
"title" : "Use local scope for result variable",
"value" : "false",
"description" : "Flag that marks that the used resultVariable needs to be saved as a local variable",
"popular" : true
} ]
}, {
"name" : "servicetasktriggerablepackage",
"properties" : [ {
"id" : "servicetasktriggerable",
"type" : "Boolean",
"title" : "Set service task to be triggerable",
"value" : "false",
"description" : "Sets the service task to be triggerable",
"popular" : true
} ]
}, {
"name": "scriptformatpackage",
"properties" : [ {
"id": "scriptformat",
"type": "String",
"title": "Script format",
"value": "",
"description": "Script format of the script task.",
"popular": true
} ]
}, {
"name": "scripttextpackage",
"properties" : [ {
"id": "scripttext",
"type": "Text",
"title": "Script",
"value": "",
"description": "Script text of the script task.",
"popular": true
}
]
}, {
"name": "scriptautostorevariablespackage",
"properties": [{
"id": "scriptautostorevariables",
"type": "Boolean",
"title": "Auto Store Variables",
"value": "false",
"description": "Automatically store all script variables to the process.",
"popular": true
}]
}, {
"name" : "shellcommandpackage",
"properties" : [ {
"id" : "shellcommand",
"type" : "String",
"title" : "Command",
"value" : "",
"description" : "Shell task command",
"popular" : true
} ]
}, {
"name" : "shellarg1package",
"properties" : [ {
"id" : "shellarg1",
"type" : "Text",
"title" : "Argument 1",
"value" : "",
"description" : "Shell commnad arg 1",
"popular" : true
} ]
}, {
"name" : "shellarg2package",
"properties" : [ {
"id" : "shellarg2",
"type" : "Text",
"title" : "Argument 2",
"value" : "",
"description" : "Shell commnad arg 2",
"popular" : true
} ]
}, {
"name" : "shellarg3package",
"properties" : [ {
"id" : "shellarg3",
"type" : "Text",
"title" : "Argument 3",
"value" : "",
"description" : "Shell commnad arg 3",
"popular" : true
} ]
}, {
"name" : "shellarg4package",
"properties" : [ {
"id" : "shellarg4",
"type" : "Text",
"title" : "Argument 4",
"value" : "",
"description" : "Shell commnad arg 4",
"popular" : true
} ]
}, {
"name" : "shellarg5package",
"properties" : [ {
"id" : "shellarg5",
"type" : "Text",
"title" : "Argument 5",
"value" : "",
"description" : "Shell commnad arg 5",
"popular" : true
} ]
}, {
"name" : "shellwaitpackage",
"properties" : [ {
"id" : "shellwait",
"type" : "Text",
"title" : "Wait",
"value" : "",
"description" : "Flag to wait for shell command execution end",
"popular" : true
} ]
}, {
"name" : "shelloutputvariablepackage",
"properties" : [ {
"id" : "shelloutputvariable",
"type" : "Text",
"title" : "Output variable",
"value" : "",
"description" : "Variable to store shell commnad output",
"popular" : true
} ]
}, {
"name" : "shellerrorcodevariablepackage",
"properties" : [ {
"id" : "shellerrorcodevariable",
"type" : "Text",
"title" : "Error code variable",
"value" : "",
"description" : "Variable to store shell commnad error code",
"popular" : true
} ]
}, {
"name" : "shellredirecterrorpackage",
"properties" : [ {
"id" : "shellredirecterror",
"type" : "Text",
"title" : "Redirect error",
"value" : "",
"description" : "If true merge error output with standard output",
"popular" : true
} ]
}, {
"name" : "shellcleanenvpackage",
"properties" : [ {
"id" : "shellcleanenv",
"type" : "Text",
"title" : "Clean env",
"value" : "",
"description" : "Clean shell execution environment",
"popular" : true
} ]
}, {
"name" : "shelldirectorypackage",
"properties" : [ {
"id" : "shelldirectory",
"type" : "Text",
"title" : "Directory",
"value" : "",
"description" : "Shell process working directory",
"popular" : true
} ]
}, {
"name" : "ruletask_rulespackage",
"properties" : [ {
"id" : "ruletask_rules",
"type" : "String",
"title" : "Rules",
"value" : "",
"description" : "Rules of the rule task.",
"popular" : true
} ]
}, {
"name" : "ruletask_variables_inputpackage",
"properties" : [ {
"id" : "ruletask_variables_input",
"type" : "String",
"title" : "Input variables",
"value" : "",
"description" : "Input variables of the rule task.",
"popular" : true
} ]
}, {
"name" : "ruletask_excludepackage",
"properties" : [ {
"id" : "ruletask_exclude",
"type" : "Boolean",
"title" : "Exclude",
"value" : "false",
"description" : "Use the rules property as exclusion.",
"popular" : true
} ]
}, {
"name" : "ruletask_resultpackage",
"properties" : [ {
"id" : "ruletask_result",
"type" : "String",
"title" : "Result variable",
"value" : "",
"description" : "Result variable of the rule task.",
"popular" : true
} ]
}, {
"name" : "mailtaskheaderspackage",
"properties" : [ {
"id" : "mailtaskheaders",
"type" : "Text",
"title" : "Headers",
"value" : "",
"description" : "Line separated Mail headers (For example - X-Attribute: value).",
"popular" : true
} ]
}, {
"name" : "mailtasktopackage",
"properties" : [ {
"id" : "mailtaskto",
"type" : "Text",
"title" : "To",
"value" : "",
"description" : "The recipients if the e-mail. Multiple recipients are defined in a comma-separated list.",
"popular" : true
} ]
}, {
"name" : "mailtaskfrompackage",
"properties" : [ {
"id" : "mailtaskfrom",
"type" : "Text",
"title" : "From",
"value" : "",
"description" : "The sender e-mail address. If not provided, the default configured from address is used.",
"popular" : true
} ]
}, {
"name" : "mailtasksubjectpackage",
"properties" : [ {
"id" : "mailtasksubject",
"type" : "Text",
"title" : "Subject",
"value" : "",
"description" : "The subject of the e-mail.",
"popular" : true
} ]
}, {
"name" : "mailtaskccpackage",
"properties" : [ {
"id" : "mailtaskcc",
"type" : "Text",
"title" : "Cc",
"value" : "",
"description" : "The cc's of the e-mail. Multiple recipients are defined in a comma-separated list",
"popular" : true
} ]
}, {
"name" : "mailtaskbccpackage",
"properties" : [ {
"id" : "mailtaskbcc",
"type" : "Text",
"title" : "Bcc",
"value" : "",
"description" : "The bcc's of the e-mail. Multiple recipients are defined in a comma-separated list",
"popular" : true
} ]
}, {
"name" : "mailtasktextpackage",
"properties" : [ {
"id" : "mailtasktext",
"type" : "Text",
"title" : "Text",
"value" : "",
"description" : "The content of the e-mail, in case one needs to send plain none-rich e-mails. Can be used in combination with html, for e-mail clients that don't support rich content. The client will then fall back to this text-only alternative.",
"popular" : true
} ]
}, {
"name" : "mailtaskhtmlpackage",
"properties" : [ {
"id" : "mailtaskhtml",
"type" : "Text",
"title" : "Html",
"value" : "",
"description" : "A piece of HTML that is the content of the e-mail.",
"popular" : true
} ]
}, {
"name" : "mailtaskcharsetpackage",
"properties" : [ {
"id" : "mailtaskcharset",
"type" : "String",
"title" : "Charset",
"value" : "",
"description" : "Allows to change the charset of the email, which is necessary for many non-English languages. ",
"popular" : true
} ]
}, {
"name" : "httptaskrequestmethodpackage",
"properties" : [ {
"id" : "httptaskrequestmethod",
"type" : "flowable-http-request-method",
"title" : "Request method",
"value" : "",
"description" : "Request method (For example - GET,POST,PUT etc).",
"popular" : true
} ]
}, {
"name" : "httptaskrequesturlpackage",
"properties" : [ {
"id" : "httptaskrequesturl",
"type" : "Text",
"title" : "Request URL",
"value" : "",
"description" : "Request URL (For example - http://flowable.org).",
"popular" : true
} ]
}, {
"name" : "httptaskrequestheaderspackage",
"properties" : [ {
"id" : "httptaskrequestheaders",
"type" : "Text",
"title" : "Request headers",
"value" : "",
"description" : "Line separated HTTP request headers (For example - Content-Type: application/json).",
"popular" : true
} ]
}, {
"name" : "httptaskrequestbodypackage",
"properties" : [ {
"id" : "httptaskrequestbody",
"type" : "Text",
"title" : "Request body",
"value" : "",
"description" : "Request body (For example- ${sampleBody}).",
"popular" : true
} ]
}, {
"name" : "httptaskrequestbodyencodingpackage",
"properties" : [ {
"id" : "httptaskrequestbodyencoding",
"type" : "Text",
"title" : "Request body encoding",
"value" : "",
"description" : "Request body encoding (For example- UTF-8).",
"popular" : true
} ]
}, {
"name" : "httptaskrequesttimeoutpackage",
"properties" : [ {
"id" : "httptaskrequesttimeout",
"type" : "String",
"title" : "Request timeout",
"value" : "",
"description" : "Timeout in milliseconds for the request (For example - 5000).",
"popular" : true
} ]
}, {
"name" : "httptaskdisallowredirectspackage",
"properties" : [ {
"id" : "httptaskdisallowredirects",
"type" : "String",
"title" : "Disallow redirects",
"value" : "",
"description" : "Flag to disallow HTTP redirects.",
"popular" : true
} ]
}, {
"name" : "httptaskfailstatuscodespackage",
"properties" : [ {
"id" : "httptaskfailstatuscodes",
"type" : "String",
"title" : "Fail status codes",
"value" : "",
"description" : "Comma separated list of HTTP response status codes to retry, for example 400,5XX.",
"popular" : true
} ]
}, {
"name" : "httptaskhandlestatuscodespackage",
"properties" : [ {
"id" : "httptaskhandlestatuscodes",
"type" : "String",
"title" : "Handle status codes",
"value" : "",
"description" : "Comma separated list of HTTP response status codes to ignore, for example 404,3XX.",
"popular" : true
} ]
}, {
"name" : "httptaskignoreexceptionpackage",
"properties" : [ {
"id" : "httptaskignoreexception",
"type" : "String",
"title" : "Ignore exception",
"value" : "",
"description" : "Flag to ignore exceptions.",
"popular" : true
} ]
},
{
"name" : "httptasksaveresponseparameterstransientpackage",
"properties" : [ {
"id" : "httptasksaveresponseparameterstransient",
"type" : "String",
"title" : "Save response as a transient variable",
"value" : "",
"description" : "Flag indicating to store the response variable(s) transient",
"popular" : true
} ]
},
{
"name" : "httptasksaveresponseasjsonpackage",
"properties" : [ {
"id" : "httptasksaveresponseasjson",
"type" : "String",
"title" : "Save response as JSON",
"value" : "",
"description" : "Flag indicating to store the response variable as a JSON variable instead of a String",
"popular" : true
} ]
},
{
"name": "skipexpressionpackage",
"properties": [
{
"id": "skipexpression",
"type": "String",
"title": "Skip expression",
"value": "",
"description": "Skip an expression execution associated with task or association or not.",
"popular": true
}
]
},
{
"name" : "httptaskresponsevariablenamepackage",
"properties" : [ {
"id" : "httptaskresponsevariablename",
"type" : "String",
"title" : "Response variable name",
"value" : "",
"description" : "Define the variable name to store the http response.",
"popular" : true
} ]
}, {
"name" : "httptasksaverequestvariablespackage",
"properties" : [ {
"id" : "httptasksaverequestvariables",
"type" : "String",
"title" : "Save request variables",
"value" : "",
"description" : "Flag to save request variables.",
"popular" : true
} ]
}, {
"name" : "httptasksaveresponseparameterspackage",
"properties" : [ {
"id" : "httptasksaveresponseparameters",
"type" : "String",
"title" : "Save response status, headers",
"value" : "",
"description" : "Flag to save response status, headers etc.",
"popular" : true
} ]
}, {
"name" : "httptaskresultvariableprefixpackage",
"properties" : [ {
"id" : "httptaskresultvariableprefix",
"type" : "String",
"title" : "Result variable prefix",
"value" : "",
"description" : "Prefix for the execution variable names.",
"popular" : true
} ]
}, {
"name" : "callactivitycalledelementpackage",
"properties" : [ {
"id" : "callactivitycalledelement",
"type" : "String",
"title" : "Called element",
"value" : "",
"description" : "Process reference.",
"popular" : true
} ]
}, {
"name" : "callactivitycalledelementtypepackage",
"properties" : [ {
"id" : "callactivitycalledelementtype",
"type" : "flowable-calledelementtype",
"title" : "Called element type",
"value" : "key",
"description" : "Type of the used process reference.",
"popular" : true
} ]
}, {
"name" : "callactivityinparameterspackage",
"properties" : [ {
"id" : "callactivityinparameters",
"type" : "Complex",
"title" : "In parameters",
"value" : "",
"description" : "Definition of the input parameters",
"popular" : true
} ]
}, {
"name" : "callactivityoutparameterspackage",
"properties" : [ {
"id" : "callactivityoutparameters",
"type" : "Complex",
"title" : "Out parameters",
"value" : "",
"description" : "Definition of the output parameters",
"popular" : true
} ]
}, {
"name" : "callactivityinheritvariablespackage",
"properties" : [ {
"id" : "callactivityinheritvariables",
"type" : "Boolean",
"title" : "Inherit variables in sub process",
"value" : "false",
"description" : "Inherit parent process variables in the sub process.",
"popular" : true
} ]
}, {
"name" : "callactivitysamedeploymentpackage",
"properties" : [ {
"id" : "callactivitysamedeployment",
"type" : "Boolean",
"title" : "Start the referenced process from the same deployment.",
"value" : "false",
"description" : "Use the referenced process from the same deployment.",
"popular" : true
} ]
}, {
"name" : "callactivityfallbacktodefaulttenantpackage",
"properties" : [ {
"id" : "callactivityfallbacktodefaulttenant",
"type" : "Boolean",
"title" : "Fallback to default tenant",
"value" : "false",
"description" : "Look for the definition by key in the default tenant when current tenant search fails.",
"popular" : true
} ]
}, {
"name" : "callactivityprocessinstancenamepackage",
"properties" : [ {
"id" : "callactivityprocessinstancename",
"type" : "String",
"title" : "Process instance name",
"value" : "",
"description" : "An expression that resolves to the name of the child process instance",
"popular" : true
} ]
}, {
"name" : "callactivityinheritbusinesskeypackage",
"properties" : [ {
"id" : "callactivityinheritbusinesskey",
"type" : "Boolean",
"title" : "Inherit business key",
"value" : "false",
"description" : "Inherit the business key from the parent process.",
"popular" : true
} ]
}, {
"name" : "callactivityuselocalscopeforoutparameterspackage",
"properties" : [ {
"id" : "callactivityuselocalscopeforoutparameters",
"type" : "Boolean",
"title" : "Use local scope for out parameters",
"value" : "false",
"description" : "Use local variable scope for out parameters.",
"popular" : true
} ]
}, {
"name" : "callactivitybusinesskeypackage",
"properties" : [ {
"id" : "callactivitybusinesskey",
"type" : "String",
"title" : "Business key expression",
"value" : "",
"description" : "An expression that resolves to a business key for the child process instance",
"popular" : true
} ]
}, {
"name" : "callactivitycompleteasyncpackage",
"properties" : [ {
"id" : "callactivitycompleteasync",
"type" : "Boolean",
"title" : "Complete asynchronously",
"value" : "",
"description" : "If set, the child process ending and completing the call activity is done asynchronously. Useful when using parallel multi instance with a called process definition that has async tasks.",
"popular" : true
} ]
}, {
"name" : "cameltaskcamelcontextpackage",
"properties" : [ {
"id" : "cameltaskcamelcontext",
"type" : "String",
"title" : "Camel context",
"value" : "",
"description" : "An optional camel context definition, if left empty the default is used.",
"popular" : true
} ]
}, {
"name" : "muletaskendpointurlpackage",
"properties" : [ {
"id" : "muletaskendpointurl",
"type" : "String",
"title" : "Endpoint url",
"value" : "",
"description" : "A required endpoint url to sent the message to Mule.",
"popular" : true
} ]
}, {
"name" : "muletasklanguagepackage",
"properties" : [ {
"id" : "muletasklanguage",
"type" : "String",
"title" : "Language",
"value" : "",
"description" : "A required definition for the language to resolve the payload expression, like juel.",
"popular" : true
} ]
}, {
"name" : "muletaskpayloadexpressionpackage",
"properties" : [ {
"id" : "muletaskpayloadexpression",
"type" : "Text",
"title" : "Payload expression",
"value" : "",
"description" : "A required definition for the payload of the message sent to Mule.",
"popular" : true
} ]
}, {
"name" : "muletaskresultvariablepackage",
"properties" : [ {
"id" : "muletaskresultvariable",
"type" : "String",
"title" : "Result variable",
"value" : "",
"description" : "An optional result variable for the payload returned.",
"popular" : true
} ]
}, {
"name" : "conditionsequenceflowpackage",
"properties" : [ {
"id" : "conditionsequenceflow",
"type" : "Complex",
"title" : "Flow condition",
"value" : "",
"description" : "The condition of the sequence flow",
"popular" : true
} ]
}, {
"name" : "defaultflowpackage",
"properties" : [ {
"id" : "defaultflow",
"type" : "Boolean",
"title" : "Default flow",
"value" : "false",
"description" : "Define the sequence flow as default",
"popular" : true,
"refToView" : "default"
} ]
}, {
"name" : "conditionalflowpackage",
"properties" : [ {
"id" : "conditionalflow",
"type" : "Boolean",
"title" : "Conditional flow",
"value" : "false",
"description" : "Define the sequence flow with a condition",
"popular" : true
} ]
}, {
"name" : "timercycledefinitionpackage",
"properties" : [ {
"id" : "timercycledefinition",
"type" : "String",
"title" : "Time cycle (e.g. R3/PT10H)",
"value" : "",
"description" : "Define the timer with a ISO-8601 cycle.",
"popular" : true
} ]
}, {
"name" : "timerdatedefinitionpackage",
"properties" : [ {
"id" : "timerdatedefinition",
"type" : "String",
"title" : "Time date in ISO-8601",
"value" : "",
"description" : "Define the timer with a ISO-8601 date definition.",
"popular" : true
} ]
}, {
"name" : "timerdurationdefinitionpackage",
"properties" : [ {
"id" : "timerdurationdefinition",
"type" : "String",
"title" : "Time duration (e.g. PT5M)",
"value" : "",
"description" : "Define the timer with a ISO-8601 duration.",
"popular" : true
} ]
}, {
"name" : "timerenddatedefinitionpackage",
"properties" : [ {
"id" : "timerenddatedefinition",
"type" : "String",
"title" : "Time End Date in ISO-8601",
"value" : "",
"description" : "Define the timer with a ISO-8601 duration.",
"popular" : true
} ]
}, {
"name" : "messagerefpackage",
"properties" : [ {
"id" : "messageref",
"type" : "String",
"title" : "Message reference",
"value" : "",
"description" : "Define the message name.",
"popular" : true
} ]
}, {
"name" : "signalrefpackage",
"properties" : [ {
"id" : "signalref",
"type" : "String",
"title" : "Signal reference",
"value" : "",
"description" : "Define the signal name.",
"popular" : true
} ]
}, {
"name" : "errorrefpackage",
"properties" : [ {
"id" : "errorref",
"type" : "String",
"title" : "Error reference",
"value" : "",
"description" : "Define the error name.",
"popular" : true
} ]
}, {
"name" : "cancelactivitypackage",
"properties" : [ {
"id" : "cancelactivity",
"type" : "Boolean",
"title" : "Cancel activity",
"value" : "true",
"description" : "Should the activity be cancelled",
"popular" : true,
"refToView" : [ "frame", "frame2" ]
} ]
}, {
"name" : "initiatorpackage",
"properties" : [ {
"id" : "initiator",
"type" : "String",
"title" : "Initiator",
"value" : "",
"description" : "Initiator of the process.",
"popular" : true
} ]
}, {
"name" : "textpackage",
"properties" : [ {
"id" : "text",
"type" : "String",
"title" : "Text",
"value" : "",
"description" : "The text of the text annotation.",
"popular" : true,
"refToView" : "text"
} ]
}, {
"name" : "multiinstance_typepackage",
"properties" : [ {
"id" : "multiinstance_type",
"type" : "flowable-multiinstance",
"title" : "Multi-instance type",
"value" : "None",
"description" : "Repeated activity execution (parallel or sequential) can be displayed through different loop types",
"popular" : true,
"refToView" : "multiinstance"
} ]
}, {
"name" : "multiinstance_cardinalitypackage",
"properties" : [ {
"id" : "multiinstance_cardinality",
"type" : "String",
"title" : "Cardinality (Multi-instance)",
"value" : "",
"description" : "Define the cardinality of multi instance.",
"popular" : true
} ]
}, {
"name" : "multiinstance_collectionpackage",
"properties" : [ {
"id" : "multiinstance_collection",
"type" : "String",
"title" : "Collection (Multi-instance)",
"value" : "",
"description" : "Define the collection for the multi instance.",
"popular" : true
} ]
}, {
"name" : "multiinstance_variablepackage",
"properties" : [ {
"id" : "multiinstance_variable",
"type" : "String",
"title" : "Element variable (Multi-instance)",
"value" : "",
"description" : "Define the element variable for the multi instance.",
"popular" : true
} ]
}, {
"name" : "multiinstance_conditionpackage",
"properties" : [ {
"id" : "multiinstance_condition",
"type" : "String",
"title" : "Completion condition (Multi-instance)",
"value" : "",
"description" : "Define the completion condition for the multi instance.",
"popular" : true
} ]
}, {
"name" : "isforcompensationpackage",
"properties" : [ {
"id" : "isforcompensation",
"type" : "Boolean",
"title" : "Is for compensation",
"value" : "false",
"description" : "A flag that identifies whether this activity is intended for the purposes of compensation.",
"popular" : true,
"refToView" : "compensation"
} ]
}, {
"name" : "sequencefloworderpackage",
"properties" : [ {
"id" : "sequencefloworder",
"type" : "Complex",
"title" : "Flow order",
"value" : "",
"description" : "Order outgoing sequence flows.",
"popular" : true
} ]
}, {
"name" : "signaldefinitionspackage",
"properties" : [ {
"id" : "signaldefinitions",
"type" : "multiplecomplex",
"title" : "Signal definitions",
"value" : "",
"description" : "Signal definitions",
"popular" : true
} ]
}, {
"name" : "messagedefinitionspackage",
"properties" : [ {
"id" : "messagedefinitions",
"type" : "multiplecomplex",
"title" : "Message definitions",
"value" : "",
"description" : "Message definitions",
"popular" : true
} ]
}, {
"name" : "istransactionpackage",
"properties" : [ {
"id" : "istransaction",
"type" : "Boolean",
"title" : "Is a transaction sub process",
"value" : "false",
"description" : "A flag that identifies whether this sub process is of type transaction.",
"popular" : true,
"refToView" : "border"
} ]
}, {
"name" : "formreferencepackage",
"properties" : [ {
"id" : "formreference",
"type" : "Complex",
"title" : "Form reference",
"value" : "",
"description" : "Reference to a form",
"popular" : true
} ]
}, {
"name" : "terminateAllpackage",
"properties" : [ {
"id" : "terminateAll",
"type" : "Boolean",
"title" : "Terminate all",
"value" : "false",
"description" : "Enable to terminate the process instance",
"popular" : true
} ]
}, {
"name" : "decisiontaskdecisiontablereferencepackage",
"properties" : [ {
"id" : "decisiontaskdecisiontablereference",
"type" : "Complex",
"title" : "Decision table reference",
"value" : "",
"description" : "Set the decision table reference",
"popular" : true
} ]
}, {
"name" : "decisiontaskthrowerroronnohitspackage",
"properties" : [ {
"id" : "decisiontaskthrowerroronnohits",
"type" : "Boolean",
"title" : "Throw error if no rules were hit",
"value" : "false",
"description" : "Should an error be thrown if no rules of the decision table were hit and consequently no result was found.",
"popular" : true
} ]
}, {
"name" : "decisiontaskfallbacktodefaulttenantpackage",
"properties" : [ {
"id" : "decisiontaskfallbacktodefaulttenant",
"type" : "Boolean",
"title" : "Fallback to default tenant",
"value" : "false",
"description" : "Find decision definition without tenant when previous attemps to find it with tenant failed.",
"popular" : true
} ]
}, {
"name" : "interruptingpackage",
"properties" : [ {
"id" : "interrupting",
"type" : "Boolean",
"title" : "Interrupting",
"value" : "true",
"description" : "Should all parent executions be terminated?",
"popular" : true,
"refToView" : [ "frame" ]
} ]
}, {
"name" : "completionconditionpackage",
"properties" : [ {
"id" : "completioncondition",
"type" : "String",
"title" : "Completion condition",
"value" : "",
"description" : "The completion condition for the adhoc sub process",
"popular" : true
} ]
}, {
"name" : "orderingpackage",
"properties" : [ {
"id" : "ordering",
"type" : "flowable-ordering",
"title" : "Ordering",
"value" : "Parallel",
"description" : "The ordering for the adhoc sub process",
"popular" : true
} ]
}, {
"name" : "cancelremaininginstancespackage",
"properties" : [ {
"id" : "cancelremaininginstances",
"type" : "Boolean",
"title" : "Cancel remaining instances",
"value" : "true",
"description" : "Cancel the remaining instances for the adhoc sub process?",
"popular" : true
} ]
} ],
"stencils" : [ {
"type" : "node",
"id" : "BPMNDiagram",
"title" : "BPMN-Diagram",
"description" : "A BPMN 2.0 diagram.",
"view" : "\n",
"icon" : "diagram.png",
"groups" : [ "Diagram" ],
"mayBeRoot" : true,
"hide" : true,
"propertyPackages" : [ "process_idpackage", "namepackage", "documentationpackage", "process_authorpackage", "process_versionpackage", "process_namespacepackage", "process_historylevelpackage", "isexecutablepackage", "datapropertiespackage", "executionlistenerspackage", "eventlistenerspackage", "signaldefinitionspackage", "messagedefinitionspackage", "process_potentialstarteruserpackage","process_potentialstartergrouppackage", "process_iseagerexecutionfetchpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ ]
}, {
"type" : "node",
"id" : "StartNoneEvent",
"title" : "Start event",
"description" : "A start event without a specific trigger",
"view" : "\n",
"icon" : "startevent/none.png",
"groups" : [ "Start Events" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "executionlistenerspackage", "initiatorpackage", "formkeydefinitionpackage", "formreferencepackage", "formpropertiespackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "sequence_start", "Startevents_all", "StartEventsMorph", "all" ]
}, {
"type" : "node",
"id" : "StartTimerEvent",
"title" : "Start timer event",
"description" : "A start event with a timer trigger",
"view" : "\n",
"icon" : "startevent/timer.png",
"groups" : [ "Start Events" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "executionlistenerspackage", "timercycledefinitionpackage", "timerdatedefinitionpackage", "timerdurationdefinitionpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "sequence_start", "Startevents_all", "StartEventsMorph", "all" ]
}, {
"type" : "node",
"id" : "StartSignalEvent",
"title" : "Start signal event",
"description" : "A start event with a signal trigger",
"view" : "\n",
"icon" : "startevent/signal.png",
"groups" : [ "Start Events" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "executionlistenerspackage", "signalrefpackage", "interruptingpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "sequence_start", "Startevents_all", "StartEventsMorph", "all" ]
}, {
"type" : "node",
"id" : "StartMessageEvent",
"title" : "Start message event",
"description" : "A start event with a message trigger",
"view" : "\n",
"icon" : "startevent/message.png",
"groups" : [ "Start Events" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "executionlistenerspackage", "messagerefpackage", "interruptingpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "sequence_start", "Startevents_all", "StartEventsMorph", "all" ]
}, {
"type" : "node",
"id" : "StartErrorEvent",
"title" : "Start error event",
"description" : "A start event that catches a thrown BPMN error",
"view" : "\n",
"icon" : "startevent/error.png",
"groups" : [ "Start Events" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "executionlistenerspackage", "errorrefpackage", "interruptingpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "sequence_start", "Startevents_all", "StartEventsMorph", "all" ]
}, {
"type" : "node",
"id" : "UserTask",
"title" : "User task",
"description" : "A manual task assigned to a specific person",
"view" : "\n",
"icon" : "activity/list/type.user.png",
"groups" : [ "Activities" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "executionlistenerspackage", "multiinstance_typepackage", "multiinstance_cardinalitypackage", "multiinstance_collectionpackage", "multiinstance_variablepackage", "multiinstance_conditionpackage", "isforcompensationpackage", "usertaskassignmentpackage", "formkeydefinitionpackage", "formreferencepackage", "duedatedefinitionpackage", "prioritydefinitionpackage", "formpropertiespackage", "tasklistenerspackage", "skipexpressionpackage", "categorypackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "Activity", "sequence_start", "sequence_end", "ActivitiesMorph", "all" ]
}, {
"type" : "node",
"id" : "ServiceTask",
"title" : "Service task",
"description" : "An automatic task with service logic",
"view" : "\n",
"icon" : "activity/list/type.service.png",
"groups" : [ "Activities" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "servicetasktriggerablepackage", "executionlistenerspackage", "multiinstance_typepackage", "multiinstance_cardinalitypackage", "multiinstance_collectionpackage", "multiinstance_variablepackage", "multiinstance_conditionpackage", "isforcompensationpackage", "servicetaskclasspackage", "servicetaskexpressionpackage", "servicetaskdelegateexpressionpackage", "servicetaskfieldspackage", "servicetaskresultvariablepackage", "skipexpressionpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "Activity", "sequence_start", "sequence_end", "ActivitiesMorph", "all" ]
}, {
"type" : "node",
"id" : "ScriptTask",
"title" : "Script task",
"description" : "An automatic task with script logic",
"view" : "\n",
"icon" : "activity/list/type.script.png",
"groups" : [ "Activities" ],
"propertyPackages" : [ "scriptformatpackage", "scripttextpackage", "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "executionlistenerspackage", "multiinstance_typepackage", "multiinstance_cardinalitypackage", "multiinstance_collectionpackage", "multiinstance_variablepackage", "multiinstance_conditionpackage", "isforcompensationpackage", "scriptautostorevariablespackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "Activity", "sequence_start", "sequence_end", "ActivitiesMorph", "all" ]
}, {
"type" : "node",
"id" : "BusinessRule",
"title" : "Business rule task",
"description" : "An automatic task with rule logic",
"view" : "\n",
"icon" : "activity/list/type.business.rule.png",
"groups" : [ "Activities" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "executionlistenerspackage", "multiinstance_typepackage", "multiinstance_cardinalitypackage", "multiinstance_collectionpackage", "multiinstance_variablepackage", "multiinstance_conditionpackage", "isforcompensationpackage", "ruletask_rulespackage", "ruletask_variables_inputpackage", "ruletask_excludepackage", "ruletask_resultpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "Activity", "sequence_start", "sequence_end", "ActivitiesMorph", "all" ]
}, {
"type" : "node",
"id" : "ReceiveTask",
"title" : "Receive task",
"description" : "An task that waits for a signal",
"view" : "\n",
"icon" : "activity/list/type.receive.png",
"groups" : [ "Activities" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "executionlistenerspackage", "multiinstance_typepackage", "multiinstance_cardinalitypackage", "multiinstance_collectionpackage", "multiinstance_variablepackage", "multiinstance_conditionpackage", "isforcompensationpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "Activity", "sequence_start", "sequence_end", "ActivitiesMorph", "all" ]
}, {
"type" : "node",
"id" : "ManualTask",
"title" : "Manual task",
"description" : "An automatic task with no logic",
"view" : "\n",
"icon" : "activity/list/type.manual.png",
"groups" : [ "Activities" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "executionlistenerspackage", "multiinstance_typepackage", "multiinstance_cardinalitypackage", "multiinstance_collectionpackage", "multiinstance_variablepackage", "multiinstance_conditionpackage", "isforcompensationpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "Activity", "sequence_start", "sequence_end", "ActivitiesMorph", "all" ]
}, {
"type" : "node",
"id" : "MailTask",
"title" : "Mail task",
"description" : "An mail task",
"view" : "\n",
"icon" : "activity/list/type.send.png",
"groups" : [ "Activities" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "executionlistenerspackage", "multiinstance_typepackage", "multiinstance_cardinalitypackage", "multiinstance_collectionpackage", "multiinstance_variablepackage", "multiinstance_conditionpackage", "isforcompensationpackage", "mailtaskheaderspackage", "mailtasktopackage", "mailtaskfrompackage", "mailtasksubjectpackage", "mailtaskccpackage", "mailtaskbccpackage", "mailtasktextpackage", "mailtaskhtmlpackage", "mailtaskcharsetpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "Activity", "sequence_start", "sequence_end", "ActivitiesMorph", "all" ]
}, {
"type" : "node",
"id" : "CamelTask",
"title" : "Camel task",
"description" : "An task that sends a message to Camel",
"view" : "\n",
"icon" : "activity/list/type.camel.png",
"groups" : [ "Activities" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "executionlistenerspackage", "multiinstance_typepackage", "multiinstance_cardinalitypackage", "multiinstance_collectionpackage", "multiinstance_variablepackage", "multiinstance_conditionpackage", "isforcompensationpackage", "cameltaskcamelcontextpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "Activity", "sequence_start", "sequence_end", "ActivitiesMorph", "all" ]
}, {
"type" : "node",
"id" : "HttpTask",
"title" : "Http task",
"description" : "A HTTP task",
"view" : "\n",
"icon" : "activity/list/type.http.png",
"groups" : [ "Activities" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "executionlistenerspackage", "multiinstance_typepackage", "multiinstance_cardinalitypackage", "multiinstance_collectionpackage", "multiinstance_variablepackage", "multiinstance_conditionpackage", "isforcompensationpackage", "httptaskrequestmethodpackage", "httptaskrequesturlpackage", "httptaskrequestheaderspackage", "httptaskrequestbodypackage", "httptaskrequestbodyencodingpackage", "httptaskrequesttimeoutpackage", "httptaskdisallowredirectspackage", "httptaskfailstatuscodespackage", "httptaskhandlestatuscodespackage", "httptaskignoreexceptionpackage", "httptaskresponsevariablenamepackage", "httptasksaverequestvariablespackage", "httptasksaveresponseparameterspackage", "httptaskresultvariableprefixpackage", "httptasksaveresponseparameterstransientpackage", "httptasksaveresponseasjsonpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "Activity", "sequence_start", "sequence_end", "ActivitiesMorph", "all" ]
}, {
"type" : "node",
"id" : "MuleTask",
"title" : "Mule task",
"description" : "An task that sends a message to Mule",
"view" : "\n",
"icon" : "activity/list/type.mule.png",
"groups" : [ "Activities" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "executionlistenerspackage", "multiinstance_typepackage", "multiinstance_cardinalitypackage", "multiinstance_collectionpackage", "multiinstance_variablepackage", "multiinstance_conditionpackage", "isforcompensationpackage", "muletaskendpointurlpackage", "muletasklanguagepackage", "muletaskpayloadexpressionpackage", "muletaskresultvariablepackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "Activity", "sequence_start", "sequence_end", "ActivitiesMorph", "all" ]
}, {
"type" : "node",
"id" : "SendTask",
"title" : "Send task",
"description" : "An task that sends a message",
"view" : "\n",
"icon" : "activity/list/type.send.png",
"groups" : [ "Activities" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "executionlistenerspackage", "multiinstance_typepackage", "multiinstance_cardinalitypackage", "multiinstance_collectionpackage", "multiinstance_variablepackage", "multiinstance_conditionpackage", "isforcompensationpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "Activity", "sequence_start", "sequence_end", "ActivitiesMorph", "all" ]
}, {
"type" : "node",
"id" : "DecisionTask",
"title" : "Decision task",
"description" : "Task to use the Flowable DMN rule engine",
"view" : "\n",
"icon" : "activity/list/type.decision.png",
"groups" : [ "Activities" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "executionlistenerspackage", "multiinstance_typepackage", "multiinstance_cardinalitypackage", "multiinstance_collectionpackage", "multiinstance_variablepackage", "multiinstance_conditionpackage", "isforcompensationpackage", "decisiontaskdecisiontablereferencepackage", "decisiontaskthrowerroronnohitspackage", "decisiontaskfallbacktodefaulttenantpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "Activity", "sequence_start", "sequence_end", "ActivitiesMorph", "all" ]
},
{
"type": "node",
"id": "ShellTask",
"title": "Shell task",
"description": "An automatic task with shell batch logic",
"view": "\n",
"icon": "activity/list/type.shell.png",
"groups": [
"Activities"
],
"propertyPackages": [
"overrideidpackage",
"namepackage",
"documentationpackage",
"asynchronousdefinitionpackage",
"shellcommandpackage",
"shellarg1package",
"shellarg2package",
"shellarg3package",
"shellarg4package",
"shellarg5package",
"shellwaitpackage",
"shelloutputvariablepackage",
"shellerrorcodevariablepackage",
"shellredirecterrorpackage",
"shellcleanenvpackage",
"shelldirectorypackage",
"exclusivedefinitionpackage",
"executionlistenerspackage",
"multiinstance_typepackage",
"multiinstance_cardinalitypackage",
"multiinstance_collectionpackage",
"multiinstance_variablepackage",
"multiinstance_conditionpackage",
"isforcompensationpackage"
],
"hiddenPropertyPackages": [],
"roles": [
"Activity",
"sequence_start",
"sequence_end",
"ActivitiesMorph",
"all"
]
},{
"type" : "node",
"id" : "SubProcess",
"title" : "Sub process",
"description" : "A sub process scope",
"view" : "\n",
"icon" : "activity/expanded.subprocess.png",
"groups" : [ "Structural" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "datapropertiespackage", "executionlistenerspackage", "multiinstance_typepackage", "multiinstance_cardinalitypackage", "multiinstance_collectionpackage", "multiinstance_variablepackage", "multiinstance_conditionpackage", "istransactionpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "Activity", "sequence_start", "sequence_end", "all" ]
},{
"type" : "node",
"id" : "CollapsedSubProcess",
"title" : "Collapsed Sub process",
"description" : "A sub process scope",
"view" : "\n",
"icon" : "activity/subprocess.png",
"groups" : [ "Structural" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "datapropertiespackage", "executionlistenerspackage", "multiinstance_typepackage", "multiinstance_cardinalitypackage", "multiinstance_collectionpackage", "multiinstance_variablepackage", "multiinstance_conditionpackage", "istransactionpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "Activity", "sequence_start", "sequence_end", "all" ]
},{
"type" : "node",
"id" : "EventSubProcess",
"title" : "Event sub process",
"description" : "A event sub process scope",
"view" : "\n",
"icon" : "activity/event.subprocess.png",
"groups" : [ "Structural" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "executionlistenerspackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "Activity", "all", "EventSubProcess" ]
}, {
"type" : "node",
"id" : "CallActivity",
"title" : "Call activity",
"description" : "A call activity",
"view" : "\n",
"icon" : "activity/task.png",
"groups" : [ "Structural" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "callactivitycompleteasyncpackage", "executionlistenerspackage", "callactivitycalledelementpackage", "callactivitycalledelementtypepackage", "callactivityinparameterspackage", "callactivityoutparameterspackage", "callactivityinheritvariablespackage", "callactivitysamedeploymentpackage", "callactivityfallbacktodefaulttenantpackage", "callactivityprocessinstancenamepackage", "callactivityinheritbusinesskeypackage", "callactivitybusinesskeypackage", "callactivityuselocalscopeforoutparameterspackage", "multiinstance_typepackage", "multiinstance_cardinalitypackage", "multiinstance_collectionpackage", "multiinstance_variablepackage", "multiinstance_conditionpackage", "isforcompensationpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "Activity", "sequence_start", "sequence_end", "all" ]
}, {
"type" : "node",
"id" : "ExclusiveGateway",
"title" : "Exclusive gateway",
"description" : "A choice gateway",
"view" : "\n\n",
"icon" : "gateway/exclusive.databased.png",
"groups" : [ "Gateways" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "sequencefloworderpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "sequence_start", "GatewaysMorph", "sequence_end", "all" ]
}, {
"type" : "node",
"id" : "ParallelGateway",
"title" : "Parallel gateway",
"description" : "A parallel gateway",
"view" : "\n\n",
"icon" : "gateway/parallel.png",
"groups" : [ "Gateways" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "sequencefloworderpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "sequence_start", "GatewaysMorph", "sequence_end", "all" ]
}, {
"type" : "node",
"id" : "InclusiveGateway",
"title" : "Inclusive gateway",
"description" : "An inclusive gateway",
"view" : "\n\n",
"icon" : "gateway/inclusive.png",
"groups" : [ "Gateways" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "sequencefloworderpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "sequence_start", "GatewaysMorph", "sequence_end", "all" ]
}, {
"type" : "node",
"id" : "EventGateway",
"title" : "Event gateway",
"description" : "An event gateway",
"view" : "\n\n",
"icon" : "gateway/eventbased.png",
"groups" : [ "Gateways" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "sequencefloworderpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "sequence_start", "GatewaysMorph", "sequence_end", "all" ]
}, {
"type" : "node",
"id" : "BoundaryErrorEvent",
"title" : "Boundary error event",
"description" : "A boundary event that catches a BPMN error",
"view" : "\n",
"icon" : "catching/error.png",
"groups" : [ "Boundary Events" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "errorrefpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "sequence_start", "BoundaryEventsMorph", "IntermediateEventOnActivityBoundary" ]
}, {
"type" : "node",
"id" : "BoundaryTimerEvent",
"title" : "Boundary timer event",
"description" : "A boundary event with a timer trigger",
"view" : "\n",
"icon" : "catching/timer.png",
"groups" : [ "Boundary Events" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "timercycledefinitionpackage", "timerdatedefinitionpackage", "timerdurationdefinitionpackage", "timerenddatedefinitionpackage", "cancelactivitypackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "sequence_start", "BoundaryEventsMorph", "IntermediateEventOnActivityBoundary" ]
}, {
"type" : "node",
"id" : "BoundarySignalEvent",
"title" : "Boundary signal event",
"description" : "A boundary event with a signal trigger",
"view" : "\n",
"icon" : "catching/signal.png",
"groups" : [ "Boundary Events" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "signalrefpackage", "cancelactivitypackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "sequence_start", "BoundaryEventsMorph", "IntermediateEventOnActivityBoundary" ]
}, {
"type" : "node",
"id" : "BoundaryMessageEvent",
"title" : "Boundary message event",
"description" : "A boundary event with a message trigger",
"view" : "\n",
"icon" : "catching/message.png",
"groups" : [ "Boundary Events" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "messagerefpackage", "cancelactivitypackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "sequence_start", "BoundaryEventsMorph", "IntermediateEventOnActivityBoundary" ]
}, {
"type" : "node",
"id" : "BoundaryCancelEvent",
"title" : "Boundary cancel event",
"description" : "A boundary cancel event",
"view" : "\n",
"icon" : "catching/cancel.png",
"groups" : [ "Boundary Events" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "sequence_start", "BoundaryEventsMorph", "IntermediateEventOnActivityBoundary" ]
}, {
"type" : "node",
"id" : "BoundaryCompensationEvent",
"title" : "Boundary compensation event",
"description" : "A boundary compensation event",
"view" : "\n",
"icon" : "catching/compensation.png",
"groups" : [ "Boundary Events" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "BoundaryEventsMorph", "IntermediateEventOnActivityBoundary", "all" ]
}, {
"type" : "node",
"id" : "CatchTimerEvent",
"title" : "Intermediate timer catching event",
"description" : "An intermediate catching event with a timer trigger",
"view" : "\n",
"icon" : "catching/timer.png",
"groups" : [ "Intermediate Catching Events" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "executionlistenerspackage", "timercycledefinitionpackage", "timerdatedefinitionpackage", "timerdurationdefinitionpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "sequence_start", "sequence_end", "CatchEventsMorph", "all" ]
}, {
"type" : "node",
"id" : "CatchSignalEvent",
"title" : "Intermediate signal catching event",
"description" : "An intermediate catching event with a signal trigger",
"view" : "\n",
"icon" : "catching/signal.png",
"groups" : [ "Intermediate Catching Events" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "executionlistenerspackage", "signalrefpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "sequence_start", "sequence_end", "CatchEventsMorph", "all" ]
}, {
"type" : "node",
"id" : "CatchMessageEvent",
"title" : "Intermediate message catching event",
"description" : "An intermediate catching event with a message trigger",
"view" : "\n",
"icon" : "catching/message.png",
"groups" : [ "Intermediate Catching Events" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "executionlistenerspackage", "messagerefpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "sequence_start", "sequence_end", "CatchEventsMorph", "all" ]
}, {
"type" : "node",
"id" : "ThrowNoneEvent",
"title" : "Intermediate none throwing event",
"description" : "An intermediate event without a specific trigger",
"view" : "\n",
"icon" : "throwing/none.png",
"groups" : [ "Intermediate Throwing Events" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "executionlistenerspackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "ThrowEventsMorph", "sequence_start", "sequence_end", "all" ]
}, {
"type" : "node",
"id" : "ThrowSignalEvent",
"title" : "Intermediate signal throwing event",
"description" : "An intermediate event with a signal trigger",
"view" : "\n",
"icon" : "throwing/signal.png",
"groups" : [ "Intermediate Throwing Events" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "executionlistenerspackage", "signalrefpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "ThrowEventsMorph", "sequence_start", "sequence_end", "all" ]
}, {
"type" : "node",
"id" : "EndNoneEvent",
"title" : "End event",
"description" : "An end event without a specific trigger",
"view" : "\n",
"icon" : "endevent/none.png",
"groups" : [ "End Events" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "executionlistenerspackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "EndEventsMorph", "sequence_end", "all" ]
}, {
"type" : "node",
"id" : "EndErrorEvent",
"title" : "End error event",
"description" : "An end event that throws an error event",
"view" : "\n",
"icon" : "endevent/error.png",
"groups" : [ "End Events" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "executionlistenerspackage", "errorrefpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "EndEventsMorph", "sequence_end", "all" ]
}, {
"type" : "node",
"id" : "EndCancelEvent",
"title" : "End cancel event",
"description" : "A cancel end event",
"view" : "\n",
"icon" : "endevent/cancel.png",
"groups" : [ "End Events" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "executionlistenerspackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "EndEventsMorph", "sequence_end", "all" ]
}, {
"type" : "node",
"id" : "EndTerminateEvent",
"title" : "End terminate event",
"description" : "A terminate end event",
"view" : "\n",
"icon" : "endevent/terminate.png",
"groups" : [ "End Events" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "executionlistenerspackage", "terminateAllpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "EndEventsMorph", "sequence_end", "all" ]
}, {
"type" : "node",
"id" : "Pool",
"title" : "Pool",
"description" : "A pool to stucture the process definition",
"view" : "\n",
"icon" : "swimlane/pool.png",
"groups" : [ "Swimlanes" ],
"layout" : [ {
"type" : "layout.bpmn2_0.pool"
} ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "process_idpackage", "isexecutablepackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "canContainArtifacts", "all" ]
}, {
"type" : "node",
"id" : "Lane",
"title" : "Lane",
"description" : "A lane to stucture the process definition",
"view" : "\n",
"icon" : "swimlane/lane.png",
"groups" : [ "Swimlanes" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "PoolChild", "canContainArtifacts", "all" ]
}, {
"type" : "edge",
"id" : "SequenceFlow",
"title" : "Sequence flow",
"description" : "Sequence flow defines the execution order of activities.",
"view" : "\r\n",
"icon" : "connector/sequenceflow.png",
"groups" : [ "Connecting Objects" ],
"layout" : [ {
"type" : "layout.bpmn2_0.sequenceflow"
} ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "conditionsequenceflowpackage", "executionlistenerspackage", "defaultflowpackage", "skipexpressionpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "ConnectingObjectsMorph", "all" ]
}, {
"type" : "edge",
"id" : "MessageFlow",
"title" : "Message flow",
"description" : "Message flow to connect elements in different pools.",
"view" : "\r\n",
"icon" : "connector/messageflow.png",
"groups" : [ "Connecting Objects" ],
"layout" : [ {
"type" : "layout.bpmn2_0.sequenceflow"
} ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "ConnectingObjectsMorph", "all" ]
}, {
"type" : "edge",
"id" : "Association",
"title" : "Association",
"description" : "Associates a text annotation with an element.",
"view" : "\r\n",
"icon" : "connector/association.undirected.png",
"groups" : [ "Connecting Objects" ],
"layout" : [ {
"type" : "layout.bpmn2_0.sequenceflow"
} ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "ConnectingObjectsMorph", "all" ]
}, {
"type" : "edge",
"id" : "DataAssociation",
"title" : "DataAssociation",
"description" : "Associates a data element with an activity.",
"view" : "\r\n",
"icon" : "connector/association.unidirectional.png",
"groups" : [ "Connecting Objects" ],
"layout" : [ {
"type" : "layout.bpmn2_0.sequenceflow"
} ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "ConnectingObjectsMorph", "all" ]
}, {
"type" : "node",
"id" : "TextAnnotation",
"title" : "Text annotation",
"description" : "Annotates elements with description text.",
"view" : "\n",
"icon" : "artifact/text.annotation.png",
"groups" : [ "Artifacts" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "textpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "all" ]
}, {
"type" : "node",
"id" : "DataStore",
"title" : "Data store",
"description" : "Reference to a data store.",
"view" : "\r\n\r\n",
"icon" : "dataobject/data.store.png",
"groups" : [ "Artifacts" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "all" ]
}, {
"type" : "node",
"id" : "AdhocSubProcess",
"title" : "Adhoc sub process",
"description" : "An adhoc sub process",
"view" : "\n",
"icon" : "activity/adhoc.subprocess.png",
"groups" : [ "Structural" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "completionconditionpackage", "orderingpackage", "cancelremaininginstancespackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "Activity", "sequence_start", "sequence_end", "all" ]
} ],
"rules" : {
"cardinalityRules" : [ {
"role" : "Startevents_all",
"incomingEdges" : [ {
"role" : "SequenceFlow",
"maximum" : 0
} ]
}, {
"role" : "Endevents_all",
"outgoingEdges" : [ {
"role" : "SequenceFlow",
"maximum" : 0
} ]
} ],
"connectionRules" : [ {
"role" : "SequenceFlow",
"connects" : [ {
"from" : "sequence_start",
"to" : [ "sequence_end" ]
} ]
}, {
"role" : "Association",
"connects" : [ {
"from" : "sequence_start",
"to" : [ "TextAnnotation" ]
}, {
"from" : "sequence_end",
"to" : [ "TextAnnotation" ]
}, {
"from" : "TextAnnotation",
"to" : [ "sequence_end" ]
}, {
"from" : "BoundaryCompensationEvent",
"to" : [ "sequence_end" ]
}, {
"from" : "TextAnnotation",
"to" : [ "sequence_start" ]
}, {
"from" : "BoundaryCompensationEvent",
"to" : [ "sequence_start" ]
} ]
}, {
"role" : "DataAssociation",
"connects" : [ {
"from" : "sequence_start",
"to" : [ "DataStore" ]
}, {
"from" : "sequence_end",
"to" : [ "DataStore" ]
}, {
"from" : "DataStore",
"to" : [ "sequence_end" ]
}, {
"from" : "DataStore",
"to" : [ "sequence_start" ]
} ]
}, {
"role" : "IntermediateEventOnActivityBoundary",
"connects" : [ {
"from" : "Activity",
"to" : [ "IntermediateEventOnActivityBoundary" ]
} ]
} ],
"containmentRules" : [ {
"role" : "BPMNDiagram",
"contains" : [ "all" ]
}, {
"role" : "SubProcess",
"contains" : [ "sequence_start", "sequence_end", "from_task_event", "to_task_event", "EventSubProcess", "TextAnnotation", "DataStore" ]
}, {
"role" : "AdhocSubProcess",
"contains" : [ "sequence_start", "sequence_end", "from_task_event", "to_task_event", "TextAnnotation", "DataStore" ]
}, {
"role" : "EventSubProcess",
"contains" : [ "sequence_start", "sequence_end", "from_task_event", "to_task_event", "TextAnnotation", "DataStore" ]
}, {
"role" : "Pool",
"contains" : [ "Lane" ]
}, {
"role" : "Lane",
"contains" : [ "sequence_start", "sequence_end", "EventSubProcess", "TextAnnotation", "DataStore" ]
} ],
"morphingRules" : [ {
"role" : "ActivitiesMorph",
"baseMorphs" : [ "UserTask" ],
"preserveBounds" : true
}, {
"role" : "GatewaysMorph",
"baseMorphs" : [ "ExclusiveGateway" ]
}, {
"role" : "StartEventsMorph",
"baseMorphs" : [ "StartNoneEvent" ]
}, {
"role" : "EndEventsMorph",
"baseMorphs" : [ "StartNoneEvent" ]
}, {
"role" : "CatchEventsMorph",
"baseMorphs" : [ "CatchTimerEvent" ]
}, {
"role" : "ThrowEventsMorph",
"baseMorphs" : [ "ThrowNoneEvent" ]
}, {
"role" : "BoundaryEventsMorph",
"baseMorphs" : [ "ThrowNoneEvent" ]
}, {
"role" : "BoundaryCompensationEvent",
"baseMorphs" : [ "BoundaryCompensationEvent" ]
}, {
"role" : "TextAnnotation",
"baseMorphs" : [ "TextAnnotation" ]
}, {
"role" : "DataStore",
"baseMorphs" : [ "DataStore" ]
} ]
}
}
================================================
FILE: flowable-ui/src/main/resources/stencilset/en/stencilset_cmmn.json
================================================
{
"title" : "CMMN editor",
"namespace" : "http://b3mn.org/stencilset/cmmn1.1#",
"description" : "CMMN case editor",
"propertyPackages" : [ {
"name" : "case_idpackage",
"properties" : [ {
"id" : "case_id",
"type" : "String",
"title" : "Case identifier",
"value" : "caseModel",
"description" : "Unique identifier of the case definition.",
"popular" : true
} ]
}, {
"name" : "overrideidpackage",
"properties" : [ {
"id" : "overrideid",
"type" : "String",
"title" : "Id",
"value" : "",
"description" : "Unique identifier of the element.",
"popular" : true
} ]
}, {
"name" : "namepackage",
"properties" : [ {
"id" : "name",
"type" : "String",
"title" : "Name",
"value" : "",
"description" : "The descriptive name of the CMMN element.",
"popular" : true,
"refToView" : "text_name"
} ]
}, {
"name" : "documentationpackage",
"properties" : [ {
"id" : "documentation",
"type" : "Text",
"title" : "Documentation",
"value" : "",
"description" : "The descriptive name of the CMMN element.",
"popular" : true
} ]
}, {
"name" : "blockingpackage",
"properties" : [ {
"id" : "isblocking",
"type" : "Boolean",
"title" : "Blocking",
"value" : "true",
"description" : "Boolean property, default true. If false the task will automatically complete the task after executing any associated logic",
"popular" : true
},
{
"id" : "isblockingexpression",
"type" : "String",
"title" : "Blocking expression",
"value" : "",
"description" : "An expression to control at runtime whether this task is blocking or not. When set, the value of the blocking property is ignored.",
"popular" : true
} ]
}, {
"name" : "case_initiatorvariablenamepackage",
"properties" : [ {
"id" : "case_initiatorvariablename",
"type" : "String",
"title" : "Initiator variable name",
"value" : "",
"description" : "Sets the variable name to be used for the case initiator value.",
"popular" : true
} ]
}, {
"name" : "case_authorpackage",
"properties" : [ {
"id" : "case_author",
"type" : "String",
"title" : "Case author",
"value" : "",
"description" : "Author of the case definition.",
"popular" : true
} ]
}, {
"name" : "case_versionpackage",
"properties" : [ {
"id" : "case_version",
"type" : "String",
"title" : "Case version string (documentation only)",
"value" : "",
"description" : "Version identifier for documentation purpose.",
"popular" : true
} ]
}, {
"name" : "case_namespacepackage",
"properties" : [ {
"id" : "case_namespace",
"type" : "String",
"title" : "Target namespace",
"value" : "http://www.flowable.org/casedef",
"description" : "Target namespace for the case definition.",
"popular" : true
} ]
}, {
"name" : "usertaskassignmentpackage",
"properties" : [ {
"id" : "usertaskassignment",
"type" : "Complex",
"title" : "Assignments",
"value" : "",
"description" : "Assignment definition for the user task",
"popular" : true
} ]
}, {
"name" : "formpropertiespackage",
"properties" : [ {
"id" : "formproperties",
"type" : "Complex",
"title" : "Form properties",
"value" : "",
"description" : "Definition of the form with a list of form properties",
"popular" : true
} ]
}, {
"name" : "formkeydefinitionpackage",
"properties" : [ {
"id" : "formkeydefinition",
"type" : "String",
"title" : "Form key",
"value" : "",
"description" : "Form key that provides a reference to a form.",
"popular" : true
} ]
}, {
"name" : "duedatedefinitionpackage",
"properties" : [ {
"id" : "duedatedefinition",
"type" : "String",
"title" : "Due date",
"value" : "",
"description" : "Due date of the user task.",
"popular" : true
} ]
}, {
"name" : "prioritydefinitionpackage",
"properties" : [ {
"id" : "prioritydefinition",
"type" : "String",
"title" : "Priority",
"value" : "",
"description" : "Priority of the user task.",
"popular" : true
} ]
}, {
"name" : "servicetaskclasspackage",
"properties" : [ {
"id" : "servicetaskclass",
"type" : "String",
"title" : "Class",
"value" : "",
"description" : "Class that implements the service task logic.",
"popular" : true
} ]
}, {
"name" : "servicetaskexpressionpackage",
"properties" : [ {
"id" : "servicetaskexpression",
"type" : "Text",
"title" : "Expression",
"value" : "",
"description" : "Service task logic defined with an expression.",
"popular" : true
} ]
}, {
"name" : "servicetaskdelegateexpressionpackage",
"properties" : [ {
"id" : "servicetaskdelegateexpression",
"type" : "Text",
"title" : "Delegate expression",
"value" : "",
"description" : "Service task logic defined with a delegate expression.",
"popular" : true
} ]
}, {
"name" : "servicetaskfieldspackage",
"properties" : [ {
"id" : "servicetaskfields",
"type" : "Complex",
"title" : "Class fields",
"value" : "",
"description" : "Field extensions",
"popular" : true
} ]
}, {
"name" : "servicetaskresultvariablepackage",
"properties" : [ {
"id" : "servicetaskresultvariable",
"type" : "String",
"title" : "Result variable name",
"value" : "",
"description" : "Process variable name to store the service task result.",
"popular" : true
} ]
}, {
"name" : "scriptformatpackage",
"properties" : [ {
"id" : "scriptformat",
"type" : "String",
"title" : "Script format",
"value" : "",
"description" : "Script format of the script task.",
"popular" : true
} ]
}, {
"name" : "scripttextpackage",
"properties" : [ {
"id" : "scripttext",
"type" : "Text",
"title" : "Script",
"value" : "",
"description" : "Script text of the script task.",
"popular" : true
} ]
}, {
"name" : "asyncpackage",
"properties" : [ {
"id" : "isasync",
"type" : "Boolean",
"title" : "Asynchronous",
"value" : "",
"description" : "Indicates if the task needs to be executed asynchronously.",
"popular" : true
}, {
"id" : "isexclusive",
"type" : "Boolean",
"title" : "Exclusive",
"value" : "",
"description" : "Indicates if an asynchronous task must be executed exclusively",
"popular" : true
} ]
}, {
"name" : "mailtasktopackage",
"properties" : [ {
"id" : "mailtaskto",
"type" : "Text",
"title" : "To",
"value" : "",
"description" : "The recipients if the e-mail. Multiple recipients are defined in a comma-separated list.",
"popular" : true
} ]
}, {
"name" : "mailtaskfrompackage",
"properties" : [ {
"id" : "mailtaskfrom",
"type" : "Text",
"title" : "From",
"value" : "",
"description" : "The sender e-mail address. If not provided, the default configured from address is used.",
"popular" : true
} ]
}, {
"name" : "mailtasksubjectpackage",
"properties" : [ {
"id" : "mailtasksubject",
"type" : "Text",
"title" : "Subject",
"value" : "",
"description" : "The subject of the e-mail.",
"popular" : true
} ]
}, {
"name" : "mailtaskccpackage",
"properties" : [ {
"id" : "mailtaskcc",
"type" : "Text",
"title" : "Cc",
"value" : "",
"description" : "The cc's of the e-mail. Multiple recipients are defined in a comma-separated list",
"popular" : true
} ]
}, {
"name" : "mailtaskbccpackage",
"properties" : [ {
"id" : "mailtaskbcc",
"type" : "Text",
"title" : "Bcc",
"value" : "",
"description" : "The bcc's of the e-mail. Multiple recipients are defined in a comma-separated list",
"popular" : true
} ]
}, {
"name" : "mailtasktextpackage",
"properties" : [ {
"id" : "mailtasktext",
"type" : "Text",
"title" : "Text",
"value" : "",
"description" : "The content of the e-mail, in case one needs to send plain none-rich e-mails. Can be used in combination with html, for e-mail clients that don't support rich content. The client will then fall back to this text-only alternative.",
"popular" : true
} ]
}, {
"name" : "mailtaskhtmlpackage",
"properties" : [ {
"id" : "mailtaskhtml",
"type" : "Text",
"title" : "Html",
"value" : "",
"description" : "A piece of HTML that is the content of the e-mail.",
"popular" : true
} ]
}, {
"name" : "mailtaskcharsetpackage",
"properties" : [ {
"id" : "mailtaskcharset",
"type" : "String",
"title" : "Charset",
"value" : "",
"description" : "Allows to change the charset of the email, which is necessary for many non-English languages. ",
"popular" : true
} ]
}, {
"name" : "httptaskrequestmethodpackage",
"properties" : [ {
"id" : "httptaskrequestmethod",
"type" : "String",
"title" : "Request method",
"value" : "",
"description" : "Request method (For example - GET,POST,PUT etc).",
"popular" : true
} ]
}, {
"name" : "httptaskrequesturlpackage",
"properties" : [ {
"id" : "httptaskrequesturl",
"type" : "Text",
"title" : "Request URL",
"value" : "",
"description" : "Request URL (For example - http://flowable.org).",
"popular" : true
} ]
}, {
"name" : "httptaskrequestheaderspackage",
"properties" : [ {
"id" : "httptaskrequestheaders",
"type" : "Text",
"title" : "Request headers",
"value" : "",
"description" : "Line separated HTTP request headers (For example - Content-Type: application/json).",
"popular" : true
} ]
}, {
"name" : "httptaskrequestbodypackage",
"properties" : [ {
"id" : "httptaskrequestbody",
"type" : "Text",
"title" : "Request body",
"value" : "",
"description" : "Request body (For example- ${sampleBody}).",
"popular" : true
} ]
}, {
"name" : "httptaskrequesttimeoutpackage",
"properties" : [ {
"id" : "httptaskrequesttimeout",
"type" : "String",
"title" : "Request timeout",
"value" : "",
"description" : "Timeout in milliseconds for the request (For example - 5000).",
"popular" : true
} ]
}, {
"name" : "httptaskdisallowredirectspackage",
"properties" : [ {
"id" : "httptaskdisallowredirects",
"type" : "String",
"title" : "Disallow redirects",
"value" : "",
"description" : "Flag to disallow HTTP redirects.",
"popular" : true
} ]
}, {
"name" : "httptaskfailstatuscodespackage",
"properties" : [ {
"id" : "httptaskfailstatuscodes",
"type" : "String",
"title" : "Fail status codes",
"value" : "",
"description" : "Comma separated list of HTTP response status codes to retry, for example 400,5XX.",
"popular" : true
} ]
}, {
"name" : "httptaskhandlestatuscodespackage",
"properties" : [ {
"id" : "httptaskhandlestatuscodes",
"type" : "String",
"title" : "Handle status codes",
"value" : "",
"description" : "Comma separated list of HTTP response status codes to ignore, for example 404,3XX.",
"popular" : true
} ]
}, {
"name" : "httptaskignoreexceptionpackage",
"properties" : [ {
"id" : "httptaskignoreexception",
"type" : "String",
"title" : "Ignore exception",
"value" : "",
"description" : "Flag to ignore exceptions.",
"popular" : true
} ]
}, {
"name" : "httptaskresponsevariablenamepackage",
"properties" : [ {
"id" : "httptaskresponsevariablename",
"type" : "String",
"title" : "Response variable name",
"value" : "",
"description" : "Define the variable name to store the http response.",
"popular" : true
} ]
}, {
"name" : "httptasksaverequestvariablespackage",
"properties" : [ {
"id" : "httptasksaverequestvariables",
"type" : "String",
"title" : "Save request variables",
"value" : "",
"description" : "Flag to save request variables.",
"popular" : true
} ]
}, {
"name" : "httptasksaveresponseparameterspackage",
"properties" : [ {
"id" : "httptasksaveresponseparameters",
"type" : "String",
"title" : "Save response status, headers",
"value" : "",
"description" : "Flag to save response status, headers etc.",
"popular" : true
} ]
}, {
"name" : "httptaskresultvariableprefixpackage",
"properties" : [ {
"id" : "httptaskresultvariableprefix",
"type" : "String",
"title" : "Result variable prefix",
"value" : "",
"description" : "Prefix for the execution variable names.",
"popular" : true
} ]
}, {
"name" : "textpackage",
"properties" : [ {
"id" : "text",
"type" : "String",
"title" : "Text",
"value" : "",
"description" : "The text of the text annotation.",
"popular" : true,
"refToView" : "text"
} ]
}, {
"name" : "formreferencepackage",
"properties" : [ {
"id" : "formreference",
"type" : "Complex",
"title" : "Form reference",
"value" : "",
"description" : "Reference to a form",
"popular" : true
} ]
}, {
"name" : "decisiontaskdecisiontablereferencepackage",
"properties" : [ {
"id" : "decisiontaskdecisiontablereference",
"type" : "Complex",
"title" : "Decision table reference",
"value" : "",
"description" : "Set the decision table reference",
"popular" : true
} ]
}, {
"name" : "decisiontaskthrowerroronnohitspackage",
"properties" : [ {
"id" : "decisiontaskthrowerroronnohits",
"type" : "Boolean",
"title" : "Throw error if no rules were hit",
"value" : "false",
"description" : "Should an error be thrown if no rules of the decision table were hit and consequently no result was found.",
"popular" : true
} ]
}, {
"name": "httptaskrequestmethodpackage",
"properties": [
{
"id": "httptaskrequestmethod",
"type": "String",
"title": "Request method",
"value": "",
"description": "Request method (For example - GET,POST,PUT etc).",
"popular": true
}
]
},
{
"name": "httptaskrequesturlpackage",
"properties": [
{
"id": "httptaskrequesturl",
"type": "Text",
"title": "Request URL",
"value": "",
"description": "Request URL (For example - http://flowable.org).",
"popular": true
}
]
},
{
"name": "httptaskrequestheaderspackage",
"properties": [
{
"id": "httptaskrequestheaders",
"type": "Text",
"title": "Request headers",
"value": "",
"description": "Line separated HTTP request headers (For example - Content-Type: application/json).",
"popular": true
}
]
},
{
"name": "httptaskrequestbodypackage",
"properties": [
{
"id": "httptaskrequestbody",
"type": "Text",
"title": "Request body",
"value": "",
"description": "Request body (For example- ${sampleBody}).",
"popular": true
}
]
},
{
"name": "httptaskrequesttimeoutpackage",
"properties": [
{
"id": "httptaskrequesttimeout",
"type": "String",
"title": "Request timeout",
"value": "",
"description": "Timeout in milliseconds for the request (For example - 5000).",
"popular": true
}
]
},
{
"name": "httptaskdisallowredirectspackage",
"properties": [
{
"id": "httptaskdisallowredirects",
"type": "String",
"title": "Disallow redirects",
"value": "",
"description": "Flag to disallow HTTP redirects.",
"popular": true
}
]
},
{
"name": "httptaskfailstatuscodespackage",
"properties": [
{
"id": "httptaskfailstatuscodes",
"type": "String",
"title": "Fail status codes",
"value": "",
"description": "Comma separated list of HTTP response status codes to retry, for example 400,5XX.",
"popular": true
}
]
},
{
"name": "httptaskhandlestatuscodespackage",
"properties": [
{
"id": "httptaskhandlestatuscodes",
"type": "String",
"title": "Handle status codes",
"value": "",
"description": "Comma separated list of HTTP response status codes to ignore, for example 404,3XX.",
"popular": true
}
]
},
{
"name": "httptaskignoreexceptionpackage",
"properties": [
{
"id": "httptaskignoreexception",
"type": "String",
"title": "Ignore exception",
"value": "",
"description": "Flag to ignore exceptions.",
"popular": true
}
]
},
{
"name": "httptaskresponsevariablenamepackage",
"properties": [
{
"id": "httptaskresponsevariablename",
"type": "String",
"title": "Response variable name",
"value": "",
"description": "Define the variable name to store the http response.",
"popular": true
}
]
},
{
"name": "httptasksaverequestvariablespackage",
"properties": [
{
"id": "httptasksaverequestvariables",
"type": "String",
"title": "Save request variables",
"value": "",
"description": "Flag to save request variables.",
"popular": true
}
]
},
{
"name": "httptasksaveresponseparameterspackage",
"properties": [
{
"id": "httptasksaveresponseparameters",
"type": "String",
"title": "Save response status, headers",
"value": "",
"description": "Flag to save response status, headers etc.",
"popular": true
}
]
},
{
"name": "httptaskresultvariableprefixpackage",
"properties": [
{
"id": "httptaskresultvariableprefix",
"type": "String",
"title": "Result variable prefix",
"value": "",
"description": "Prefix for the execution variable names.",
"popular": true
}
]
},
{
"name" : "httptasksaveresponseparameterstransientpackage",
"properties" : [ {
"id" : "httptasksaveresponseparameterstransient",
"type" : "String",
"title" : "Save response as a transient variable",
"value" : "",
"description" : "Flag indicating to store the response variable(s) transient",
"popular" : true
} ]
},
{
"name" : "httptasksaveresponseasjsonpackage",
"properties" : [ {
"id" : "httptasksaveresponseasjson",
"type" : "String",
"title" : "Save response as JSON",
"value" : "",
"description" : "Flag indicating to store the response variable as a JSON variable instead of a String",
"popular" : true
} ]
},
{
"name" : "casetaskcasereferencepackage",
"properties" : [ {
"id" : "casetaskcasereference",
"type" : "Complex",
"title" : "Case reference",
"value" : "",
"description" : "Set the case reference",
"popular" : true
} ]
}, {
"name" : "processtaskprocessreferencepackage",
"properties" : [ {
"id" : "processtaskprocessreference",
"type" : "Complex",
"title" : "Process reference",
"value" : "",
"description" : "Set the process reference",
"popular" : true
} ]
}, {
"name" : "timerexpressionpackage",
"properties" : [ {
"id" : "timerexpression",
"type" : "String",
"title" : "Timer Expression",
"value" : "",
"description" : "An ISO-8601 string or an expression that resolves to either an ISO-8601 string or a java.util.Date",
"popular" : true
} ]
}, {
"name" : "timerstarttriggerpackage",
"properties" : [ {
"id" : "timerstarttriggersourceref",
"type" : "flowable-planitem-dropdown",
"title" : "Start trigger plan item",
"value" : "",
"description" : "A reference to the plan item for which the configured standard event needs to happen to start the timer (optional)",
"popular" : true
},
{
"id" : "transitionevent",
"type" : "flowable-transitionevent",
"title" : "Start trigger transition event",
"value" : "complete",
"description" : "The type of the transition event. Only used when the start trigger plan item is set",
"popular" : true
} ]
}, {
"name": "decisiontaskdecisionreferencepackage",
"properties": [
{
"id": "decisiontaskdecisionreference",
"type": "Complex",
"title": "Decision reference",
"value": "",
"description": "Set the decision reference",
"popular": true
}
]
}, {
"name" : "ifpartconditionpackage",
"properties" : [ {
"id" : "ifpartcondition",
"type" : "String",
"title" : "Condition",
"value" : "",
"description" : "An expression that must be true to satisfy the sentry",
"popular" : true
} ]
}, {
"name" : "autocompletepackage",
"properties" : [ {
"id" : "autocompleteenabled",
"type" : "Boolean",
"title" : "Auto complete",
"value" : "",
"description" : "Flag indicating that the stage will automatically complete, once all required children are in an end state and no other children are active.",
"popular" : true,
"refToView" : "autoComplete"
}, {
"id" : "autocompletecondition",
"type" : "String",
"title" : "Auto complete condition",
"value" : "",
"description" : "An expression that is resolved to if the stage can automatically complere.",
"popular" : true
}]
}, {
"name" : "requiredrulepackage",
"properties" : [ {
"id" : "requiredenabled",
"type" : "Boolean",
"title" : "Required",
"value" : "",
"description" : "Flag indicating if the stage, task or milestone is required when determining the parent stage completion. By default false.",
"popular" : true,
"refToView" : "required"
}, {
"id" : "requiredrulecondition",
"type" : "String",
"title" : "Required Rule",
"value" : "",
"description" : "An expression that is resolved to determine if the stage, task or milestone is required when determining the parent stage completion.",
"popular" : true
}]
}, {
"name" : "repetitionrulepackage",
"properties" : [ {
"id" : "repetitionenabled",
"type" : "Boolean",
"title" : "Repetition",
"value" : "",
"description" : "Flag indicating if repetition is enabled",
"popular" : true,
"refToView" : "repetition"
}, {
"id" : "repetitionrulecondition",
"type" : "String",
"title" : "Repetition Rule",
"value" : "",
"description" : "An expression that is resolved to determine if new instances of the planitem need to be created",
"popular" : true
},
{
"id" : "repetitioncountervariablename",
"type" : "String",
"title" : "Repetition counter variable",
"value" : "",
"description" : "The name of the local variable which stores the instance counter of the repetition. Default value is 'repetitionCounter'.",
"popular" : true
} ]
}, {
"name" : "manualactivationrulepackage",
"properties" : [ {
"id" : "manualactivationenabled",
"type" : "Boolean",
"title" : "Manual activation",
"value" : "",
"description" : "Flag indicating if the task or stage needs to be manually activated. False by default.",
"popular" : true,
"refToView" : "manualActivation"
}, {
"id" : "manualactivationrulecondition",
"type" : "String",
"title" : "Manual activation Rule",
"value" : "",
"description" : "An expression that is resolved to determine if the stage or task needs to be manually activated.",
"popular" : true
}]
}, {
"name" : "completionneutralrulepackage",
"properties" : [ {
"id" : "completionneutralenabled",
"type" : "Boolean",
"title" : "Completion neutral",
"value" : "",
"description" : "Flag indicating if the plan item is completion neutral. False by default.",
"popular" : true
}, {
"id" : "completionneutralrulecondition",
"type" : "String",
"title" : "Completion neutral Rule",
"value" : "",
"description" : "An expression that is resolved to determine if the plan item is completion neutral.",
"popular" : true
}]
}, {
"name": "scriptformatpackage",
"properties" : [ {
"id": "scriptformat",
"type": "String",
"title": "Script format",
"value": "",
"description": "Script format of the script task (JavaScript, groovy, etc).",
"popular": true
} ]
}, {
"name": "scripttextpackage",
"properties" : [ {
"id": "scripttext",
"type": "Text",
"title": "Script",
"value": "",
"description": "Script text of the script task.",
"popular": true
}
]
}, {
"name" : "transitioneventpackage",
"properties" : [ {
"id" : "transitionevent",
"type" : "flowable-transitionevent",
"title" : "Transition event type",
"value" : "complete",
"description" : "The type of the transition event",
"popular" : true
} ]
} ],
"stencils" : [ {
"type" : "node",
"id" : "CMMNDiagram",
"title" : "CMMN-Diagram",
"description" : "A CMMN 2.0 diagram.",
"view" : "\n",
"icon" : "diagram.png",
"groups" : [ "Diagram" ],
"mayBeRoot" : true,
"hide" : true,
"propertyPackages" : [ "case_idpackage", "namepackage", "documentationpackage", "case_initiatorvariablenamepackage", "case_authorpackage", "case_versionpackage", "case_namespacepackage"],
"hiddenPropertyPackages" : [ ],
"roles" : [ ]
}, {
"type" : "node",
"id" : "CasePlanModel",
"title" : "Case plan model",
"description" : "A case plan model",
"view" : " ",
"icon" : "containers/caseplanmodel.png",
"groups" : [ "Containers" ],
"hide" : true,
"propertyPackages" : [
"overrideidpackage",
"namepackage",
"documentationpackage",
"formkeydefinitionpackage",
"formreferencepackage",
"autocompletepackage"
],
"hiddenPropertyPackages" : [ ],
"roles" : [ "StageModelActivity" ]
}, {
"type" : "node",
"id" : "Stage",
"title" : "Stage",
"description" : "A stage",
"view" : " ",
"icon" : "containers/expanded.stage.png",
"groups" : [ "Containers" ],
"hide" : true,
"propertyPackages" : [
"overrideidpackage",
"namepackage",
"documentationpackage",
"autocompletepackage",
"requiredrulepackage",
"repetitionrulepackage",
"manualactivationrulepackage",
"completionneutralrulepackage"
],
"hiddenPropertyPackages" : [ ],
"roles" : [ "StageActivity", "all", "association_start", "association_end" ]
}, {
"type" : "node",
"id" : "Task",
"title" : "Task",
"description" : "A manual task",
"view" : "",
"icon" : "activity/task.png",
"groups" : [ "Activities" ],
"propertyPackages" : [
"overrideidpackage",
"namepackage",
"documentationpackage",
"blockingpackage",
"asyncpackage",
"requiredrulepackage",
"repetitionrulepackage",
"manualactivationrulepackage",
"completionneutralrulepackage"],
"hiddenPropertyPackages" : [ ],
"roles" : [ "Activity", "association_start", "association_end", "ActivitiesMorph", "all" ]
}, {
"type" : "node",
"id" : "HumanTask",
"title" : "Human task",
"description" : "A manual task assigned to a specific person",
"view" : "",
"icon" : "activity/humantask.png",
"groups" : [ "Activities" ],
"propertyPackages" : [
"overrideidpackage",
"namepackage",
"documentationpackage",
"blockingpackage",
"usertaskassignmentpackage",
"formkeydefinitionpackage",
"formreferencepackage",
"duedatedefinitionpackage",
"prioritydefinitionpackage",
"asyncpackage",
"requiredrulepackage",
"repetitionrulepackage",
"manualactivationrulepackage",
"completionneutralrulepackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "Activity", "association_start", "association_end", "ActivitiesMorph", "all" ]
}, {
"type" : "node",
"id" : "ServiceTask",
"title" : "Service task",
"description" : "An automatic task with service logic",
"view" : "\n",
"icon" : "activity/servicetask.png",
"groups" : [ "Activities" ],
"propertyPackages" : [
"overrideidpackage",
"namepackage",
"documentationpackage",
"servicetaskclasspackage",
"servicetaskexpressionpackage",
"servicetaskdelegateexpressionpackage",
"servicetaskfieldspackage",
"servicetaskresultvariablepackage",
"asyncpackage",
"requiredrulepackage",
"repetitionrulepackage",
"manualactivationrulepackage",
"completionneutralrulepackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "Activity", "association_start", "association_end", "ActivitiesMorph", "all" ]
},
{
"type": "node",
"id": "DecisionTask",
"title": "Decision task",
"description": "Task to invoke a DMN decision",
"view": "\n",
"icon": "activity/decisiontask.png",
"groups": [
"Activities"
],
"propertyPackages": [
"overrideidpackage",
"namepackage",
"documentationpackage",
"decisiontaskdecisiontablereferencepackage",
"decisiontaskthrowerroronnohitspackage",
"asyncpackage",
"requiredrulepackage",
"repetitionrulepackage",
"manualactivationrulepackage",
"completionneutralrulepackage"
],
"hiddenPropertyPackages": [],
"roles": [
"Activity",
"association_start",
"association_end",
"ActivitiesMorph",
"all"
]
}, {
"type": "node",
"id": "HttpTask",
"title": "Http task",
"description": "A HTTP task",
"view": "\n",
"icon": "activity/httptask.png",
"groups": [
"Activities"
],
"propertyPackages": [
"overrideidpackage",
"namepackage",
"documentationpackage",
"servicetaskclasspackage",
"asyncpackage",
"requiredrulepackage",
"repetitionrulepackage",
"manualactivationrulepackage",
"completionneutralrulepackage",
"httptaskrequestmethodpackage",
"httptaskrequesturlpackage",
"httptaskrequestheaderspackage",
"httptaskrequestbodypackage",
"httptaskrequesttimeoutpackage",
"httptaskdisallowredirectspackage",
"httptaskfailstatuscodespackage",
"httptaskhandlestatuscodespackage",
"httptaskignoreexceptionpackage",
"httptaskresponsevariablenamepackage",
"httptasksaverequestvariablespackage",
"httptasksaveresponseparameterspackage",
"httptaskresultvariableprefixpackage",
"httptasksaveresponseparameterstransientpackage",
"httptasksaveresponseasjsonpackage"
],
"hiddenPropertyPackages": [],
"roles": [
"Activity",
"sequence_start",
"sequence_end",
"ActivitiesMorph",
"all"
]
}, {
"type" : "node",
"id" : "ScriptTask",
"title" : "Script task",
"description" : "An automatic task with script logic",
"view" : "\n",
"icon" : "activity/scripttask.png",
"groups" : [ "Activities" ],
"propertyPackages" : [
"overrideidpackage",
"namepackage",
"documentationpackage",
"servicetaskclasspackage",
"asyncpackage",
"requiredrulepackage",
"repetitionrulepackage",
"manualactivationrulepackage",
"completionneutralrulepackage",
"scriptformatpackage",
"scripttextpackage",
"servicetaskresultvariablepackage"
],
"hiddenPropertyPackages" : [ ],
"roles" : [ "Activity", "association_start", "association_end", "ActivitiesMorph", "all" ]
}, {
"type" : "node",
"id" : "Milestone",
"title" : "Milestone",
"description" : "A milestone",
"view" : " ",
"icon" : "activity/milestone.png",
"groups" : [ "Activities" ],
"propertyPackages" : [
"overrideidpackage",
"namepackage",
"documentationpackage",
"requiredrulepackage",
"repetitionrulepackage",
"completionneutralrulepackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "Activity", "association_start", "association_end", "ActivitiesMorph", "all" ]
}, {
"type" : "node",
"id" : "CaseTask",
"title" : "Case task",
"description" : "A reference to a case definition to start a new instance",
"view" : " ",
"icon" : "activity/casetask.png",
"groups" : [ "Activities" ],
"propertyPackages" : [
"overrideidpackage",
"namepackage",
"documentationpackage",
"blockingpackage",
"casetaskcasereferencepackage",
"asyncpackage",
"requiredrulepackage",
"repetitionrulepackage",
"manualactivationrulepackage",
"completionneutralrulepackage"],
"hiddenPropertyPackages" : [ ],
"roles" : [ "Activity", "association_start", "association_end", "ActivitiesMorph", "all" ]
}, {
"type" : "node",
"id" : "ProcessTask",
"title" : "Process task",
"description" : "A reference to a process definition to start a new instance",
"view" : " ",
"icon" : "activity/processtask.png",
"groups" : [ "Activities" ],
"propertyPackages" : [
"overrideidpackage",
"namepackage",
"documentationpackage",
"blockingpackage",
"processtaskprocessreferencepackage",
"asyncpackage",
"requiredrulepackage",
"repetitionrulepackage",
"manualactivationrulepackage",
"completionneutralrulepackage"],
"hiddenPropertyPackages" : [ ],
"roles" : [ "Activity", "association_start", "association_end", "ActivitiesMorph", "all" ]
}, {
"type" : "node",
"id" : "TimerEventListener",
"title" : "Timer event listener",
"description" : "An eventlistener with a timer trigger",
"view" : "\n",
"icon" : "activity/timereventlistener.png",
"groups" : [ "Event Listeners" ],
"propertyPackages" : [
"overrideidpackage",
"namepackage",
"documentationpackage",
"timerexpressionpackage",
"timerstarttriggerpackage",
"completionneutralrulepackage"],
"hiddenPropertyPackages" : [ ],
"roles" : [ "Activity", "association_start", "association_end", "ActivitiesMorph", "all" ]
}, {
"type" : "node",
"id" : "UserEventListener",
"title" : "User event listener",
"description" : "An listener for user events",
"view" : "",
"icon" : "event/userlistener.png",
"groups" : [ "Event Listeners" ],
"propertyPackages" : [
"overrideidpackage",
"namepackage",
"documentationpackage",
"completionneutralrulepackage"],
"hiddenPropertyPackages" : [ ],
"roles" : [ "Activity", "association_start", "association_end", "ActivitiesMorph", "all" ]
}, {
"type" : "node",
"id" : "EntryCriterion",
"title" : "Entry criterion",
"description" : "A sentry that defines an entry criterion",
"view" : "",
"icon" : "sentry/entry.png",
"groups" : [ "Sentries" ],
"propertyPackages" : [
"overrideidpackage",
"namepackage",
"documentationpackage",
"ifpartconditionpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "association_start", "association_end", "SentriesMorph", "EntryCriterionOnItemBoundary" ]
}, {
"type" : "node",
"id" : "ExitCriterion",
"title" : "Exit criterion",
"description" : "A sentry that defines an exit criterion",
"view" : "",
"icon" : "sentry/exit.png",
"groups" : [ "Sentries" ],
"propertyPackages" : [
"overrideidpackage",
"namepackage",
"documentationpackage",
"ifpartconditionpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "association_start", "SentriesMorph", "ExitCriterionOnItemBoundary" ]
}, {
"type" : "edge",
"id" : "Association",
"title" : "Association",
"description" : "Associates a sentry with a plan item.",
"view" : "\r\n",
"icon" : "connection/connector.png",
"groups" : [ "Connectors" ],
"layout" : [ {
"type" : "layout.bpmn2_0.sequenceflow"
} ],
"propertyPackages" : [
"overrideidpackage",
"namepackage",
"documentationpackage",
"transitioneventpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "ConnectingObjectsMorph", "all" ]
}],
"rules" : {
"cardinalityRules" : [ {
"role" : "Startevents_all",
"incomingEdges" : [ {
"role" : "Association",
"maximum" : 0
} ]
}, {
"role" : "Endevents_all",
"outgoingEdges" : [ {
"role" : "Association",
"maximum" : 0
} ]
}],
"connectionRules" : [ {
"role" : "Association",
"connects" : [ {
"from" : "association_start",
"to" : [ "association_end" ]
}]
}, {
"role" : "EntryCriterionOnItemBoundary",
"connects" : [ {
"from" : "Activity",
"to" : [ "EntryCriterionOnItemBoundary"]
}, {
"from" : "StageActivity",
"to" : [ "EntryCriterionOnItemBoundary"]
}]
}, {
"role" : "ExitCriterionOnItemBoundary",
"connects" : [ {
"from" : "Activity",
"to" : [ "ExitCriterionOnItemBoundary" ]
}, {
"from" : "StageActivity",
"to" : [ "ExitCriterionOnItemBoundary"]
}, {
"from" : "StageModelActivity",
"to" : [ "ExitCriterionOnItemBoundary"]
}
]}
],
"containmentRules" : [ {
"role" : "CaseDiagram",
"contains" : [ "CasePlanModel", "ExitCriterion" ]
}, {
"role" : "CasePlanModel",
"contains" : [ "all" ]
}, {
"role" : "Stage",
"contains" : [ "all" ]
}],
"morphingRules" : [ {
"role" : "ActivitiesMorph",
"baseMorphs" : [ "CaseTask" ],
"preserveBounds" : true
}, {
"role" : "SentriesMorph",
"baseMorphs" : [ "EntryCriterion" ],
"preserveBounds" : true
}]
}
}
================================================
FILE: flowable-ui/src/main/resources/stencilset/zh/stencilset_bpmn.json
================================================
{
"title" : "流程编辑器",
"namespace" : "http://b3mn.org/stencilset/bpmn2.0#",
"description" : "BPMN 流程编辑器",
"propertyPackages" : [ {
"name" : "process_idpackage",
"properties" : [ {
"id" : "process_id",
"type" : "String",
"title" : "流程标识(ID)",
"value" : "process",
"description" : "流程定义唯一标识ID.",
"popular" : true
} ]
}, {
"name" : "overrideidpackage",
"properties" : [ {
"id" : "overrideid",
"type" : "String",
"title" : "主键(ID)",
"value" : "",
"description" : "Unique identifier of the element.",
"popular" : true
} ]
}, {
"name" : "namepackage",
"properties" : [ {
"id" : "name",
"type" : "String",
"title" : "名称",
"value" : "",
"description" : "BPMN元素名称.",
"popular" : true,
"refToView" : "text_name"
} ]
}, {
"name" : "documentationpackage",
"properties" : [ {
"id" : "documentation",
"type" : "Text",
"title" : "描述信息",
"value" : "",
"description" : "BPMN元素描述.",
"popular" : true
} ]
}, {
"name" : "process_authorpackage",
"properties" : [ {
"id" : "process_author",
"type" : "String",
"title" : "流程作者",
"value" : "",
"description" : "流程定义的作者.",
"popular" : true
} ]
}, {
"name" : "process_versionpackage",
"properties" : [ {
"id" : "process_version",
"type" : "String",
"title" : "流程版本",
"value" : "",
"description" : "标识文档版本为目的.",
"popular" : true
} ]
}, {
"name" : "process_historylevelpackage",
"properties" : [ {
"id" : "process_historylevel",
"type" : "flowable-processhistorylevel",
"title" : "Set a specific history level for this process definition",
"value" : "",
"description" : "Set a specific history level for this process definition",
"popular" : true
} ]
}, {
"name" : "isexecutablepackage",
"properties" : [ {
"id" : "isexecutable",
"type" : "Boolean",
"title" : "Is executable",
"value" : "true",
"description" : "Is the process executable?",
"popular" : true
} ]
}, {
"name" : "process_potentialstarteruserpackage",
"properties" : [ {
"id" : "process_potentialstarteruser",
"type" : "String",
"title" : "流程启动人",
"value" : "",
"description" : "哪一个用户,可以启动流程?",
"popular" : true
} ]
}, {
"name" : "process_potentialstartergrouppackage",
"properties" : [ {
"id" : "process_potentialstartergroup",
"type" : "String",
"title" : "流程启动组",
"value" : "",
"description" : "那一个组,可以启动流程?",
"popular" : true
} ]
}, {
"name" : "process_namespacepackage",
"properties" : [ {
"id" : "process_namespace",
"type" : "String",
"title" : "命名空间",
"value" : "http://www.flowable.org/processdef",
"description" : "流程定义命名空间.",
"popular" : true
} ]
}, {
"name" : "process_iseagerexecutionfetchpackage",
"properties" : [ {
"id" : "iseagerexecutionfetch",
"type" : "Boolean",
"title" : "Eager execution fetching",
"value" : "false",
"description" : "Enable eager execution fetching for this process definition?",
"popular" : true
} ]
}, {
"name" : "asynchronousdefinitionpackage",
"properties" : [ {
"id" : "asynchronousdefinition",
"type" : "Boolean",
"title" : "异步",
"value" : "false",
"description" : "定义为一个异步活动.",
"popular" : true
} ]
}, {
"name" : "datapropertiespackage",
"properties" : [ {
"id" : "dataproperties",
"type" : "Complex",
"title" : "Data Objects",
"value" : "",
"description" : "Definition of the data object properties",
"popular" : true
} ]
}, {
"name" : "exclusivedefinitionpackage",
"properties" : [ {
"id" : "exclusivedefinition",
"type" : "Boolean",
"title" : "独占任务",
"value" : "false",
"description" : "定义为一个独占任务.",
"popular" : true
} ]
}, {
"name" : "executionlistenerspackage",
"properties" : [ {
"id" : "executionlisteners",
"type" : "multiplecomplex",
"title" : "执行监听器",
"value" : "",
"description" : "监听activity, process, sequence flow 启动和结束事件.",
"popular" : true
} ]
}, {
"name" : "tasklistenerspackage",
"properties" : [ {
"id" : "tasklisteners",
"type" : "multiplecomplex",
"title" : "任务监听器",
"value" : "",
"description" : "任务监听器",
"popular" : true
} ]
}, {
"name" : "eventlistenerspackage",
"properties" : [ {
"id" : "eventlisteners",
"type" : "multiplecomplex",
"title" : "事件监听器",
"value" : "",
"description" : "Listeners for any event happening in the Flowable Engine. It's also possible to rethrow the event as a signal, message or error event",
"popular" : true
} ]
}, {
"name" : "usertaskassignmentpackage",
"properties" : [ {
"id" : "usertaskassignment",
"type" : "Complex",
"title" : "分配用户",
"value" : "",
"description" : "分配任务给用户",
"popular" : true
} ]
}, {
"name" : "formpropertiespackage",
"properties" : [ {
"id" : "formproperties",
"type" : "Complex",
"title" : "表单属性",
"value" : "",
"description" : "定义表单属性",
"popular" : true
} ]
}, {
"name" : "formkeydefinitionpackage",
"properties" : [ {
"id" : "formkeydefinition",
"type" : "String",
"title" : "表单key",
"value" : "",
"description" : "表单key,提供一个表单的引用.",
"popular" : true
} ]
}, {
"name" : "duedatedefinitionpackage",
"properties" : [ {
"id" : "duedatedefinition",
"type" : "String",
"title" : "到期时间",
"value" : "",
"description" : "任务到期时间.",
"popular" : true
} ]
}, {
"name" : "prioritydefinitionpackage",
"properties" : [ {
"id" : "prioritydefinition",
"type" : "String",
"title" : "优先级",
"value" : "",
"description" : "用户任务的优先级.",
"popular" : true
} ]
}, {
"name" : "duedatedefinitionpackage",
"properties" : [ {
"id" : "duedatedefinition",
"type" : "String",
"title" : "到期时间",
"value" : "",
"description" : "到期时间.",
"popular" : true
} ]
}, {
"name" : "servicetaskclasspackage",
"properties" : [ {
"id" : "servicetaskclass",
"type" : "String",
"title" : "类",
"value" : "",
"description" : "实现 service task logic 的类.",
"popular" : true
} ]
}, {
"name" : "servicetaskexpressionpackage",
"properties" : [ {
"id" : "servicetaskexpression",
"type" : "Text",
"title" : "表达式",
"value" : "",
"description" : "表达式定义的Service task logic.",
"popular" : true
} ]
}, {
"name" : "servicetaskdelegateexpressionpackage",
"properties" : [ {
"id" : "servicetaskdelegateexpression",
"type" : "Text",
"title" : "委托表达式",
"value" : "",
"description" : "委托表达式定义的Service task logic..",
"popular" : true
} ]
}, {
"name" : "servicetaskfieldspackage",
"properties" : [ {
"id" : "servicetaskfields",
"type" : "Complex",
"title" : "类字段",
"value" : "",
"description" : "类字段",
"popular" : true
} ]
}, {
"name" : "servicetaskresultvariablepackage",
"properties" : [ {
"id" : "servicetaskresultvariable",
"type" : "String",
"title" : "结果变量名",
"value" : "",
"description" : "Process variable name to store the service task result.",
"popular" : true
} ]
}, {
"name" : "servicetaskresultvariablepackage",
"properties" : [ {
"id" : "servicetaskUseLocalScopeForResultVariable",
"type" : "Boolean",
"title" : "Use local scope for result variable",
"value" : "false",
"description" : "Flag that marks that the used resultVariable needs to be saved as a local variable",
"popular" : true
} ]
}, {
"name" : "servicetasktriggerablepackage",
"properties" : [ {
"id" : "servicetasktriggerable",
"type" : "Boolean",
"title" : "Set service task to be triggerable",
"value" : "false",
"description" : "Sets the service task to be triggerable",
"popular" : true
} ]
}, {
"name": "scriptformatpackage",
"properties" : [ {
"id": "scriptformat",
"type": "String",
"title" : "脚本格式",
"value": "",
"description": "Script format of the script task.",
"popular": true
} ]
}, {
"name": "scripttextpackage",
"properties" : [ {
"id": "scripttext",
"type": "Text",
"title" : "脚本",
"value": "",
"description": "Script text of the script task.",
"popular": true
}
]
}, {
"name" : "shellcommandpackage",
"properties" : [ {
"id" : "shellcommand",
"type" : "String",
"title" : "命令、指令",
"value" : "",
"description" : "任务的shell指令",
"popular" : true
} ]
}, {
"name" : "shellarg1package",
"properties" : [ {
"id" : "shellarg1",
"type" : "Text",
"title" : "参数1",
"value" : "",
"description" : "shell指令的 参数1",
"popular" : true
} ]
}, {
"name" : "shellarg2package",
"properties" : [ {
"id" : "shellarg2",
"type" : "Text",
"title" : "参数2",
"value" : "",
"description" : "shell指令的 参数2",
"popular" : true
} ]
}, {
"name" : "shellarg3package",
"properties" : [ {
"id" : "shellarg3",
"type" : "Text",
"title" : "参数3",
"value" : "",
"description" : "shell指令的 参数3",
"popular" : true
} ]
}, {
"name" : "shellarg4package",
"properties" : [ {
"id" : "shellarg4",
"type" : "Text",
"title" : "参数4",
"value" : "",
"description" : "shell指令的 参数4",
"popular" : true
} ]
}, {
"name" : "shellarg5package",
"properties" : [ {
"id" : "shellarg5",
"type" : "Text",
"title" : "参数5",
"value" : "",
"description" : "shell指令的 参数5",
"popular" : true
} ]
}, {
"name" : "shellwaitpackage",
"properties" : [ {
"id" : "shellwait",
"type" : "Text",
"title" : "等待(Flag)",
"value" : "",
"description" : "等待shell指令执行结束的Flag标记.(Flag to wait for shell command execution end)",
"popular" : true
} ]
}, {
"name" : "shelloutputvariablepackage",
"properties" : [ {
"id" : "shelloutputvariable",
"type" : "Text",
"title" : "输出变量",
"value" : "",
"description" : "存储shell指令输出的变量",
"popular" : true
} ]
}, {
"name" : "shellerrorcodevariablepackage",
"properties" : [ {
"id" : "shellerrorcodevariable",
"type" : "Text",
"title" : "错误码变量",
"value" : "",
"description" : "存储shell指令错误码的变量",
"popular" : true
} ]
}, {
"name" : "shellredirecterrorpackage",
"properties" : [ {
"id" : "shellredirecterror",
"type" : "Text",
"title" : "重定向错误",
"value" : "",
"description" : "(Redirect error)If true merge error output with standard output",
"popular" : true
} ]
}, {
"name" : "shellcleanenvpackage",
"properties" : [ {
"id" : "shellcleanenv",
"type" : "Text",
"title" : "清理环境",
"value" : "",
"description" : "清理shell执行环境.Clean shell execution environment",
"popular" : true
} ]
}, {
"name" : "shelldirectorypackage",
"properties" : [ {
"id" : "shelldirectory",
"type" : "Text",
"title" : "目录",
"value" : "",
"description" : "shell进程工作目录.Shell process working directory",
"popular" : true
} ]
}, {
"name" : "ruletask_rulespackage",
"properties" : [ {
"id" : "ruletask_rules",
"type" : "String",
"title" : "规则",
"value" : "",
"description" : "Rules of the rule task.",
"popular" : true
} ]
}, {
"name" : "ruletask_variables_inputpackage",
"properties" : [ {
"id" : "ruletask_variables_input",
"type" : "String",
"title" : "输入变量",
"value" : "",
"description" : "Input variables of the rule task.",
"popular" : true
} ]
}, {
"name" : "ruletask_excludepackage",
"properties" : [ {
"id" : "ruletask_exclude",
"type" : "Boolean",
"title" : "排除",
"value" : "false",
"description" : "Use the rules property as exclusion.",
"popular" : true
} ]
}, {
"name" : "ruletask_resultpackage",
"properties" : [ {
"id" : "ruletask_result",
"type" : "String",
"title" : "结果变量",
"value" : "",
"description" : "Result variable of the rule task.",
"popular" : true
} ]
}, {
"name" : "mailtasktopackage",
"properties" : [ {
"id" : "mailtaskto",
"type" : "Text",
"title" : "至",
"value" : "",
"description" : "The recipients if the e-mail. Multiple recipients are defined in a comma-separated list.",
"popular" : true
} ]
}, {
"name" : "mailtaskfrompackage",
"properties" : [ {
"id" : "mailtaskfrom",
"type" : "Text",
"title" : "From",
"value" : "",
"description" : "Email的发件地址.没有提供的话就是用默认配置.",
"popular" : true
} ]
}, {
"name" : "mailtasksubjectpackage",
"properties" : [ {
"id" : "mailtasksubject",
"type" : "Text",
"title" : "主题",
"value" : "",
"description" : "e-mail主题.",
"popular" : true
} ]
}, {
"name" : "mailtaskccpackage",
"properties" : [ {
"id" : "mailtaskcc",
"type" : "Text",
"title" : "抄送",
"value" : "",
"description" : "The cc's of the e-mail. Multiple recipients are defined in a comma-separated list",
"popular" : true
} ]
}, {
"name" : "mailtaskbccpackage",
"properties" : [ {
"id" : "mailtaskbcc",
"type" : "Text",
"title" : "隐藏抄送",
"value" : "",
"description" : "The bcc's of the e-mail. Multiple recipients are defined in a comma-separated list",
"popular" : true
} ]
}, {
"name" : "mailtasktextpackage",
"properties" : [ {
"id" : "mailtasktext",
"type" : "Text",
"title" : "文本",
"value" : "",
"description" : "The content of the e-mail, in case one needs to send plain none-rich e-mails. Can be used in combination with html, for e-mail clients that don't support rich content. The client will then fall back to this text-only alternative.",
"popular" : true
} ]
}, {
"name" : "mailtaskhtmlpackage",
"properties" : [ {
"id" : "mailtaskhtml",
"type" : "Text",
"title" : "Html",
"value" : "",
"description" : "A piece of HTML that is the content of the e-mail.",
"popular" : true
} ]
}, {
"name" : "mailtaskcharsetpackage",
"properties" : [ {
"id" : "mailtaskcharset",
"type" : "String",
"title" : "字符集(编码格式)",
"value" : "",
"description" : "允许修改邮件字符集,是许多除英语之外的语言所必须的. ",
"popular" : true
} ]
}, {
"name" : "httptaskrequestmethodpackage",
"properties" : [ {
"id" : "httptaskrequestmethod",
"type" : "flowable-http-request-method",
"title" : "请求方法",
"value" : "",
"description" : "Request method (For example - GET,POST,PUT etc).",
"popular" : true
} ]
}, {
"name" : "httptaskrequesturlpackage",
"properties" : [ {
"id" : "httptaskrequesturl",
"type" : "Text",
"title" : "请求 URL",
"value" : "",
"description" : "Request URL (For example - http://flowable.org).",
"popular" : true
} ]
}, {
"name" : "httptaskrequestheaderspackage",
"properties" : [ {
"id" : "httptaskrequestheaders",
"type" : "Text",
"title" : "请求头",
"value" : "",
"description" : "Line separated HTTP request headers (For example - Content-Type: application/json).",
"popular" : true
} ]
}, {
"name" : "httptaskrequestbodypackage",
"properties" : [ {
"id" : "httptaskrequestbody",
"type" : "Text",
"title" : "请求体",
"value" : "",
"description" : "Request body (For example- ${sampleBody}).",
"popular" : true
} ]
}, {
"name" : "httptaskrequesttimeoutpackage",
"properties" : [ {
"id" : "httptaskrequesttimeout",
"type" : "String",
"title" : "请求超时时间",
"value" : "",
"description" : "Timeout in milliseconds for the request (For example - 5000).",
"popular" : true
} ]
}, {
"name" : "httptaskdisallowredirectspackage",
"properties" : [ {
"id" : "httptaskdisallowredirects",
"type" : "String",
"title" : "不允许重定向",
"value" : "",
"description" : "Flag to disallow HTTP redirects.",
"popular" : true
} ]
}, {
"name" : "httptaskfailstatuscodespackage",
"properties" : [ {
"id" : "httptaskfailstatuscodes",
"type" : "String",
"title" : "失败的状态码",
"value" : "",
"description" : "Comma separated list of HTTP response status codes to retry, for example 400,5XX.",
"popular" : true
} ]
}, {
"name" : "httptaskhandlestatuscodespackage",
"properties" : [ {
"id" : "httptaskhandlestatuscodes",
"type" : "String",
"title" : "处理状态码",
"value" : "",
"description" : "Comma separated list of HTTP response status codes to ignore, for example 404,3XX.",
"popular" : true
} ]
}, {
"name" : "httptaskignoreexceptionpackage",
"properties" : [ {
"id" : "httptaskignoreexception",
"type" : "String",
"title" : "忽略异常",
"value" : "",
"description" : "Flag to ignore exceptions.",
"popular" : true
} ]
},
{
"name" : "httptasksaveresponseparameterstransientpackage",
"properties" : [ {
"id" : "httptasksaveresponseparameterstransient",
"type" : "String",
"title" : "以 transient variable 的形式保存返回变量、数据",
"value" : "",
"description" : "Flag indicating to store the response variable(s) transient",
"popular" : true
} ]
},
{
"name" : "httptasksaveresponseasjsonpackage",
"properties" : [ {
"id" : "httptasksaveresponseasjson",
"type" : "String",
"title" : "以JSON格式保存返回变量、数据",
"value" : "",
"description" : "Flag indicating to store the response variable as a JSON variable instead of a String",
"popular" : true
} ]
},
{
"name": "skipexpressionpackage",
"properties": [
{
"id": "skipexpression",
"type": "String",
"title": "Skip expression",
"value": "",
"description": "Skip an expression execution associated with task or association or not.",
"popular": true
}
]
},
{
"name" : "httptaskresponsevariablenamepackage",
"properties" : [ {
"id" : "httptaskresponsevariablename",
"type" : "String",
"title" : "响应变量名",
"value" : "",
"description" : "Define the variable name to store the http response.",
"popular" : true
} ]
}, {
"name" : "httptasksaverequestvariablespackage",
"properties" : [ {
"id" : "httptasksaverequestvariables",
"type" : "String",
"title" : "保存请求变量",
"value" : "",
"description" : "Flag to save request variables.",
"popular" : true
} ]
}, {
"name" : "httptasksaveresponseparameterspackage",
"properties" : [ {
"id" : "httptasksaveresponseparameters",
"type" : "String",
"title" : "保存响应状态,头",
"value" : "",
"description" : "Flag to save response status, headers etc.",
"popular" : true
} ]
}, {
"name" : "httptaskresultvariableprefixpackage",
"properties" : [ {
"id" : "httptaskresultvariableprefix",
"type" : "String",
"title" : "结果变量的前缀",
"value" : "",
"description" : "Prefix for the execution variable names.",
"popular" : true
} ]
}, {
"name" : "callactivitycalledelementpackage",
"properties" : [ {
"id" : "callactivitycalledelement",
"type" : "String",
"title" : "调用元素",
"value" : "",
"description" : "Process reference.",
"popular" : true
} ]
}, {
"name" : "callactivityinparameterspackage",
"properties" : [ {
"id" : "callactivityinparameters",
"type" : "Complex",
"title" : "输入参数",
"value" : "",
"description" : "Definition of the input parameters",
"popular" : true
} ]
}, {
"name" : "callactivityoutparameterspackage",
"properties" : [ {
"id" : "callactivityoutparameters",
"type" : "Complex",
"title" : "输出参数",
"value" : "",
"description" : "Definition of the output parameters",
"popular" : true
} ]
}, {
"name" : "callactivityinheritvariablespackage",
"properties" : [ {
"id" : "callactivityinheritvariables",
"type" : "Boolean",
"title" : "Inherit variables in sub process",
"value" : "false",
"description" : "Inherit parent process variables in the sub process.",
"popular" : true
} ]
}, {
"name" : "callactivitysamedeploymentpackage",
"properties" : [ {
"id" : "callactivitysamedeployment",
"type" : "Boolean",
"title" : "Start the referenced process from the same deployment.",
"value" : "false",
"description" : "Use the referenced process from the same deployment.",
"popular" : true
} ]
}, {
"name" : "callactivityprocessinstancenamepackage",
"properties" : [ {
"id" : "callactivityprocessinstancename",
"type" : "String",
"title" : "Process instance name",
"value" : "",
"description" : "An expression that resolves to the name of the child process instance",
"popular" : true
} ]
}, {
"name" : "callactivityinheritbusinesskeypackage",
"properties" : [ {
"id" : "callactivityinheritbusinesskey",
"type" : "Boolean",
"title" : "Inherit business key",
"value" : "false",
"description" : "Inherit the business key from the parent process.",
"popular" : true
} ]
}, {
"name" : "callactivityuselocalscopeforoutparameterspackage",
"properties" : [ {
"id" : "callactivityuselocalscopeforoutparameters",
"type" : "Boolean",
"title" : "Use local scope for out parameters",
"value" : "false",
"description" : "Use local variable scope for out parameters.",
"popular" : true
} ]
}, {
"name" : "callactivitybusinesskeypackage",
"properties" : [ {
"id" : "callactivitybusinesskey",
"type" : "String",
"title" : "Business key expression",
"value" : "",
"description" : "An expression that resolves to a business key for the child process instance",
"popular" : true
} ]
}, {
"name" : "cameltaskcamelcontextpackage",
"properties" : [ {
"id" : "cameltaskcamelcontext",
"type" : "String",
"title" : "Camel context",
"value" : "",
"description" : "An optional camel context definition, if left empty the default is used.",
"popular" : true
} ]
}, {
"name" : "muletaskendpointurlpackage",
"properties" : [ {
"id" : "muletaskendpointurl",
"type" : "String",
"title" : "Endpoint url",
"value" : "",
"description" : "A required endpoint url to sent the message to Mule.",
"popular" : true
} ]
}, {
"name" : "muletasklanguagepackage",
"properties" : [ {
"id" : "muletasklanguage",
"type" : "String",
"title" : "语言",
"value" : "",
"description" : "A required definition for the language to resolve the payload expression, like juel.",
"popular" : true
} ]
}, {
"name" : "muletaskpayloadexpressionpackage",
"properties" : [ {
"id" : "muletaskpayloadexpression",
"type" : "Text",
"title" : "Payload expression",
"value" : "",
"description" : "A required definition for the payload of the message sent to Mule.",
"popular" : true
} ]
}, {
"name" : "muletaskresultvariablepackage",
"properties" : [ {
"id" : "muletaskresultvariable",
"type" : "String",
"title" : "Result variable",
"value" : "",
"description" : "An optional result variable for the payload returned.",
"popular" : true
} ]
}, {
"name" : "conditionsequenceflowpackage",
"properties" : [ {
"id" : "conditionsequenceflow",
"type" : "Complex",
"title" : "流条件",
"value" : "",
"description" : "The condition of the sequence flow",
"popular" : true
} ]
}, {
"name" : "defaultflowpackage",
"properties" : [ {
"id" : "defaultflow",
"type" : "Boolean",
"title" : "默认流",
"value" : "false",
"description" : "Define the sequence flow as default",
"popular" : true,
"refToView" : "default"
} ]
}, {
"name" : "conditionalflowpackage",
"properties" : [ {
"id" : "conditionalflow",
"type" : "Boolean",
"title" : "条件流",
"value" : "false",
"description" : "Define the sequence flow with a condition",
"popular" : true
} ]
}, {
"name" : "timercycledefinitionpackage",
"properties" : [ {
"id" : "timercycledefinition",
"type" : "String",
"title" : "时间周期(e.g. R3/PT10H)",
"value" : "",
"description" : "Define the timer with a ISO-8601 cycle.",
"popular" : true
} ]
}, {
"name" : "timerdatedefinitionpackage",
"properties" : [ {
"id" : "timerdatedefinition",
"type" : "String",
"title" : "采用ISO-8601日期时间",
"value" : "",
"description" : "Define the timer with a ISO-8601 date definition.",
"popular" : true
} ]
}, {
"name" : "timerdurationdefinitionpackage",
"properties" : [ {
"id" : "timerdurationdefinition",
"type" : "String",
"title" : "持续时间(e.g. PT5M)",
"value" : "",
"description" : "Define the timer with a ISO-8601 duration.",
"popular" : true
} ]
}, {
"name" : "timerenddatedefinitionpackage",
"properties" : [ {
"id" : "timerenddatedefinition",
"type" : "String",
"title" : "Time End Date in ISO-8601",
"value" : "",
"description" : "Define the timer with a ISO-8601 duration.",
"popular" : true
} ]
}, {
"name" : "messagerefpackage",
"properties" : [ {
"id" : "messageref",
"type" : "String",
"title" : "消息引用",
"value" : "",
"description" : "Define the message name.",
"popular" : true
} ]
}, {
"name" : "signalrefpackage",
"properties" : [ {
"id" : "signalref",
"type" : "String",
"title" : "信号引用",
"value" : "",
"description" : "定义信号名称.",
"popular" : true
} ]
}, {
"name" : "errorrefpackage",
"properties" : [ {
"id" : "errorref",
"type" : "String",
"title" : "错误引用",
"value" : "",
"description" : "定义错误名称.",
"popular" : true
} ]
}, {
"name" : "cancelactivitypackage",
"properties" : [ {
"id" : "cancelactivity",
"type" : "Boolean",
"title" : "取消任务",
"value" : "true",
"description" : "Should the activity be cancelled",
"popular" : true,
"refToView" : [ "frame", "frame2" ]
} ]
}, {
"name" : "initiatorpackage",
"properties" : [ {
"id" : "initiator",
"type" : "String",
"title" : "流程发起者",
"value" : "",
"description" : "该流程的发起者.",
"popular" : true
} ]
}, {
"name" : "textpackage",
"properties" : [ {
"id" : "text",
"type" : "String",
"title" : "文本",
"value" : "",
"description" : "The text of the text annotation.",
"popular" : true,
"refToView" : "text"
} ]
}, {
"name" : "multiinstance_typepackage",
"properties" : [ {
"id" : "multiinstance_type",
"type" : "flowable-multiinstance",
"title" : "多实例类型",
"value" : "None",
"description" : "Repeated activity execution (parallel or sequential) can be displayed through different loop types",
"popular" : true,
"refToView" : "multiinstance"
} ]
}, {
"name" : "multiinstance_cardinalitypackage",
"properties" : [ {
"id" : "multiinstance_cardinality",
"type" : "String",
"title" : "基数(多实例)",
"value" : "",
"description" : "Define the cardinality of multi instance.",
"popular" : true
} ]
}, {
"name" : "multiinstance_collectionpackage",
"properties" : [ {
"id" : "multiinstance_collection",
"type" : "String",
"title" : "集合(多实例)",
"value" : "",
"description" : "Define the collection for the multi instance.",
"popular" : true
} ]
}, {
"name" : "multiinstance_variablepackage",
"properties" : [ {
"id" : "multiinstance_variable",
"type" : "String",
"title" : "元素变量(多实例)",
"value" : "",
"description" : "Define the element variable for the multi instance.",
"popular" : true
} ]
}, {
"name" : "multiinstance_conditionpackage",
"properties" : [ {
"id" : "multiinstance_condition",
"type" : "String",
"title" : "完成条件(多实例)",
"value" : "",
"description" : "Define the completion condition for the multi instance.",
"popular" : true
} ]
}, {
"name" : "isforcompensationpackage",
"properties" : [ {
"id" : "isforcompensation",
"type" : "Boolean",
"title" : "是否补偿",
"value" : "false",
"description" : "A flag that identifies whether this activity is intended for the purposes of compensation.",
"popular" : true,
"refToView" : "compensation"
} ]
}, {
"name" : "sequencefloworderpackage",
"properties" : [ {
"id" : "sequencefloworder",
"type" : "Complex",
"title" : "流顺序",
"value" : "",
"description" : "Order outgoing sequence flows.",
"popular" : true
} ]
}, {
"name" : "signaldefinitionspackage",
"properties" : [ {
"id" : "signaldefinitions",
"type" : "multiplecomplex",
"title" : "信号定义",
"value" : "",
"description" : "Signal definitions",
"popular" : true
} ]
}, {
"name" : "messagedefinitionspackage",
"properties" : [ {
"id" : "messagedefinitions",
"type" : "multiplecomplex",
"title" : "消息定义",
"value" : "",
"description" : "Message definitions",
"popular" : true
} ]
}, {
"name" : "istransactionpackage",
"properties" : [ {
"id" : "istransaction",
"type" : "Boolean",
"title" : "Is a transaction sub process",
"value" : "false",
"description" : "A flag that identifies whether this sub process is of type transaction.",
"popular" : true,
"refToView" : "border"
} ]
}, {
"name" : "formreferencepackage",
"properties" : [ {
"id" : "formreference",
"type" : "Complex",
"title" : "表单引用",
"value" : "",
"description" : "Reference to a form",
"popular" : true
} ]
}, {
"name" : "terminateAllpackage",
"properties" : [ {
"id" : "terminateAll",
"type" : "Boolean",
"title" : "Terminate all",
"value" : "false",
"description" : "Enable to terminate the process instance",
"popular" : true
} ]
}, {
"name" : "decisiontaskdecisiontablereferencepackage",
"properties" : [ {
"id" : "decisiontaskdecisiontablereference",
"type" : "Complex",
"title" : "Decision table reference",
"value" : "",
"description" : "Set the decision table reference",
"popular" : true
} ]
}, {
"name" : "decisiontaskthrowerroronnohitspackage",
"properties" : [ {
"id" : "decisiontaskthrowerroronnohits",
"type" : "Boolean",
"title" : "Throw error if no rules were hit",
"value" : "false",
"description" : "Should an error be thrown if no rules of the decision table were hit and consequently no result was found.",
"popular" : true
} ]
}, {
"name" : "interruptingpackage",
"properties" : [ {
"id" : "interrupting",
"type" : "Boolean",
"title" : "Interrupting",
"value" : "true",
"description" : "Should all parent executions be terminated?",
"popular" : true,
"refToView" : [ "frame" ]
} ]
}, {
"name" : "completionconditionpackage",
"properties" : [ {
"id" : "completioncondition",
"type" : "String",
"title" : "Completion condition",
"value" : "",
"description" : "The completion condition for the adhoc sub process",
"popular" : true
} ]
}, {
"name" : "orderingpackage",
"properties" : [ {
"id" : "ordering",
"type" : "flowable-ordering",
"title" : "Ordering",
"value" : "Parallel",
"description" : "The ordering for the adhoc sub process",
"popular" : true
} ]
}, {
"name" : "cancelremaininginstancespackage",
"properties" : [ {
"id" : "cancelremaininginstances",
"type" : "Boolean",
"title" : "Cancel remaining instances",
"value" : "true",
"description" : "Cancel the remaining instances for the adhoc sub process?",
"popular" : true
} ]
} ],
"stencils" : [ {
"type" : "node",
"id" : "BPMNDiagram",
"title" : "BPMN-Diagram",
"description" : "A BPMN 2.0 diagram.",
"view" : "\n",
"icon" : "diagram.png",
"groups" : [ "Diagram" ],
"mayBeRoot" : true,
"hide" : true,
"propertyPackages" : [ "process_idpackage", "namepackage", "documentationpackage", "process_authorpackage", "process_versionpackage", "process_namespacepackage", "process_historylevelpackage", "isexecutablepackage", "datapropertiespackage", "executionlistenerspackage", "eventlistenerspackage", "signaldefinitionspackage", "messagedefinitionspackage", "process_potentialstarteruserpackage","process_potentialstartergrouppackage", "process_iseagerexecutionfetchpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ ]
}, {
"type" : "node",
"id" : "StartNoneEvent",
"title" : "开始节点",
"description" : "A start event without a specific trigger",
"view" : "\n",
"icon" : "startevent/none.png",
"groups" : [ "开始事件" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "executionlistenerspackage", "initiatorpackage", "formkeydefinitionpackage", "formreferencepackage", "formpropertiespackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "sequence_start", "Startevents_all", "StartEventsMorph", "all" ]
}, {
"type" : "node",
"id" : "StartTimerEvent",
"title" : "定时启动节点",
"description" : "A start event with a timer trigger",
"view" : "\n",
"icon" : "startevent/timer.png",
"groups" : [ "开始事件" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "executionlistenerspackage", "timercycledefinitionpackage", "timerdatedefinitionpackage", "timerdurationdefinitionpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "sequence_start", "Startevents_all", "StartEventsMorph", "all" ]
}, {
"type" : "node",
"id" : "StartSignalEvent",
"title" : "信号启动节点",
"description" : "A start event with a signal trigger",
"view" : "\n",
"icon" : "startevent/signal.png",
"groups" : [ "开始事件" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "executionlistenerspackage", "signalrefpackage", "interruptingpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "sequence_start", "Startevents_all", "StartEventsMorph", "all" ]
}, {
"type" : "node",
"id" : "StartMessageEvent",
"title" : "消息启动节点",
"description" : "A start event with a message trigger",
"view" : "\n",
"icon" : "startevent/message.png",
"groups" : [ "开始事件" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "executionlistenerspackage", "messagerefpackage", "interruptingpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "sequence_start", "Startevents_all", "StartEventsMorph", "all" ]
}, {
"type" : "node",
"id" : "StartErrorEvent",
"title" : "错误启动节点",
"description" : "A start event that catches a thrown BPMN error",
"view" : "\n",
"icon" : "startevent/error.png",
"groups" : [ "开始事件" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "executionlistenerspackage", "errorrefpackage", "interruptingpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "sequence_start", "Startevents_all", "StartEventsMorph", "all" ]
}, {
"type" : "node",
"id" : "UserTask",
"title" : "用户任务",
"description" : "A manual task assigned to a specific person",
"view" : "\n",
"icon" : "activity/list/type.user.png",
"groups" : [ "活动" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "executionlistenerspackage", "multiinstance_typepackage", "multiinstance_cardinalitypackage", "multiinstance_collectionpackage", "multiinstance_variablepackage", "multiinstance_conditionpackage", "isforcompensationpackage", "usertaskassignmentpackage", "formkeydefinitionpackage", "formreferencepackage", "duedatedefinitionpackage", "prioritydefinitionpackage", "formpropertiespackage", "tasklistenerspackage", "skipexpressionpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "Activity", "sequence_start", "sequence_end", "ActivitiesMorph", "all" ]
}, {
"type" : "node",
"id" : "ServiceTask",
"title" : "服务任务",
"description" : "An automatic task with service logic",
"view" : "\n",
"icon" : "activity/list/type.service.png",
"groups" : [ "活动" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "servicetasktriggerablepackage", "executionlistenerspackage", "multiinstance_typepackage", "multiinstance_cardinalitypackage", "multiinstance_collectionpackage", "multiinstance_variablepackage", "multiinstance_conditionpackage", "isforcompensationpackage", "servicetaskclasspackage", "servicetaskexpressionpackage", "servicetaskdelegateexpressionpackage", "servicetaskfieldspackage", "servicetaskresultvariablepackage", "skipexpressionpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "Activity", "sequence_start", "sequence_end", "ActivitiesMorph", "all" ]
}, {
"type" : "node",
"id" : "ScriptTask",
"title" : "脚本任务",
"description" : "An automatic task with script logic",
"view" : "\n",
"icon" : "activity/list/type.script.png",
"groups" : [ "活动" ],
"propertyPackages" : [ "scriptformatpackage", "scripttextpackage", "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "executionlistenerspackage", "multiinstance_typepackage", "multiinstance_cardinalitypackage", "multiinstance_collectionpackage", "multiinstance_variablepackage", "multiinstance_conditionpackage", "isforcompensationpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "Activity", "sequence_start", "sequence_end", "ActivitiesMorph", "all" ]
}, {
"type" : "node",
"id" : "BusinessRule",
"title" : "规则任务",
"description" : "An automatic task with rule logic",
"view" : "\n",
"icon" : "activity/list/type.business.rule.png",
"groups" : [ "活动" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "executionlistenerspackage", "multiinstance_typepackage", "multiinstance_cardinalitypackage", "multiinstance_collectionpackage", "multiinstance_variablepackage", "multiinstance_conditionpackage", "isforcompensationpackage", "ruletask_rulespackage", "ruletask_variables_inputpackage", "ruletask_excludepackage", "ruletask_resultpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "Activity", "sequence_start", "sequence_end", "ActivitiesMorph", "all" ]
}, {
"type" : "node",
"id" : "ReceiveTask",
"title" : "接受任务",
"description" : "An task that waits for a signal",
"view" : "\n",
"icon" : "activity/list/type.receive.png",
"groups" : [ "活动" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "executionlistenerspackage", "multiinstance_typepackage", "multiinstance_cardinalitypackage", "multiinstance_collectionpackage", "multiinstance_variablepackage", "multiinstance_conditionpackage", "isforcompensationpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "Activity", "sequence_start", "sequence_end", "ActivitiesMorph", "all" ]
}, {
"type" : "node",
"id" : "ManualTask",
"title" : "手动任务",
"description" : "An automatic task with no logic",
"view" : "\n",
"icon" : "activity/list/type.manual.png",
"groups" : [ "活动" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "executionlistenerspackage", "multiinstance_typepackage", "multiinstance_cardinalitypackage", "multiinstance_collectionpackage", "multiinstance_variablepackage", "multiinstance_conditionpackage", "isforcompensationpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "Activity", "sequence_start", "sequence_end", "ActivitiesMorph", "all" ]
}, {
"type" : "node",
"id" : "MailTask",
"title" : "邮件任务",
"description" : "An mail task",
"view" : "\n",
"icon" : "activity/list/type.send.png",
"groups" : [ "活动" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "executionlistenerspackage", "multiinstance_typepackage", "multiinstance_cardinalitypackage", "multiinstance_collectionpackage", "multiinstance_variablepackage", "multiinstance_conditionpackage", "isforcompensationpackage", "mailtasktopackage", "mailtaskfrompackage", "mailtasksubjectpackage", "mailtaskccpackage", "mailtaskbccpackage", "mailtasktextpackage", "mailtaskhtmlpackage", "mailtaskcharsetpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "Activity", "sequence_start", "sequence_end", "ActivitiesMorph", "all" ]
}, {
"type" : "node",
"id" : "CamelTask",
"title" : "Camel task",
"description" : "An task that sends a message to Camel",
"view" : "\n",
"icon" : "activity/list/type.camel.png",
"groups" : [ "活动" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "executionlistenerspackage", "multiinstance_typepackage", "multiinstance_cardinalitypackage", "multiinstance_collectionpackage", "multiinstance_variablepackage", "multiinstance_conditionpackage", "isforcompensationpackage", "cameltaskcamelcontextpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "Activity", "sequence_start", "sequence_end", "ActivitiesMorph", "all" ]
}, {
"type" : "node",
"id" : "HttpTask",
"title" : "调用任务",
"description" : "A HTTP task",
"view" : "\n",
"icon" : "activity/list/type.http.png",
"groups" : [ "活动" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "executionlistenerspackage", "multiinstance_typepackage", "multiinstance_cardinalitypackage", "multiinstance_collectionpackage", "multiinstance_variablepackage", "multiinstance_conditionpackage", "isforcompensationpackage", "httptaskrequestmethodpackage", "httptaskrequesturlpackage", "httptaskrequestheaderspackage", "httptaskrequestbodypackage", "httptaskrequesttimeoutpackage", "httptaskdisallowredirectspackage", "httptaskfailstatuscodespackage", "httptaskhandlestatuscodespackage", "httptaskignoreexceptionpackage", "httptaskresponsevariablenamepackage", "httptasksaverequestvariablespackage", "httptasksaveresponseparameterspackage", "httptaskresultvariableprefixpackage", "httptasksaveresponseparameterstransientpackage", "httptasksaveresponseasjsonpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "Activity", "sequence_start", "sequence_end", "ActivitiesMorph", "all" ]
}, {
"type" : "node",
"id" : "MuleTask",
"title" : "任务(Mule task)",
"description" : "An task that sends a message to Mule",
"view" : "\n",
"icon" : "activity/list/type.mule.png",
"groups" : [ "活动" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "executionlistenerspackage", "multiinstance_typepackage", "multiinstance_cardinalitypackage", "multiinstance_collectionpackage", "multiinstance_variablepackage", "multiinstance_conditionpackage", "isforcompensationpackage", "muletaskendpointurlpackage", "muletasklanguagepackage", "muletaskpayloadexpressionpackage", "muletaskresultvariablepackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "Activity", "sequence_start", "sequence_end", "ActivitiesMorph", "all" ]
}, {
"type" : "node",
"id" : "SendTask",
"title" : "发送任务",
"description" : "An task that sends a message",
"view" : "\n",
"icon" : "activity/list/type.send.png",
"groups" : [ "活动" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "executionlistenerspackage", "multiinstance_typepackage", "multiinstance_cardinalitypackage", "multiinstance_collectionpackage", "multiinstance_variablepackage", "multiinstance_conditionpackage", "isforcompensationpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "Activity", "sequence_start", "sequence_end", "ActivitiesMorph", "all" ]
}, {
"type" : "node",
"id" : "DecisionTask",
"title" : "决策任务",
"description" : "Task to use the Flowable DMN rule engine",
"view" : "\n",
"icon" : "activity/list/type.decision.png",
"groups" : [ "活动" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "executionlistenerspackage", "multiinstance_typepackage", "multiinstance_cardinalitypackage", "multiinstance_collectionpackage", "multiinstance_variablepackage", "multiinstance_conditionpackage", "isforcompensationpackage", "decisiontaskdecisiontablereferencepackage", "decisiontaskthrowerroronnohitspackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "Activity", "sequence_start", "sequence_end", "ActivitiesMorph", "all" ]
},
{
"type": "node",
"id": "ShellTask",
"title": "Shell 任务",
"description": "An automatic task with shell batch logic",
"view": "\n",
"icon": "activity/list/type.shell.png",
"groups": [
"活动"
],
"propertyPackages": [
"overrideidpackage",
"namepackage",
"documentationpackage",
"asynchronousdefinitionpackage",
"shellcommandpackage",
"shellarg1package",
"shellarg2package",
"shellarg3package",
"shellarg4package",
"shellarg5package",
"shellwaitpackage",
"shelloutputvariablepackage",
"shellerrorcodevariablepackage",
"shellredirecterrorpackage",
"shellcleanenvpackage",
"shelldirectorypackage",
"exclusivedefinitionpackage",
"executionlistenerspackage",
"multiinstance_typepackage",
"multiinstance_cardinalitypackage",
"multiinstance_collectionpackage",
"multiinstance_variablepackage",
"multiinstance_conditionpackage",
"isforcompensationpackage"
],
"hiddenPropertyPackages": [],
"roles": [
"Activity",
"sequence_start",
"sequence_end",
"ActivitiesMorph",
"all"
]
},{
"type" : "node",
"id" : "SubProcess",
"title" : "子流程",
"description" : "A sub process scope",
"view" : "\n",
"icon" : "activity/expanded.subprocess.png",
"groups" : [ "结构" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "datapropertiespackage", "executionlistenerspackage", "multiinstance_typepackage", "multiinstance_cardinalitypackage", "multiinstance_collectionpackage", "multiinstance_variablepackage", "multiinstance_conditionpackage", "istransactionpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "Activity", "sequence_start", "sequence_end", "all" ]
},{
"type" : "node",
"id" : "CollapsedSubProcess",
"title" : "可折叠子流程",
"description" : "A sub process scope",
"view" : "\n",
"icon" : "activity/subprocess.png",
"groups" : [ "结构" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "datapropertiespackage", "executionlistenerspackage", "multiinstance_typepackage", "multiinstance_cardinalitypackage", "multiinstance_collectionpackage", "multiinstance_variablepackage", "multiinstance_conditionpackage", "istransactionpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "Activity", "sequence_start", "sequence_end", "all" ]
},{
"type" : "node",
"id" : "EventSubProcess",
"title" : "事件子流程",
"description" : "A event sub process scope",
"view" : "\n",
"icon" : "activity/event.subprocess.png",
"groups" : [ "结构" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "executionlistenerspackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "Activity", "all", "EventSubProcess" ]
}, {
"type" : "node",
"id" : "CallActivity",
"title" : "引用流程",
"description" : "A call activity",
"view" : "\n",
"icon" : "activity/task.png",
"groups" : [ "结构" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "executionlistenerspackage", "callactivitycalledelementpackage", "callactivityinparameterspackage", "callactivityoutparameterspackage", "callactivityinheritvariablespackage", "callactivitysamedeploymentpackage", "callactivityprocessinstancenamepackage", "callactivityinheritbusinesskeypackage", "callactivitybusinesskeypackage", "callactivityuselocalscopeforoutparameterspackage", "multiinstance_typepackage", "multiinstance_cardinalitypackage", "multiinstance_collectionpackage", "multiinstance_variablepackage", "multiinstance_conditionpackage", "isforcompensationpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "Activity", "sequence_start", "sequence_end", "all" ]
}, {
"type" : "node",
"id" : "ExclusiveGateway",
"title" : "排它网关",
"description" : "A choice gateway",
"view" : "\n\n",
"icon" : "gateway/exclusive.databased.png",
"groups" : [ "网关" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "sequencefloworderpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "sequence_start", "GatewaysMorph", "sequence_end", "all" ]
}, {
"type" : "node",
"id" : "ParallelGateway",
"title" : "并行网关",
"description" : "A parallel gateway",
"view" : "\n\n",
"icon" : "gateway/parallel.png",
"groups" : [ "网关" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "sequencefloworderpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "sequence_start", "GatewaysMorph", "sequence_end", "all" ]
}, {
"type" : "node",
"id" : "InclusiveGateway",
"title" : "包含网关",
"description" : "An inclusive gateway",
"view" : "\n\n",
"icon" : "gateway/inclusive.png",
"groups" : [ "网关" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "sequencefloworderpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "sequence_start", "GatewaysMorph", "sequence_end", "all" ]
}, {
"type" : "node",
"id" : "EventGateway",
"title" : "事件网关",
"description" : "An event gateway",
"view" : "\n\n",
"icon" : "gateway/eventbased.png",
"groups" : [ "网关" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "sequencefloworderpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "sequence_start", "GatewaysMorph", "sequence_end", "all" ]
}, {
"type" : "node",
"id" : "BoundaryErrorEvent",
"title" : "错误边界事件",
"description" : "A boundary event that catches a BPMN error",
"view" : "\n",
"icon" : "catching/error.png",
"groups" : [ "边界事件" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "errorrefpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "sequence_start", "BoundaryEventsMorph", "IntermediateEventOnActivityBoundary" ]
}, {
"type" : "node",
"id" : "BoundaryTimerEvent",
"title" : "定时边界事件",
"description" : "A boundary event with a timer trigger",
"view" : "\n",
"icon" : "catching/timer.png",
"groups" : [ "边界事件" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "timercycledefinitionpackage", "timerdatedefinitionpackage", "timerdurationdefinitionpackage", "timerenddatedefinitionpackage", "cancelactivitypackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "sequence_start", "BoundaryEventsMorph", "IntermediateEventOnActivityBoundary" ]
}, {
"type" : "node",
"id" : "BoundarySignalEvent",
"title" : "信号边界事件",
"description" : "A boundary event with a signal trigger",
"view" : "\n",
"icon" : "catching/signal.png",
"groups" : [ "边界事件" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "signalrefpackage", "cancelactivitypackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "sequence_start", "BoundaryEventsMorph", "IntermediateEventOnActivityBoundary" ]
}, {
"type" : "node",
"id" : "BoundaryMessageEvent",
"title" : "消息边界事件",
"description" : "A boundary event with a message trigger",
"view" : "\n",
"icon" : "catching/message.png",
"groups" : [ "边界事件" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "messagerefpackage", "cancelactivitypackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "sequence_start", "BoundaryEventsMorph", "IntermediateEventOnActivityBoundary" ]
}, {
"type" : "node",
"id" : "BoundaryCancelEvent",
"title" : "取消边界事件",
"description" : "A boundary cancel event",
"view" : "\n",
"icon" : "catching/cancel.png",
"groups" : [ "边界事件" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "sequence_start", "BoundaryEventsMorph", "IntermediateEventOnActivityBoundary" ]
}, {
"type" : "node",
"id" : "BoundaryCompensationEvent",
"title" : "补偿边界事件",
"description" : "A boundary compensation event",
"view" : "\n",
"icon" : "catching/compensation.png",
"groups" : [ "边界事件" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "BoundaryEventsMorph", "IntermediateEventOnActivityBoundary", "all" ]
}, {
"type" : "node",
"id" : "CatchTimerEvent",
"title" : "定时器中间事件",
"description" : "具有计时器触发器的中间捕获事件",
"view" : "\n",
"icon" : "catching/timer.png",
"groups" : [ "中间捕捉事件" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "executionlistenerspackage", "timercycledefinitionpackage", "timerdatedefinitionpackage", "timerdurationdefinitionpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "sequence_start", "sequence_end", "CatchEventsMorph", "all" ]
}, {
"type" : "node",
"id" : "CatchSignalEvent",
"title" : "信号事件定义",
"description" : "带信号触发的中间捕捉事件",
"view" : "\n",
"icon" : "catching/signal.png",
"groups" : [ "中间捕捉事件" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "executionlistenerspackage", "signalrefpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "sequence_start", "sequence_end", "CatchEventsMorph", "all" ]
}, {
"type" : "node",
"id" : "CatchMessageEvent",
"title" : "中间消息捕获事件",
"description" : "带有消息触发器的中间捕获事件",
"view" : "\n",
"icon" : "catching/message.png",
"groups" : [ "中间捕捉事件" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "executionlistenerspackage", "messagerefpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "sequence_start", "sequence_end", "CatchEventsMorph", "all" ]
}, {
"type" : "node",
"id" : "ThrowNoneEvent",
"title" : "中间无抛出事件",
"description" : "没有特定触发器的中间事件",
"view" : "\n",
"icon" : "throwing/none.png",
"groups" : [ "中间事件" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "executionlistenerspackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "ThrowEventsMorph", "sequence_start", "sequence_end", "all" ]
}, {
"type" : "node",
"id" : "ThrowSignalEvent",
"title" : "中间信号抛出事件",
"description" : "带信号触发器的中间事件",
"view" : "\n",
"icon" : "throwing/signal.png",
"groups" : [ "中间事件" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "executionlistenerspackage", "signalrefpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "ThrowEventsMorph", "sequence_start", "sequence_end", "all" ]
}, {
"type" : "node",
"id" : "EndNoneEvent",
"title" : "结束事件",
"description" : "没有特定触发器的结束事件",
"view" : "\n",
"icon" : "endevent/none.png",
"groups" : [ "结束事件" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "executionlistenerspackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "EndEventsMorph", "sequence_end", "all" ]
}, {
"type" : "node",
"id" : "EndErrorEvent",
"title" : "结束错误事件",
"description" : "抛出错误事件的结束事件",
"view" : "\n",
"icon" : "endevent/error.png",
"groups" : [ "结束事件" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "executionlistenerspackage", "errorrefpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "EndEventsMorph", "sequence_end", "all" ]
}, {
"type" : "node",
"id" : "EndCancelEvent",
"title" : "结束取消事件",
"description" : "结束取消事件",
"view" : "\n",
"icon" : "endevent/cancel.png",
"groups" : [ "结束事件" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "executionlistenerspackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "EndEventsMorph", "sequence_end", "all" ]
}, {
"type" : "node",
"id" : "EndTerminateEvent",
"title" : "结束终止事件",
"description" : "结束终止事件",
"view" : "\n",
"icon" : "endevent/terminate.png",
"groups" : [ "结束事件" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "executionlistenerspackage", "terminateAllpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "EndEventsMorph", "sequence_end", "all" ]
}, {
"type" : "node",
"id" : "Pool",
"title" : "池",
"description" : "用于构造流程定义的池",
"view" : "\n",
"icon" : "swimlane/pool.png",
"groups" : [ "泳道" ],
"layout" : [ {
"type" : "layout.bpmn2_0.pool"
} ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "process_idpackage", "isexecutablepackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "canContainArtifacts", "all" ]
}, {
"type" : "node",
"id" : "Lane",
"title" : "道",
"description" : "构成流程定义的通道",
"view" : "\n",
"icon" : "swimlane/lane.png",
"groups" : [ "泳道" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "PoolChild", "canContainArtifacts", "all" ]
}, {
"type" : "edge",
"id" : "SequenceFlow",
"title" : "连线",
"description" : "序列流定义了活动的执行顺序.",
"view" : "\r\n",
"icon" : "connector/sequenceflow.png",
"groups" : [ "链接对象" ],
"layout" : [ {
"type" : "layout.bpmn2_0.sequenceflow"
} ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "conditionsequenceflowpackage", "executionlistenerspackage", "defaultflowpackage", "skipexpressionpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "ConnectingObjectsMorph", "all" ]
}, {
"type" : "edge",
"id" : "MessageFlow",
"title" : "消息连线",
"description" : "用于连接不同池中的元素的消息流.",
"view" : "\r\n",
"icon" : "connector/messageflow.png",
"groups" : [ "链接对象" ],
"layout" : [ {
"type" : "layout.bpmn2_0.sequenceflow"
} ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "ConnectingObjectsMorph", "all" ]
}, {
"type" : "edge",
"id" : "Association",
"title" : "文本关联(Association)",
"description" : "将文本注释与元素关联.",
"view" : "\r\n",
"icon" : "connector/association.undirected.png",
"groups" : [ "链接对象" ],
"layout" : [ {
"type" : "layout.bpmn2_0.sequenceflow"
} ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "ConnectingObjectsMorph", "all" ]
}, {
"type" : "edge",
"id" : "DataAssociation",
"title" : "数据关联(DataAssociation)",
"description" : "将数据元素与活动相关联.",
"view" : "\r\n",
"icon" : "connector/association.unidirectional.png",
"groups" : [ "链接对象" ],
"layout" : [ {
"type" : "layout.bpmn2_0.sequenceflow"
} ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "ConnectingObjectsMorph", "all" ]
}, {
"type" : "node",
"id" : "TextAnnotation",
"title" : "文本注释",
"description" : "使用描述文本注释元素(文本注释).",
"view" : "\n",
"icon" : "artifact/text.annotation.png",
"groups" : [ "Artifacts" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "textpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "all" ]
}, {
"type" : "node",
"id" : "DataStore",
"title" : "数据存储",
"description" : "数据存储引用.",
"view" : "\r\n\r\n",
"icon" : "dataobject/data.store.png",
"groups" : [ "Artifacts" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "all" ]
}, {
"type" : "node",
"id" : "AdhocSubProcess",
"title" : "adhoc子流程",
"description" : "adhoc子流程",
"view" : "\n",
"icon" : "activity/adhoc.subprocess.png",
"groups" : [ "结构" ],
"propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "completionconditionpackage", "orderingpackage", "cancelremaininginstancespackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "Activity", "sequence_start", "sequence_end", "all" ]
} ],
"rules" : {
"cardinalityRules" : [ {
"role" : "Startevents_all",
"incomingEdges" : [ {
"role" : "SequenceFlow",
"maximum" : 0
} ]
}, {
"role" : "Endevents_all",
"outgoingEdges" : [ {
"role" : "SequenceFlow",
"maximum" : 0
} ]
} ],
"connectionRules" : [ {
"role" : "SequenceFlow",
"connects" : [ {
"from" : "sequence_start",
"to" : [ "sequence_end" ]
} ]
}, {
"role" : "Association",
"connects" : [ {
"from" : "sequence_start",
"to" : [ "TextAnnotation" ]
}, {
"from" : "sequence_end",
"to" : [ "TextAnnotation" ]
}, {
"from" : "TextAnnotation",
"to" : [ "sequence_end" ]
}, {
"from" : "BoundaryCompensationEvent",
"to" : [ "sequence_end" ]
}, {
"from" : "TextAnnotation",
"to" : [ "sequence_start" ]
}, {
"from" : "BoundaryCompensationEvent",
"to" : [ "sequence_start" ]
} ]
}, {
"role" : "DataAssociation",
"connects" : [ {
"from" : "sequence_start",
"to" : [ "DataStore" ]
}, {
"from" : "sequence_end",
"to" : [ "DataStore" ]
}, {
"from" : "DataStore",
"to" : [ "sequence_end" ]
}, {
"from" : "DataStore",
"to" : [ "sequence_start" ]
} ]
}, {
"role" : "IntermediateEventOnActivityBoundary",
"connects" : [ {
"from" : "Activity",
"to" : [ "IntermediateEventOnActivityBoundary" ]
} ]
} ],
"containmentRules" : [ {
"role" : "BPMNDiagram",
"contains" : [ "all" ]
}, {
"role" : "SubProcess",
"contains" : [ "sequence_start", "sequence_end", "from_task_event", "to_task_event", "EventSubProcess", "TextAnnotation", "DataStore" ]
}, {
"role" : "AdhocSubProcess",
"contains" : [ "sequence_start", "sequence_end", "from_task_event", "to_task_event", "TextAnnotation", "DataStore" ]
}, {
"role" : "EventSubProcess",
"contains" : [ "sequence_start", "sequence_end", "from_task_event", "to_task_event", "TextAnnotation", "DataStore" ]
}, {
"role" : "Pool",
"contains" : [ "Lane" ]
}, {
"role" : "Lane",
"contains" : [ "sequence_start", "sequence_end", "EventSubProcess", "TextAnnotation", "DataStore" ]
} ],
"morphingRules" : [ {
"role" : "ActivitiesMorph",
"baseMorphs" : [ "UserTask" ],
"preserveBounds" : true
}, {
"role" : "GatewaysMorph",
"baseMorphs" : [ "ExclusiveGateway" ]
}, {
"role" : "StartEventsMorph",
"baseMorphs" : [ "StartNoneEvent" ]
}, {
"role" : "EndEventsMorph",
"baseMorphs" : [ "StartNoneEvent" ]
}, {
"role" : "CatchEventsMorph",
"baseMorphs" : [ "CatchTimerEvent" ]
}, {
"role" : "ThrowEventsMorph",
"baseMorphs" : [ "ThrowNoneEvent" ]
}, {
"role" : "BoundaryEventsMorph",
"baseMorphs" : [ "ThrowNoneEvent" ]
}, {
"role" : "BoundaryCompensationEvent",
"baseMorphs" : [ "BoundaryCompensationEvent" ]
}, {
"role" : "TextAnnotation",
"baseMorphs" : [ "TextAnnotation" ]
}, {
"role" : "DataStore",
"baseMorphs" : [ "DataStore" ]
} ]
}
}
================================================
FILE: flowable-ui/src/main/resources/stencilset/zh/stencilset_cmmn.json
================================================
{
"title" : "CMMN editor",
"namespace" : "http://b3mn.org/stencilset/cmmn1.1#",
"description" : "CMMN案例编辑器",
"propertyPackages" : [ {
"name" : "case_idpackage",
"properties" : [ {
"id" : "case_id",
"type" : "String",
"title" : "案例鉴别",
"value" : "caseModel",
"description" : "唯一标识符的定义.",
"popular" : true
} ]
}, {
"name" : "overrideidpackage",
"properties" : [ {
"id" : "overrideid",
"type" : "String",
"title" : "Id",
"value" : "",
"description" : "Unique identifier of the element.",
"popular" : true
} ]
}, {
"name" : "namepackage",
"properties" : [ {
"id" : "name",
"type" : "String",
"title" : "Name",
"value" : "",
"description" : "The descriptive name of the CMMN element.",
"popular" : true,
"refToView" : "text_name"
} ]
}, {
"name" : "documentationpackage",
"properties" : [ {
"id" : "documentation",
"type" : "Text",
"title" : "Documentation",
"value" : "",
"description" : "The descriptive name of the CMMN element.",
"popular" : true
} ]
}, {
"name" : "blockingpackage",
"properties" : [ {
"id" : "isblocking",
"type" : "Boolean",
"title" : "Blocking",
"value" : "true",
"description" : "Boolean property, default true. If false the task will automatically complete the task after executing any associated logic",
"popular" : true
},
{
"id" : "isblockingexpression",
"type" : "String",
"title" : "Blocking expression",
"value" : "",
"description" : "An expression to control at runtime whether this task is blocking or not. When set, the value of the blocking property is ignored.",
"popular" : true
} ]
}, {
"name" : "case_initiatorvariablenamepackage",
"properties" : [ {
"id" : "case_initiatorvariablename",
"type" : "String",
"title" : "Initiator variable name",
"value" : "",
"description" : "Sets the variable name to be used for the case initiator value.",
"popular" : true
} ]
}, {
"name" : "case_authorpackage",
"properties" : [ {
"id" : "case_author",
"type" : "String",
"title" : "Case author",
"value" : "",
"description" : "Author of the case definition.",
"popular" : true
} ]
}, {
"name" : "case_versionpackage",
"properties" : [ {
"id" : "case_version",
"type" : "String",
"title" : "Case version string (documentation only)",
"value" : "",
"description" : "Version identifier for documentation purpose.",
"popular" : true
} ]
}, {
"name" : "case_namespacepackage",
"properties" : [ {
"id" : "case_namespace",
"type" : "String",
"title" : "Target namespace",
"value" : "http://www.flowable.org/casedef",
"description" : "Target namespace for the case definition.",
"popular" : true
} ]
}, {
"name" : "usertaskassignmentpackage",
"properties" : [ {
"id" : "usertaskassignment",
"type" : "Complex",
"title" : "Assignments",
"value" : "",
"description" : "Assignment definition for the user task",
"popular" : true
} ]
}, {
"name" : "formpropertiespackage",
"properties" : [ {
"id" : "formproperties",
"type" : "Complex",
"title" : "Form properties",
"value" : "",
"description" : "Definition of the form with a list of form properties",
"popular" : true
} ]
}, {
"name" : "formkeydefinitionpackage",
"properties" : [ {
"id" : "formkeydefinition",
"type" : "String",
"title" : "Form key",
"value" : "",
"description" : "Form key that provides a reference to a form.",
"popular" : true
} ]
}, {
"name" : "duedatedefinitionpackage",
"properties" : [ {
"id" : "duedatedefinition",
"type" : "String",
"title" : "Due date",
"value" : "",
"description" : "Due date of the user task.",
"popular" : true
} ]
}, {
"name" : "prioritydefinitionpackage",
"properties" : [ {
"id" : "prioritydefinition",
"type" : "String",
"title" : "Priority",
"value" : "",
"description" : "Priority of the user task.",
"popular" : true
} ]
}, {
"name" : "servicetaskclasspackage",
"properties" : [ {
"id" : "servicetaskclass",
"type" : "String",
"title" : "Class",
"value" : "",
"description" : "Class that implements the service task logic.",
"popular" : true
} ]
}, {
"name" : "servicetaskexpressionpackage",
"properties" : [ {
"id" : "servicetaskexpression",
"type" : "Text",
"title" : "Expression",
"value" : "",
"description" : "Service task logic defined with an expression.",
"popular" : true
} ]
}, {
"name" : "servicetaskdelegateexpressionpackage",
"properties" : [ {
"id" : "servicetaskdelegateexpression",
"type" : "Text",
"title" : "Delegate expression",
"value" : "",
"description" : "Service task logic defined with a delegate expression.",
"popular" : true
} ]
}, {
"name" : "servicetaskfieldspackage",
"properties" : [ {
"id" : "servicetaskfields",
"type" : "Complex",
"title" : "Class fields",
"value" : "",
"description" : "Field extensions",
"popular" : true
} ]
}, {
"name" : "servicetaskresultvariablepackage",
"properties" : [ {
"id" : "servicetaskresultvariable",
"type" : "String",
"title" : "Result variable name",
"value" : "",
"description" : "Process variable name to store the service task result.",
"popular" : true
} ]
}, {
"name" : "scriptformatpackage",
"properties" : [ {
"id" : "scriptformat",
"type" : "String",
"title" : "Script format",
"value" : "",
"description" : "Script format of the script task.",
"popular" : true
} ]
}, {
"name" : "scripttextpackage",
"properties" : [ {
"id" : "scripttext",
"type" : "Text",
"title" : "Script",
"value" : "",
"description" : "Script text of the script task.",
"popular" : true
} ]
}, {
"name" : "asyncpackage",
"properties" : [ {
"id" : "isasync",
"type" : "Boolean",
"title" : "Asynchronous",
"value" : "",
"description" : "Indicates if the task needs to be executed asynchronously.",
"popular" : true
}, {
"id" : "isexclusive",
"type" : "Boolean",
"title" : "Exclusive",
"value" : "",
"description" : "Indicates if an asynchronous task must be executed exclusively",
"popular" : true
} ]
}, {
"name" : "mailtasktopackage",
"properties" : [ {
"id" : "mailtaskto",
"type" : "Text",
"title" : "To",
"value" : "",
"description" : "The recipients if the e-mail. Multiple recipients are defined in a comma-separated list.",
"popular" : true
} ]
}, {
"name" : "mailtaskfrompackage",
"properties" : [ {
"id" : "mailtaskfrom",
"type" : "Text",
"title" : "From",
"value" : "",
"description" : "The sender e-mail address. If not provided, the default configured from address is used.",
"popular" : true
} ]
}, {
"name" : "mailtasksubjectpackage",
"properties" : [ {
"id" : "mailtasksubject",
"type" : "Text",
"title" : "Subject",
"value" : "",
"description" : "The subject of the e-mail.",
"popular" : true
} ]
}, {
"name" : "mailtaskccpackage",
"properties" : [ {
"id" : "mailtaskcc",
"type" : "Text",
"title" : "Cc",
"value" : "",
"description" : "The cc's of the e-mail. Multiple recipients are defined in a comma-separated list",
"popular" : true
} ]
}, {
"name" : "mailtaskbccpackage",
"properties" : [ {
"id" : "mailtaskbcc",
"type" : "Text",
"title" : "Bcc",
"value" : "",
"description" : "The bcc's of the e-mail. Multiple recipients are defined in a comma-separated list",
"popular" : true
} ]
}, {
"name" : "mailtasktextpackage",
"properties" : [ {
"id" : "mailtasktext",
"type" : "Text",
"title" : "Text",
"value" : "",
"description" : "The content of the e-mail, in case one needs to send plain none-rich e-mails. Can be used in combination with html, for e-mail clients that don't support rich content. The client will then fall back to this text-only alternative.",
"popular" : true
} ]
}, {
"name" : "mailtaskhtmlpackage",
"properties" : [ {
"id" : "mailtaskhtml",
"type" : "Text",
"title" : "Html",
"value" : "",
"description" : "A piece of HTML that is the content of the e-mail.",
"popular" : true
} ]
}, {
"name" : "mailtaskcharsetpackage",
"properties" : [ {
"id" : "mailtaskcharset",
"type" : "String",
"title" : "Charset",
"value" : "",
"description" : "Allows to change the charset of the email, which is necessary for many non-English languages. ",
"popular" : true
} ]
}, {
"name" : "httptaskrequestmethodpackage",
"properties" : [ {
"id" : "httptaskrequestmethod",
"type" : "String",
"title" : "Request method",
"value" : "",
"description" : "Request method (For example - GET,POST,PUT etc).",
"popular" : true
} ]
}, {
"name" : "httptaskrequesturlpackage",
"properties" : [ {
"id" : "httptaskrequesturl",
"type" : "Text",
"title" : "Request URL",
"value" : "",
"description" : "Request URL (For example - http://flowable.org).",
"popular" : true
} ]
}, {
"name" : "httptaskrequestheaderspackage",
"properties" : [ {
"id" : "httptaskrequestheaders",
"type" : "Text",
"title" : "Request headers",
"value" : "",
"description" : "Line separated HTTP request headers (For example - Content-Type: application/json).",
"popular" : true
} ]
}, {
"name" : "httptaskrequestbodypackage",
"properties" : [ {
"id" : "httptaskrequestbody",
"type" : "Text",
"title" : "Request body",
"value" : "",
"description" : "Request body (For example- ${sampleBody}).",
"popular" : true
} ]
}, {
"name" : "httptaskrequesttimeoutpackage",
"properties" : [ {
"id" : "httptaskrequesttimeout",
"type" : "String",
"title" : "Request timeout",
"value" : "",
"description" : "Timeout in milliseconds for the request (For example - 5000).",
"popular" : true
} ]
}, {
"name" : "httptaskdisallowredirectspackage",
"properties" : [ {
"id" : "httptaskdisallowredirects",
"type" : "String",
"title" : "Disallow redirects",
"value" : "",
"description" : "Flag to disallow HTTP redirects.",
"popular" : true
} ]
}, {
"name" : "httptaskfailstatuscodespackage",
"properties" : [ {
"id" : "httptaskfailstatuscodes",
"type" : "String",
"title" : "Fail status codes",
"value" : "",
"description" : "Comma separated list of HTTP response status codes to retry, for example 400,5XX.",
"popular" : true
} ]
}, {
"name" : "httptaskhandlestatuscodespackage",
"properties" : [ {
"id" : "httptaskhandlestatuscodes",
"type" : "String",
"title" : "Handle status codes",
"value" : "",
"description" : "Comma separated list of HTTP response status codes to ignore, for example 404,3XX.",
"popular" : true
} ]
}, {
"name" : "httptaskignoreexceptionpackage",
"properties" : [ {
"id" : "httptaskignoreexception",
"type" : "String",
"title" : "Ignore exception",
"value" : "",
"description" : "Flag to ignore exceptions.",
"popular" : true
} ]
}, {
"name" : "httptaskresponsevariablenamepackage",
"properties" : [ {
"id" : "httptaskresponsevariablename",
"type" : "String",
"title" : "Response variable name",
"value" : "",
"description" : "Define the variable name to store the http response.",
"popular" : true
} ]
}, {
"name" : "httptasksaverequestvariablespackage",
"properties" : [ {
"id" : "httptasksaverequestvariables",
"type" : "String",
"title" : "Save request variables",
"value" : "",
"description" : "Flag to save request variables.",
"popular" : true
} ]
}, {
"name" : "httptasksaveresponseparameterspackage",
"properties" : [ {
"id" : "httptasksaveresponseparameters",
"type" : "String",
"title" : "Save response status, headers",
"value" : "",
"description" : "Flag to save response status, headers etc.",
"popular" : true
} ]
}, {
"name" : "httptaskresultvariableprefixpackage",
"properties" : [ {
"id" : "httptaskresultvariableprefix",
"type" : "String",
"title" : "Result variable prefix",
"value" : "",
"description" : "Prefix for the execution variable names.",
"popular" : true
} ]
}, {
"name" : "textpackage",
"properties" : [ {
"id" : "text",
"type" : "String",
"title" : "Text",
"value" : "",
"description" : "The text of the text annotation.",
"popular" : true,
"refToView" : "text"
} ]
}, {
"name" : "formreferencepackage",
"properties" : [ {
"id" : "formreference",
"type" : "Complex",
"title" : "Form reference",
"value" : "",
"description" : "Reference to a form",
"popular" : true
} ]
}, {
"name" : "decisiontaskdecisiontablereferencepackage",
"properties" : [ {
"id" : "decisiontaskdecisiontablereference",
"type" : "Complex",
"title" : "Decision table reference",
"value" : "",
"description" : "Set the decision table reference",
"popular" : true
} ]
}, {
"name" : "decisiontaskthrowerroronnohitspackage",
"properties" : [ {
"id" : "decisiontaskthrowerroronnohits",
"type" : "Boolean",
"title" : "Throw error if no rules were hit",
"value" : "false",
"description" : "Should an error be thrown if no rules of the decision table were hit and consequently no result was found.",
"popular" : true
} ]
}, {
"name": "httptaskrequestmethodpackage",
"properties": [
{
"id": "httptaskrequestmethod",
"type": "String",
"title": "Request method",
"value": "",
"description": "Request method (For example - GET,POST,PUT etc).",
"popular": true
}
]
},
{
"name": "httptaskrequesturlpackage",
"properties": [
{
"id": "httptaskrequesturl",
"type": "Text",
"title": "Request URL",
"value": "",
"description": "Request URL (For example - http://flowable.org).",
"popular": true
}
]
},
{
"name": "httptaskrequestheaderspackage",
"properties": [
{
"id": "httptaskrequestheaders",
"type": "Text",
"title": "Request headers",
"value": "",
"description": "Line separated HTTP request headers (For example - Content-Type: application/json).",
"popular": true
}
]
},
{
"name": "httptaskrequestbodypackage",
"properties": [
{
"id": "httptaskrequestbody",
"type": "Text",
"title": "Request body",
"value": "",
"description": "Request body (For example- ${sampleBody}).",
"popular": true
}
]
},
{
"name": "httptaskrequesttimeoutpackage",
"properties": [
{
"id": "httptaskrequesttimeout",
"type": "String",
"title": "Request timeout",
"value": "",
"description": "Timeout in milliseconds for the request (For example - 5000).",
"popular": true
}
]
},
{
"name": "httptaskdisallowredirectspackage",
"properties": [
{
"id": "httptaskdisallowredirects",
"type": "String",
"title": "Disallow redirects",
"value": "",
"description": "Flag to disallow HTTP redirects.",
"popular": true
}
]
},
{
"name": "httptaskfailstatuscodespackage",
"properties": [
{
"id": "httptaskfailstatuscodes",
"type": "String",
"title": "Fail status codes",
"value": "",
"description": "Comma separated list of HTTP response status codes to retry, for example 400,5XX.",
"popular": true
}
]
},
{
"name": "httptaskhandlestatuscodespackage",
"properties": [
{
"id": "httptaskhandlestatuscodes",
"type": "String",
"title": "Handle status codes",
"value": "",
"description": "Comma separated list of HTTP response status codes to ignore, for example 404,3XX.",
"popular": true
}
]
},
{
"name": "httptaskignoreexceptionpackage",
"properties": [
{
"id": "httptaskignoreexception",
"type": "String",
"title": "Ignore exception",
"value": "",
"description": "Flag to ignore exceptions.",
"popular": true
}
]
},
{
"name": "httptaskresponsevariablenamepackage",
"properties": [
{
"id": "httptaskresponsevariablename",
"type": "String",
"title": "Response variable name",
"value": "",
"description": "Define the variable name to store the http response.",
"popular": true
}
]
},
{
"name": "httptasksaverequestvariablespackage",
"properties": [
{
"id": "httptasksaverequestvariables",
"type": "String",
"title": "Save request variables",
"value": "",
"description": "Flag to save request variables.",
"popular": true
}
]
},
{
"name": "httptasksaveresponseparameterspackage",
"properties": [
{
"id": "httptasksaveresponseparameters",
"type": "String",
"title": "Save response status, headers",
"value": "",
"description": "Flag to save response status, headers etc.",
"popular": true
}
]
},
{
"name": "httptaskresultvariableprefixpackage",
"properties": [
{
"id": "httptaskresultvariableprefix",
"type": "String",
"title": "Result variable prefix",
"value": "",
"description": "Prefix for the execution variable names.",
"popular": true
}
]
},
{
"name" : "httptasksaveresponseparameterstransientpackage",
"properties" : [ {
"id" : "httptasksaveresponseparameterstransient",
"type" : "String",
"title" : "Save response as a transient variable",
"value" : "",
"description" : "Flag indicating to store the response variable(s) transient",
"popular" : true
} ]
},
{
"name" : "httptasksaveresponseasjsonpackage",
"properties" : [ {
"id" : "httptasksaveresponseasjson",
"type" : "String",
"title" : "Save response as JSON",
"value" : "",
"description" : "Flag indicating to store the response variable as a JSON variable instead of a String",
"popular" : true
} ]
},
{
"name" : "casetaskcasereferencepackage",
"properties" : [ {
"id" : "casetaskcasereference",
"type" : "Complex",
"title" : "Case reference",
"value" : "",
"description" : "Set the case reference",
"popular" : true
} ]
}, {
"name" : "processtaskprocessreferencepackage",
"properties" : [ {
"id" : "processtaskprocessreference",
"type" : "Complex",
"title" : "Process reference",
"value" : "",
"description" : "Set the process reference",
"popular" : true
} ]
}, {
"name" : "timerexpressionpackage",
"properties" : [ {
"id" : "timerexpression",
"type" : "String",
"title" : "Timer Expression",
"value" : "",
"description" : "An ISO-8601 string or an expression that resolves to either an ISO-8601 string or a java.util.Date",
"popular" : true
} ]
}, {
"name" : "timerstarttriggerpackage",
"properties" : [ {
"id" : "timerstarttriggersourceref",
"type" : "flowable-planitem-dropdown",
"title" : "Start trigger plan item",
"value" : "",
"description" : "A reference to the plan item for which the configured standard event needs to happen to start the timer (optional)",
"popular" : true
},
{
"id" : "transitionevent",
"type" : "flowable-transitionevent",
"title" : "Start trigger transition event",
"value" : "complete",
"description" : "The type of the transition event. Only used when the start trigger plan item is set",
"popular" : true
} ]
}, {
"name": "decisiontaskdecisionreferencepackage",
"properties": [
{
"id": "decisiontaskdecisionreference",
"type": "Complex",
"title": "Decision reference",
"value": "",
"description": "Set the decision reference",
"popular": true
}
]
}, {
"name" : "ifpartconditionpackage",
"properties" : [ {
"id" : "ifpartcondition",
"type" : "String",
"title" : "Condition",
"value" : "",
"description" : "An expression that must be true to satisfy the sentry",
"popular" : true
} ]
}, {
"name" : "autocompletepackage",
"properties" : [ {
"id" : "autocompleteenabled",
"type" : "Boolean",
"title" : "Auto complete",
"value" : "",
"description" : "Flag indicating that the stage will automatically complete, once all required children are in an end state and no other children are active.",
"popular" : true,
"refToView" : "autoComplete"
}, {
"id" : "autocompletecondition",
"type" : "String",
"title" : "Auto complete condition",
"value" : "",
"description" : "An expression that is resolved to if the stage can automatically complere.",
"popular" : true
}]
}, {
"name" : "requiredrulepackage",
"properties" : [ {
"id" : "requiredenabled",
"type" : "Boolean",
"title" : "Required",
"value" : "",
"description" : "Flag indicating if the stage, task or milestone is required when determining the parent stage completion. By default false.",
"popular" : true,
"refToView" : "required"
}, {
"id" : "requiredrulecondition",
"type" : "String",
"title" : "Required Rule",
"value" : "",
"description" : "An expression that is resolved to determine if the stage, task or milestone is required when determining the parent stage completion.",
"popular" : true
}]
}, {
"name" : "repetitionrulepackage",
"properties" : [ {
"id" : "repetitionenabled",
"type" : "Boolean",
"title" : "Repetition",
"value" : "",
"description" : "Flag indicating if repetition is enabled",
"popular" : true,
"refToView" : "repetition"
}, {
"id" : "repetitionrulecondition",
"type" : "String",
"title" : "Repetition Rule",
"value" : "",
"description" : "An expression that is resolved to determine if new instances of the planitem need to be created",
"popular" : true
},
{
"id" : "repetitioncountervariablename",
"type" : "String",
"title" : "Repetition counter variable",
"value" : "",
"description" : "The name of the local variable which stores the instance counter of the repetition. Default value is 'repetitionCounter'.",
"popular" : true
} ]
}, {
"name" : "manualactivationrulepackage",
"properties" : [ {
"id" : "manualactivationenabled",
"type" : "Boolean",
"title" : "Manual activation",
"value" : "",
"description" : "Flag indicating if the task or stage needs to be manually activated. False by default.",
"popular" : true,
"refToView" : "manualActivation"
}, {
"id" : "manualactivationrulecondition",
"type" : "String",
"title" : "Manual activation Rule",
"value" : "",
"description" : "An expression that is resolved to determine if the stage or task needs to be manually activated.",
"popular" : true
}]
}, {
"name" : "completionneutralrulepackage",
"properties" : [ {
"id" : "completionneutralenabled",
"type" : "Boolean",
"title" : "Completion neutral",
"value" : "",
"description" : "Flag indicating if the plan item is completion neutral. False by default.",
"popular" : true
}, {
"id" : "completionneutralrulecondition",
"type" : "String",
"title" : "Completion neutral Rule",
"value" : "",
"description" : "An expression that is resolved to determine if the plan item is completion neutral.",
"popular" : true
}]
}, {
"name": "scriptformatpackage",
"properties" : [ {
"id": "scriptformat",
"type": "String",
"title": "Script format",
"value": "",
"description": "Script format of the script task (JavaScript, groovy, etc).",
"popular": true
} ]
}, {
"name": "scripttextpackage",
"properties" : [ {
"id": "scripttext",
"type": "Text",
"title": "Script",
"value": "",
"description": "Script text of the script task.",
"popular": true
}
]
}, {
"name" : "transitioneventpackage",
"properties" : [ {
"id" : "transitionevent",
"type" : "flowable-transitionevent",
"title" : "Transition event type",
"value" : "complete",
"description" : "The type of the transition event",
"popular" : true
} ]
} ],
"stencils" : [ {
"type" : "node",
"id" : "CMMNDiagram",
"title" : "CMMN-Diagram",
"description" : "A CMMN 2.0 diagram.",
"view" : "\n",
"icon" : "diagram.png",
"groups" : [ "Diagram" ],
"mayBeRoot" : true,
"hide" : true,
"propertyPackages" : [ "case_idpackage", "namepackage", "documentationpackage", "case_initiatorvariablenamepackage", "case_authorpackage", "case_versionpackage", "case_namespacepackage"],
"hiddenPropertyPackages" : [ ],
"roles" : [ ]
}, {
"type" : "node",
"id" : "CasePlanModel",
"title" : "Case plan model",
"description" : "A case plan model",
"view" : " ",
"icon" : "containers/caseplanmodel.png",
"groups" : [ "Containers" ],
"hide" : true,
"propertyPackages" : [
"overrideidpackage",
"namepackage",
"documentationpackage",
"formkeydefinitionpackage",
"formreferencepackage",
"autocompletepackage"
],
"hiddenPropertyPackages" : [ ],
"roles" : [ "StageModelActivity" ]
}, {
"type" : "node",
"id" : "Stage",
"title" : "Stage",
"description" : "A stage",
"view" : " ",
"icon" : "containers/expanded.stage.png",
"groups" : [ "Containers" ],
"hide" : true,
"propertyPackages" : [
"overrideidpackage",
"namepackage",
"documentationpackage",
"autocompletepackage",
"requiredrulepackage",
"repetitionrulepackage",
"manualactivationrulepackage",
"completionneutralrulepackage"
],
"hiddenPropertyPackages" : [ ],
"roles" : [ "StageActivity", "all", "association_start", "association_end" ]
}, {
"type" : "node",
"id" : "Task",
"title" : "Task",
"description" : "A manual task",
"view" : "",
"icon" : "activity/task.png",
"groups" : [ "Activities" ],
"propertyPackages" : [
"overrideidpackage",
"namepackage",
"documentationpackage",
"blockingpackage",
"asyncpackage",
"requiredrulepackage",
"repetitionrulepackage",
"manualactivationrulepackage",
"completionneutralrulepackage"],
"hiddenPropertyPackages" : [ ],
"roles" : [ "Activity", "association_start", "association_end", "ActivitiesMorph", "all" ]
}, {
"type" : "node",
"id" : "HumanTask",
"title" : "Human task",
"description" : "A manual task assigned to a specific person",
"view" : "",
"icon" : "activity/humantask.png",
"groups" : [ "Activities" ],
"propertyPackages" : [
"overrideidpackage",
"namepackage",
"documentationpackage",
"blockingpackage",
"usertaskassignmentpackage",
"formkeydefinitionpackage",
"formreferencepackage",
"duedatedefinitionpackage",
"prioritydefinitionpackage",
"asyncpackage",
"requiredrulepackage",
"repetitionrulepackage",
"manualactivationrulepackage",
"completionneutralrulepackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "Activity", "association_start", "association_end", "ActivitiesMorph", "all" ]
}, {
"type" : "node",
"id" : "ServiceTask",
"title" : "Service task",
"description" : "An automatic task with service logic",
"view" : "\n",
"icon" : "activity/servicetask.png",
"groups" : [ "Activities" ],
"propertyPackages" : [
"overrideidpackage",
"namepackage",
"documentationpackage",
"servicetaskclasspackage",
"servicetaskexpressionpackage",
"servicetaskdelegateexpressionpackage",
"servicetaskfieldspackage",
"servicetaskresultvariablepackage",
"asyncpackage",
"requiredrulepackage",
"repetitionrulepackage",
"manualactivationrulepackage",
"completionneutralrulepackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "Activity", "association_start", "association_end", "ActivitiesMorph", "all" ]
},
{
"type": "node",
"id": "DecisionTask",
"title": "Decision task",
"description": "Task to invoke a DMN decision",
"view": "\n",
"icon": "activity/decisiontask.png",
"groups": [
"Activities"
],
"propertyPackages": [
"overrideidpackage",
"namepackage",
"documentationpackage",
"decisiontaskdecisiontablereferencepackage",
"decisiontaskthrowerroronnohitspackage",
"asyncpackage",
"requiredrulepackage",
"repetitionrulepackage",
"manualactivationrulepackage",
"completionneutralrulepackage"
],
"hiddenPropertyPackages": [],
"roles": [
"Activity",
"association_start",
"association_end",
"ActivitiesMorph",
"all"
]
}, {
"type": "node",
"id": "HttpTask",
"title": "Http task",
"description": "A HTTP task",
"view": "\n",
"icon": "activity/httptask.png",
"groups": [
"Activities"
],
"propertyPackages": [
"overrideidpackage",
"namepackage",
"documentationpackage",
"servicetaskclasspackage",
"asyncpackage",
"requiredrulepackage",
"repetitionrulepackage",
"manualactivationrulepackage",
"completionneutralrulepackage",
"httptaskrequestmethodpackage",
"httptaskrequesturlpackage",
"httptaskrequestheaderspackage",
"httptaskrequestbodypackage",
"httptaskrequesttimeoutpackage",
"httptaskdisallowredirectspackage",
"httptaskfailstatuscodespackage",
"httptaskhandlestatuscodespackage",
"httptaskignoreexceptionpackage",
"httptaskresponsevariablenamepackage",
"httptasksaverequestvariablespackage",
"httptasksaveresponseparameterspackage",
"httptaskresultvariableprefixpackage",
"httptasksaveresponseparameterstransientpackage",
"httptasksaveresponseasjsonpackage"
],
"hiddenPropertyPackages": [],
"roles": [
"Activity",
"sequence_start",
"sequence_end",
"ActivitiesMorph",
"all"
]
}, {
"type" : "node",
"id" : "ScriptTask",
"title" : "Script task",
"description" : "An automatic task with script logic",
"view" : "\n",
"icon" : "activity/scripttask.png",
"groups" : [ "Activities" ],
"propertyPackages" : [
"overrideidpackage",
"namepackage",
"documentationpackage",
"servicetaskclasspackage",
"asyncpackage",
"requiredrulepackage",
"repetitionrulepackage",
"manualactivationrulepackage",
"completionneutralrulepackage",
"scriptformatpackage",
"scripttextpackage",
"servicetaskresultvariablepackage"
],
"hiddenPropertyPackages" : [ ],
"roles" : [ "Activity", "association_start", "association_end", "ActivitiesMorph", "all" ]
}, {
"type" : "node",
"id" : "Milestone",
"title" : "Milestone",
"description" : "A milestone",
"view" : " ",
"icon" : "activity/milestone.png",
"groups" : [ "Activities" ],
"propertyPackages" : [
"overrideidpackage",
"namepackage",
"documentationpackage",
"requiredrulepackage",
"repetitionrulepackage",
"completionneutralrulepackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "Activity", "association_start", "association_end", "ActivitiesMorph", "all" ]
}, {
"type" : "node",
"id" : "CaseTask",
"title" : "Case task",
"description" : "A reference to a case definition to start a new instance",
"view" : " ",
"icon" : "activity/casetask.png",
"groups" : [ "Activities" ],
"propertyPackages" : [
"overrideidpackage",
"namepackage",
"documentationpackage",
"blockingpackage",
"casetaskcasereferencepackage",
"asyncpackage",
"requiredrulepackage",
"repetitionrulepackage",
"manualactivationrulepackage",
"completionneutralrulepackage"],
"hiddenPropertyPackages" : [ ],
"roles" : [ "Activity", "association_start", "association_end", "ActivitiesMorph", "all" ]
}, {
"type" : "node",
"id" : "ProcessTask",
"title" : "Process task",
"description" : "A reference to a process definition to start a new instance",
"view" : " ",
"icon" : "activity/processtask.png",
"groups" : [ "Activities" ],
"propertyPackages" : [
"overrideidpackage",
"namepackage",
"documentationpackage",
"blockingpackage",
"processtaskprocessreferencepackage",
"asyncpackage",
"requiredrulepackage",
"repetitionrulepackage",
"manualactivationrulepackage",
"completionneutralrulepackage"],
"hiddenPropertyPackages" : [ ],
"roles" : [ "Activity", "association_start", "association_end", "ActivitiesMorph", "all" ]
}, {
"type" : "node",
"id" : "TimerEventListener",
"title" : "Timer event listener",
"description" : "An eventlistener with a timer trigger",
"view" : "\n",
"icon" : "activity/timereventlistener.png",
"groups" : [ "Event Listeners" ],
"propertyPackages" : [
"overrideidpackage",
"namepackage",
"documentationpackage",
"timerexpressionpackage",
"timerstarttriggerpackage",
"completionneutralrulepackage"],
"hiddenPropertyPackages" : [ ],
"roles" : [ "Activity", "association_start", "association_end", "ActivitiesMorph", "all" ]
}, {
"type" : "node",
"id" : "UserEventListener",
"title" : "User event listener",
"description" : "An listener for user events",
"view" : "",
"icon" : "event/userlistener.png",
"groups" : [ "Event Listeners" ],
"propertyPackages" : [
"overrideidpackage",
"namepackage",
"documentationpackage",
"completionneutralrulepackage"],
"hiddenPropertyPackages" : [ ],
"roles" : [ "Activity", "association_start", "association_end", "ActivitiesMorph", "all" ]
}, {
"type" : "node",
"id" : "EntryCriterion",
"title" : "Entry criterion",
"description" : "A sentry that defines an entry criterion",
"view" : "",
"icon" : "sentry/entry.png",
"groups" : [ "Sentries" ],
"propertyPackages" : [
"overrideidpackage",
"namepackage",
"documentationpackage",
"ifpartconditionpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "association_start", "association_end", "SentriesMorph", "EntryCriterionOnItemBoundary" ]
}, {
"type" : "node",
"id" : "ExitCriterion",
"title" : "Exit criterion",
"description" : "A sentry that defines an exit criterion",
"view" : "",
"icon" : "sentry/exit.png",
"groups" : [ "Sentries" ],
"propertyPackages" : [
"overrideidpackage",
"namepackage",
"documentationpackage",
"ifpartconditionpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "association_start", "SentriesMorph", "ExitCriterionOnItemBoundary" ]
}, {
"type" : "edge",
"id" : "Association",
"title" : "Association",
"description" : "Associates a sentry with a plan item.",
"view" : "\r\n",
"icon" : "connection/connector.png",
"groups" : [ "Connectors" ],
"layout" : [ {
"type" : "layout.bpmn2_0.sequenceflow"
} ],
"propertyPackages" : [
"overrideidpackage",
"namepackage",
"documentationpackage",
"transitioneventpackage" ],
"hiddenPropertyPackages" : [ ],
"roles" : [ "ConnectingObjectsMorph", "all" ]
}],
"rules" : {
"cardinalityRules" : [ {
"role" : "Startevents_all",
"incomingEdges" : [ {
"role" : "Association",
"maximum" : 0
} ]
}, {
"role" : "Endevents_all",
"outgoingEdges" : [ {
"role" : "Association",
"maximum" : 0
} ]
}],
"connectionRules" : [ {
"role" : "Association",
"connects" : [ {
"from" : "association_start",
"to" : [ "association_end" ]
}]
}, {
"role" : "EntryCriterionOnItemBoundary",
"connects" : [ {
"from" : "Activity",
"to" : [ "EntryCriterionOnItemBoundary"]
}, {
"from" : "StageActivity",
"to" : [ "EntryCriterionOnItemBoundary"]
}]
}, {
"role" : "ExitCriterionOnItemBoundary",
"connects" : [ {
"from" : "Activity",
"to" : [ "ExitCriterionOnItemBoundary" ]
}, {
"from" : "StageActivity",
"to" : [ "ExitCriterionOnItemBoundary"]
}, {
"from" : "StageModelActivity",
"to" : [ "ExitCriterionOnItemBoundary"]
}
]}
],
"containmentRules" : [ {
"role" : "CaseDiagram",
"contains" : [ "CasePlanModel", "ExitCriterion" ]
}, {
"role" : "CasePlanModel",
"contains" : [ "all" ]
}, {
"role" : "Stage",
"contains" : [ "all" ]
}],
"morphingRules" : [ {
"role" : "ActivitiesMorph",
"baseMorphs" : [ "CaseTask" ],
"preserveBounds" : true
}, {
"role" : "SentriesMorph",
"baseMorphs" : [ "EntryCriterion" ],
"preserveBounds" : true
}]
}
}
================================================
FILE: flowable-ui-web/admin/additional_components/angular-ui-select2/angular-ui-select2.js
================================================
/**
* Enhanced Select2 Dropmenus
*
* @AJAX Mode - When in this mode, your value will be an object (or array of objects) of the data used by Select2
* This change is so that you do not have to do an additional query yourself on top of Select2's own query
* @params [options] {object} The configuration options passed to $.fn.select2(). Refer to the documentation
*/
angular.module('ui.select2', []).value('uiSelect2Config', {}).directive('uiSelect2', ['uiSelect2Config', '$timeout', function (uiSelect2Config, $timeout) {
var options = {};
if (uiSelect2Config) {
angular.extend(options, uiSelect2Config);
}
return {
require: 'ngModel',
priority: 1,
compile: function (tElm, tAttrs) {
var watch,
repeatOption,
repeatAttr,
isSelect = tElm.is('select'),
isMultiple = angular.isDefined(tAttrs.multiple);
// Enable watching of the options dataset if in use
if (tElm.is('select')) {
repeatOption = tElm.find('option[ng-repeat], option[data-ng-repeat]');
if (repeatOption.length) {
repeatAttr = repeatOption.attr('ng-repeat') || repeatOption.attr('data-ng-repeat');
watch = jQuery.trim(repeatAttr.split('|')[0]).split(' ').pop();
}
}
return function (scope, elm, attrs, controller) {
// instance-specific options
var opts = angular.extend({}, options, scope.$eval(attrs.uiSelect2));
/*
Convert from Select2 view-model to Angular view-model.
*/
var convertToAngularModel = function(select2_data) {
var model;
if (opts.simple_tags) {
model = [];
angular.forEach(select2_data, function(value, index) {
model.push(value.id);
});
} else {
model = select2_data;
}
return model;
};
/*
Convert from Angular view-model to Select2 view-model.
*/
var convertToSelect2Model = function(angular_data) {
var model = [];
if (!angular_data) {
return model;
}
if (opts.simple_tags) {
model = [];
angular.forEach(
angular_data,
function(value, index) {
model.push({'id': value, 'text': value});
});
} else {
model = angular_data;
}
return model;
};
if (isSelect) {
// Use