├── src ├── main │ ├── resources │ │ ├── public │ │ │ ├── editor-app │ │ │ │ ├── libs │ │ │ │ │ ├── es5-shim-15.3.4.5 │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── tests │ │ │ │ │ │ │ ├── helpers │ │ │ │ │ │ │ │ ├── h.js │ │ │ │ │ │ │ │ ├── h-matchers.js │ │ │ │ │ │ │ │ └── h-kill.js │ │ │ │ │ │ │ ├── lib │ │ │ │ │ │ │ │ ├── jasmine_favicon.png │ │ │ │ │ │ │ │ └── jasmine.css │ │ │ │ │ │ │ ├── spec │ │ │ │ │ │ │ │ └── s-number.js │ │ │ │ │ │ │ ├── index.min.html │ │ │ │ │ │ │ └── index.html │ │ │ │ │ │ ├── .bower.json │ │ │ │ │ │ ├── LICENSE │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ ├── CONTRIBUTORS.md │ │ │ │ │ │ └── CHANGES │ │ │ │ │ ├── bootstrap_3.1.1 │ │ │ │ │ │ └── fonts │ │ │ │ │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ │ │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ │ │ │ │ └── glyphicons-halflings-regular.woff │ │ │ │ │ ├── angular-translate-storage-cookie │ │ │ │ │ │ ├── angular-translate-storage-cookie.min.js │ │ │ │ │ │ ├── angular-translate-storage-cookie.js │ │ │ │ │ │ └── .bower.json │ │ │ │ │ ├── angular-translate-loader-static-files │ │ │ │ │ │ ├── angular-translate-loader-static-files.min.js │ │ │ │ │ │ ├── .bower.json │ │ │ │ │ │ └── angular-translate-loader-static-files.js │ │ │ │ │ ├── angular-cookies_1.2.13 │ │ │ │ │ │ ├── angular-cookies.min.js │ │ │ │ │ │ └── angular-cookies.min.js.map │ │ │ │ │ ├── json3_3.2.6 │ │ │ │ │ │ └── LICENSE │ │ │ │ │ ├── jquery.autogrow-textarea.js │ │ │ │ │ ├── angular-resource_1.2.13 │ │ │ │ │ │ └── angular-resource.min.js │ │ │ │ │ ├── mousetrap-1.4.5.min.js │ │ │ │ │ ├── path_parser.js │ │ │ │ │ ├── angular-route_1.2.13 │ │ │ │ │ │ └── angular-route.min.js │ │ │ │ │ ├── angular-sanitize_1.2.13 │ │ │ │ │ │ └── angular-sanitize.min.js │ │ │ │ │ └── angular-dragdrop.min-1.0.3.js │ │ │ │ ├── images │ │ │ │ │ ├── delete.png │ │ │ │ │ ├── logo.png │ │ │ │ │ ├── wrench.png │ │ │ │ │ ├── loading.gif │ │ │ │ │ ├── logo-2x.png │ │ │ │ │ ├── bpmn-error.png │ │ │ │ │ ├── bpmn-warning.png │ │ │ │ │ ├── datadefinition.png │ │ │ │ │ ├── nw-handle-dark.gif │ │ │ │ │ ├── se-handle-dark.gif │ │ │ │ │ └── shapemenu_highlight.png │ │ │ │ ├── popups │ │ │ │ │ ├── icon-template.html │ │ │ │ │ ├── select-shape.html │ │ │ │ │ ├── unsaved-changes.html │ │ │ │ │ └── save-model.html │ │ │ │ ├── fonts │ │ │ │ │ ├── activiti-admin-webfont.eot │ │ │ │ │ ├── activiti-admin-webfont.ttf │ │ │ │ │ ├── activiti-admin-webfont.woff │ │ │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ │ │ └── glyphicons-halflings-regular.woff │ │ │ │ ├── stencilsets │ │ │ │ │ └── bpmn2.0 │ │ │ │ │ │ └── icons │ │ │ │ │ │ ├── diagram.png │ │ │ │ │ │ ├── activity │ │ │ │ │ │ ├── task.png │ │ │ │ │ │ ├── subprocess.png │ │ │ │ │ │ ├── list │ │ │ │ │ │ │ ├── type.camel.png │ │ │ │ │ │ │ ├── type.mule.png │ │ │ │ │ │ │ ├── type.send.png │ │ │ │ │ │ │ ├── type.shell.png │ │ │ │ │ │ │ ├── type.user.png │ │ │ │ │ │ │ ├── type.manual.png │ │ │ │ │ │ │ ├── type.receive.png │ │ │ │ │ │ │ ├── type.script.png │ │ │ │ │ │ │ ├── type.service.png │ │ │ │ │ │ │ └── type.business.rule.png │ │ │ │ │ │ ├── event.subprocess.png │ │ │ │ │ │ ├── expanded.subprocess.png │ │ │ │ │ │ └── event.subprocess.collapsed.png │ │ │ │ │ │ ├── catching │ │ │ │ │ │ ├── error.png │ │ │ │ │ │ ├── timer.png │ │ │ │ │ │ ├── cancel.png │ │ │ │ │ │ ├── message.png │ │ │ │ │ │ ├── signal.png │ │ │ │ │ │ └── compensation.png │ │ │ │ │ │ ├── endevent │ │ │ │ │ │ ├── error.png │ │ │ │ │ │ ├── none.png │ │ │ │ │ │ ├── cancel.png │ │ │ │ │ │ └── terminate.png │ │ │ │ │ │ ├── swimlane │ │ │ │ │ │ ├── lane.png │ │ │ │ │ │ └── pool.png │ │ │ │ │ │ ├── throwing │ │ │ │ │ │ ├── none.png │ │ │ │ │ │ └── signal.png │ │ │ │ │ │ ├── gateway │ │ │ │ │ │ ├── inclusive.png │ │ │ │ │ │ ├── parallel.png │ │ │ │ │ │ ├── eventbased.png │ │ │ │ │ │ └── exclusive.databased.png │ │ │ │ │ │ ├── startevent │ │ │ │ │ │ ├── error.png │ │ │ │ │ │ ├── none.png │ │ │ │ │ │ ├── signal.png │ │ │ │ │ │ ├── timer.png │ │ │ │ │ │ └── message.png │ │ │ │ │ │ ├── connector │ │ │ │ │ │ ├── messageflow.png │ │ │ │ │ │ ├── sequenceflow.png │ │ │ │ │ │ ├── association.undirected.png │ │ │ │ │ │ └── association.unidirectional.png │ │ │ │ │ │ ├── dataobject │ │ │ │ │ │ └── data.store.png │ │ │ │ │ │ └── artifact │ │ │ │ │ │ └── text.annotation.png │ │ │ │ ├── configuration │ │ │ │ │ ├── properties │ │ │ │ │ │ ├── boolean-property-template.html │ │ │ │ │ │ ├── fields-write-template.html │ │ │ │ │ │ ├── assignment-write-template.html │ │ │ │ │ │ ├── in-parameters-write-template.html │ │ │ │ │ │ ├── out-parameters-write-template.html │ │ │ │ │ │ ├── task-listeners-write-template.html │ │ │ │ │ │ ├── text-property-write-template.html │ │ │ │ │ │ ├── event-listeners-write-template.html │ │ │ │ │ │ ├── form-properties-write-template.html │ │ │ │ │ │ ├── execution-listeners-write-template.html │ │ │ │ │ │ ├── fields-display-template.html │ │ │ │ │ │ ├── message-definitions-write-template.html │ │ │ │ │ │ ├── sequenceflow-order-write-template.html │ │ │ │ │ │ ├── signal-definitions-write-template.html │ │ │ │ │ │ ├── condition-expression-write-template.html │ │ │ │ │ │ ├── condition-expression-display-template.html │ │ │ │ │ │ ├── sequenceflow-order-display-template.html │ │ │ │ │ │ ├── subprocess-reference-display-template.html │ │ │ │ │ │ ├── subprocess-reference-write-template.html │ │ │ │ │ │ ├── in-parameters-display-template.html │ │ │ │ │ │ ├── message-definitions-display-template.html │ │ │ │ │ │ ├── out-parameters-display-template.html │ │ │ │ │ │ ├── signal-definitions-display-template.html │ │ │ │ │ │ ├── task-listeners-display-template.html │ │ │ │ │ │ ├── form-properties-display-template.html │ │ │ │ │ │ ├── event-listeners-display-template.html │ │ │ │ │ │ ├── execution-listeners-display-template.html │ │ │ │ │ │ ├── default-value-display-template.html │ │ │ │ │ │ ├── multiinstance-property-write-template.html │ │ │ │ │ │ ├── string-property-write-mode-template.html │ │ │ │ │ │ ├── signal-property-write-template.html │ │ │ │ │ │ ├── message-property-write-template.html │ │ │ │ │ │ ├── text-popup.html │ │ │ │ │ │ ├── assignment-display-template.html │ │ │ │ │ │ ├── feedback-popup.html │ │ │ │ │ │ ├── condition-expression-popup.html │ │ │ │ │ │ ├── sequenceflow-order-popup.html │ │ │ │ │ │ ├── subprocess-reference-popup.html │ │ │ │ │ │ ├── message-definitions-popup.html │ │ │ │ │ │ ├── assignment-popup.html │ │ │ │ │ │ ├── signal-definitions-popup.html │ │ │ │ │ │ ├── in-parameters-popup.html │ │ │ │ │ │ ├── out-parameters-popup.html │ │ │ │ │ │ └── fields-popup.html │ │ │ │ │ ├── toolbar-custom-actions.js │ │ │ │ │ ├── properties-custom-controllers.js │ │ │ │ │ ├── properties-multiinstance-controller.js │ │ │ │ │ ├── url-config.js │ │ │ │ │ ├── properties-signal-scope-controller.js │ │ │ │ │ ├── properties-message-scope-controller.js │ │ │ │ │ ├── properties-condition-expression-controller.js │ │ │ │ │ └── properties-default-controllers.js │ │ │ │ ├── partials │ │ │ │ │ ├── root-stencil-item-template.html │ │ │ │ │ └── stencil-item-template.html │ │ │ │ ├── app-cfg.js │ │ │ │ ├── editor-config.js │ │ │ │ ├── header-controller.js │ │ │ │ ├── editor-controller.js │ │ │ │ ├── plugins.xml │ │ │ │ └── editor │ │ │ │ │ └── css │ │ │ │ │ └── editor.css │ │ │ └── diagram-viewer │ │ │ │ ├── images │ │ │ │ ├── bg.png │ │ │ │ ├── breadcrumbs.png │ │ │ │ ├── checker-bg.png │ │ │ │ └── deployer │ │ │ │ │ ├── send.png │ │ │ │ │ ├── timer.png │ │ │ │ │ ├── user.png │ │ │ │ │ ├── manual.png │ │ │ │ │ ├── receive.png │ │ │ │ │ ├── script.png │ │ │ │ │ ├── service.png │ │ │ │ │ ├── business_rule.png │ │ │ │ │ ├── error_catch.png │ │ │ │ │ ├── error_throw.png │ │ │ │ │ ├── message_catch.png │ │ │ │ │ ├── message_throw.png │ │ │ │ │ ├── signal_catch.png │ │ │ │ │ ├── signal_throw.png │ │ │ │ │ └── blue │ │ │ │ │ └── message_catch.png │ │ │ │ ├── js │ │ │ │ ├── Polyline.js │ │ │ │ ├── jstools.js │ │ │ │ ├── ActivitiRest.js │ │ │ │ ├── ActivityImpl.js │ │ │ │ └── jquery │ │ │ │ │ ├── jquery.progressbar.js │ │ │ │ │ └── jquery.asyncqueue.js │ │ │ │ └── style.css │ │ ├── processes │ │ │ ├── demand.png │ │ │ ├── demand.zip │ │ │ └── processes.rar │ │ └── application.yml │ └── java │ │ └── com │ │ └── yfny │ │ └── activityapi │ │ ├── ActivityApiApplication.java │ │ ├── utils │ │ ├── UtilMisc.java │ │ ├── BpmsActivityTypeEnum.java │ │ ├── DeleteTaskCmd.java │ │ ├── SetFLowNodeAndGoCmd.java │ │ └── ActivitiUtils.java │ │ ├── service │ │ ├── FlowDiagramService.java │ │ ├── ModelService.java │ │ └── FlowTaskService.java │ │ ├── exception │ │ └── GlobalExceptionHandler.java │ │ └── controller │ │ ├── model │ │ ├── StencilsetRestResource.java │ │ └── ModelController.java │ │ ├── FlowDiagramController.java │ │ └── TaskController.java └── test │ └── java │ └── com │ └── yfny │ └── activityapi │ └── ActivitiyApiApplicationTests.java ├── .mvn └── wrapper │ ├── maven-wrapper.jar │ ├── maven-wrapper.properties │ └── MavenWrapperDownloader.java ├── README.md ├── .gitignore └── pom.xml /src/main/resources/public/editor-app/libs/es5-shim-15.3.4.5/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .DS_Store 3 | -------------------------------------------------------------------------------- /.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # SpringBoot集成Activity工作流 2 | 1.SpringBoot版本2.1.3, Activity版本6.0, 数据库Mysql 3 | 4 | 2.添加了Activity-Modeler在线编辑工具 5 | -------------------------------------------------------------------------------- /src/main/resources/processes/demand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/processes/demand.png -------------------------------------------------------------------------------- /src/main/resources/processes/demand.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/processes/demand.zip -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/libs/es5-shim-15.3.4.5/tests/helpers/h.js: -------------------------------------------------------------------------------- 1 | function implement() { 2 | throw 'Not implemented'; 3 | } -------------------------------------------------------------------------------- /src/main/resources/processes/processes.rar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/processes/processes.rar -------------------------------------------------------------------------------- /.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.0/apache-maven-3.6.0-bin.zip 2 | -------------------------------------------------------------------------------- /src/main/resources/public/diagram-viewer/images/bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/diagram-viewer/images/bg.png -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/images/delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/editor-app/images/delete.png -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/editor-app/images/logo.png -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/images/wrench.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/editor-app/images/wrench.png -------------------------------------------------------------------------------- /src/main/resources/public/diagram-viewer/js/Polyline.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/diagram-viewer/js/Polyline.js -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/images/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/editor-app/images/loading.gif -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/images/logo-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/editor-app/images/logo-2x.png -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/images/bpmn-error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/editor-app/images/bpmn-error.png -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/images/bpmn-warning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/editor-app/images/bpmn-warning.png -------------------------------------------------------------------------------- /src/main/resources/public/diagram-viewer/images/breadcrumbs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/diagram-viewer/images/breadcrumbs.png -------------------------------------------------------------------------------- /src/main/resources/public/diagram-viewer/images/checker-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/diagram-viewer/images/checker-bg.png -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/images/datadefinition.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/editor-app/images/datadefinition.png -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/images/nw-handle-dark.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/editor-app/images/nw-handle-dark.gif -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/images/se-handle-dark.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/editor-app/images/se-handle-dark.gif -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/popups/icon-template.html: -------------------------------------------------------------------------------- 1 |
2 | 3 |
-------------------------------------------------------------------------------- /src/main/resources/public/diagram-viewer/images/deployer/send.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/diagram-viewer/images/deployer/send.png -------------------------------------------------------------------------------- /src/main/resources/public/diagram-viewer/images/deployer/timer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/diagram-viewer/images/deployer/timer.png -------------------------------------------------------------------------------- /src/main/resources/public/diagram-viewer/images/deployer/user.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/diagram-viewer/images/deployer/user.png -------------------------------------------------------------------------------- /src/main/resources/public/diagram-viewer/images/deployer/manual.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/diagram-viewer/images/deployer/manual.png -------------------------------------------------------------------------------- /src/main/resources/public/diagram-viewer/images/deployer/receive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/diagram-viewer/images/deployer/receive.png -------------------------------------------------------------------------------- /src/main/resources/public/diagram-viewer/images/deployer/script.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/diagram-viewer/images/deployer/script.png -------------------------------------------------------------------------------- /src/main/resources/public/diagram-viewer/images/deployer/service.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/diagram-viewer/images/deployer/service.png -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/fonts/activiti-admin-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/editor-app/fonts/activiti-admin-webfont.eot -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/fonts/activiti-admin-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/editor-app/fonts/activiti-admin-webfont.ttf -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/images/shapemenu_highlight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/editor-app/images/shapemenu_highlight.png -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/fonts/activiti-admin-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/editor-app/fonts/activiti-admin-webfont.woff -------------------------------------------------------------------------------- /src/main/resources/public/diagram-viewer/images/deployer/business_rule.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/diagram-viewer/images/deployer/business_rule.png -------------------------------------------------------------------------------- /src/main/resources/public/diagram-viewer/images/deployer/error_catch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/diagram-viewer/images/deployer/error_catch.png -------------------------------------------------------------------------------- /src/main/resources/public/diagram-viewer/images/deployer/error_throw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/diagram-viewer/images/deployer/error_throw.png -------------------------------------------------------------------------------- /src/main/resources/public/diagram-viewer/images/deployer/message_catch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/diagram-viewer/images/deployer/message_catch.png -------------------------------------------------------------------------------- /src/main/resources/public/diagram-viewer/images/deployer/message_throw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/diagram-viewer/images/deployer/message_throw.png -------------------------------------------------------------------------------- /src/main/resources/public/diagram-viewer/images/deployer/signal_catch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/diagram-viewer/images/deployer/signal_catch.png -------------------------------------------------------------------------------- /src/main/resources/public/diagram-viewer/images/deployer/signal_throw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/diagram-viewer/images/deployer/signal_throw.png -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/diagram.png -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/editor-app/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/editor-app/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/editor-app/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /src/main/resources/public/diagram-viewer/images/deployer/blue/message_catch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/diagram-viewer/images/deployer/blue/message_catch.png -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/activity/task.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/activity/task.png -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/catching/error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/catching/error.png -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/catching/timer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/catching/timer.png -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/endevent/error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/endevent/error.png -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/endevent/none.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/endevent/none.png -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/swimlane/lane.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/swimlane/lane.png -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/swimlane/pool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/swimlane/pool.png -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/throwing/none.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/throwing/none.png -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/catching/cancel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/catching/cancel.png -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/catching/message.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/catching/message.png -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/catching/signal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/catching/signal.png -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/endevent/cancel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/endevent/cancel.png -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/gateway/inclusive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/gateway/inclusive.png -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/gateway/parallel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/gateway/parallel.png -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/startevent/error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/startevent/error.png -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/startevent/none.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/startevent/none.png -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/startevent/signal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/startevent/signal.png -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/startevent/timer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/startevent/timer.png -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/throwing/signal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/throwing/signal.png -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/activity/subprocess.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/activity/subprocess.png -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/endevent/terminate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/endevent/terminate.png -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/gateway/eventbased.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/gateway/eventbased.png -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/startevent/message.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/startevent/message.png -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/configuration/properties/boolean-property-template.html: -------------------------------------------------------------------------------- 1 | 2 |
3 | 4 |
-------------------------------------------------------------------------------- /src/main/resources/public/editor-app/libs/es5-shim-15.3.4.5/tests/lib/jasmine_favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/editor-app/libs/es5-shim-15.3.4.5/tests/lib/jasmine_favicon.png -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/catching/compensation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/catching/compensation.png -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/connector/messageflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/connector/messageflow.png -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/connector/sequenceflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/connector/sequenceflow.png -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/dataobject/data.store.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/dataobject/data.store.png -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/configuration/properties/fields-write-template.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.camel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.camel.png -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.mule.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.mule.png -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.send.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.send.png -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.shell.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.shell.png -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.user.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.user.png -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/artifact/text.annotation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/artifact/text.annotation.png -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/activity/event.subprocess.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/activity/event.subprocess.png -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.manual.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.manual.png -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.receive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.receive.png -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.script.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.script.png -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.service.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.service.png -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/gateway/exclusive.databased.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/gateway/exclusive.databased.png -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/configuration/properties/assignment-write-template.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/libs/bootstrap_3.1.1/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/editor-app/libs/bootstrap_3.1.1/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/libs/bootstrap_3.1.1/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/editor-app/libs/bootstrap_3.1.1/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/activity/expanded.subprocess.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/activity/expanded.subprocess.png -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/configuration/properties/in-parameters-write-template.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/configuration/properties/out-parameters-write-template.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/configuration/properties/task-listeners-write-template.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/configuration/properties/text-property-write-template.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/libs/bootstrap_3.1.1/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/editor-app/libs/bootstrap_3.1.1/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.business.rule.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.business.rule.png -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/connector/association.undirected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/connector/association.undirected.png -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/configuration/properties/event-listeners-write-template.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/configuration/properties/form-properties-write-template.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/configuration/properties/execution-listeners-write-template.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/configuration/properties/fields-display-template.html: -------------------------------------------------------------------------------- 1 | 2 | {{'PROPERTY.FIELDS' | translate:property.value.fields}} 3 | {{'PROPERTY.FIELDS.EMPTY' | translate}} -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/configuration/properties/message-definitions-write-template.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/configuration/properties/sequenceflow-order-write-template.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/configuration/properties/signal-definitions-write-template.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/activity/event.subprocess.collapsed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/activity/event.subprocess.collapsed.png -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/connector/association.unidirectional.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Edison-Yu/SpringBoot-Activity/HEAD/src/main/resources/public/editor-app/stencilsets/bpmn2.0/icons/connector/association.unidirectional.png -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/configuration/properties/condition-expression-write-template.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/configuration/properties/condition-expression-display-template.html: -------------------------------------------------------------------------------- 1 | {{property.value|limitTo:20}} 2 | {{'PROPERTY.SEQUENCEFLOW.CONDITION.NO-CONDITION-DISPLAY' | translate}} -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/configuration/properties/sequenceflow-order-display-template.html: -------------------------------------------------------------------------------- 1 | 2 | PROPERTY.SEQUENCEFLOW.ORDER.NOT.EMPTY 3 | PROPERTY.SEQUENCEFLOW.ORDER.EMPTY -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/configuration/properties/subprocess-reference-display-template.html: -------------------------------------------------------------------------------- 1 | 2 | {{property.value.name}} 3 | PROPERTY.SUBPROCESSREFERENCE.EMPTY 4 | -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/configuration/properties/subprocess-reference-write-template.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/configuration/properties/in-parameters-display-template.html: -------------------------------------------------------------------------------- 1 | 2 | {{'PROPERTY.INPARAMETERS.VALUE' | translate:property.value.inParameters}} 3 | PROPERTY.INPARAMETERS.EMPTY -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/configuration/properties/message-definitions-display-template.html: -------------------------------------------------------------------------------- 1 | {{'PROPERTY.MESSAGEDEFINITIONS.DISPLAY' | translate:property.value}} 2 | PROPERTY.MESSAGEDEFINITIONS.EMPTY -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/configuration/properties/out-parameters-display-template.html: -------------------------------------------------------------------------------- 1 | 2 | {{'PROPERTY.OUTPARAMETERS.VALUE' | translate:property.value.outParameters}} 3 | PROPERTY.OUTPARAMETERS.EMPTY -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/configuration/properties/signal-definitions-display-template.html: -------------------------------------------------------------------------------- 1 | 2 | {{'PROPERTY.SIGNALDEFINITIONS.DISPLAY' | translate:property.value}} 3 | PROPERTY.SIGNALDEFINITIONS.EMPTY -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/configuration/properties/task-listeners-display-template.html: -------------------------------------------------------------------------------- 1 | 2 | {{'PROPERTY.TASKLISTENERS.VALUE' | translate:property.value.taskListeners}} 3 | PROPERTY.TASKLISTENERS.EMPTY -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/configuration/properties/form-properties-display-template.html: -------------------------------------------------------------------------------- 1 | 2 | {{'PROPERTY.FORMPROPERTIES.VALUE' | translate:property.value.formProperties}} 3 | PROPERTY.FORMPROPERTIES.EMPTY -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/configuration/properties/event-listeners-display-template.html: -------------------------------------------------------------------------------- 1 | 2 | {{'PROPERTY.EVENTLISTENERS.DISPLAY' | translate:property.value.eventListeners}} 3 | PROPERTY.EVENTLISTENERS.EMPTY -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/configuration/properties/execution-listeners-display-template.html: -------------------------------------------------------------------------------- 1 | 2 | {{'PROPERTY.EXECUTIONLISTENERS.DISPLAY' | translate:property.value.executionListeners}} 3 | PROPERTY.EXECUTIONLISTENERS.EMPTY -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/configuration/properties/default-value-display-template.html: -------------------------------------------------------------------------------- 1 | 2 | {{property.value|limitTo:20}} 3 | ... 4 | PROPERTY.EMPTY -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/configuration/properties/multiinstance-property-write-template.html: -------------------------------------------------------------------------------- 1 | 2 |
3 | 8 |
-------------------------------------------------------------------------------- /src/main/resources/public/editor-app/configuration/properties/string-property-write-mode-template.html: -------------------------------------------------------------------------------- 1 | 2 |
3 | 8 |
-------------------------------------------------------------------------------- /src/main/resources/public/editor-app/configuration/properties/signal-property-write-template.html: -------------------------------------------------------------------------------- 1 |
2 | 4 |
-------------------------------------------------------------------------------- /src/main/resources/public/editor-app/configuration/properties/message-property-write-template.html: -------------------------------------------------------------------------------- 1 |
2 | 4 |
-------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /target/ 2 | !.mvn/wrapper/maven-wrapper.jar 3 | 4 | ### STS ### 5 | .apt_generated 6 | .classpath 7 | .factorypath 8 | .project 9 | .settings 10 | .springBeans 11 | .sts4-cache 12 | 13 | ### IntelliJ IDEA ### 14 | .idea 15 | *.iws 16 | *.iml 17 | *.ipr 18 | 19 | ### NetBeans ### 20 | /nbproject/private/ 21 | /nbbuild/ 22 | /dist/ 23 | /nbdist/ 24 | /.nb-gradle/ 25 | /build/ 26 | -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/libs/angular-translate-storage-cookie/angular-translate-storage-cookie.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * angular-translate - v2.4.2 - 2014-10-21 3 | * http://github.com/angular-translate/angular-translate 4 | * Copyright (c) 2014 ; Licensed MIT 5 | */ 6 | angular.module("pascalprecht.translate").factory("$translateCookieStorage",["$cookieStore",function(a){var b={get:function(b){return a.get(b)},set:function(b,c){a.put(b,c)}};return b}]); -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/libs/es5-shim-15.3.4.5/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "es5-shim", 3 | "homepage": "https://github.com/es-shims/es5-shim", 4 | "version": "2.1.0", 5 | "_release": "2.1.0", 6 | "_resolution": { 7 | "type": "version", 8 | "tag": "v2.1.0", 9 | "commit": "07da727ff7db2a3a25d6bc25d13e374b3bbc99c2" 10 | }, 11 | "_source": "git://github.com/es-shims/es5-shim.git", 12 | "_target": "~2.1.0", 13 | "_originalSource": "es5-shim" 14 | } -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/partials/root-stencil-item-template.html: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | {{group.name}} 11 | -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/libs/es5-shim-15.3.4.5/tests/spec/s-number.js: -------------------------------------------------------------------------------- 1 | describe('Number', function () { 2 | 'use strict'; 3 | 4 | describe('toFixed', function () { 5 | it('should convert numbers correctly', function () { 6 | expect((0.00008).toFixed(3)).toBe('0.000'); 7 | expect((0.9).toFixed(0)).toBe('1'); 8 | expect((1.255).toFixed(2)).toBe('1.25'); 9 | expect((1843654265.0774949).toFixed(5)).toBe('1843654265.07749'); 10 | expect((1000000000000000128).toFixed(0)).toBe('1000000000000000128'); 11 | }); 12 | }); 13 | 14 | }); 15 | -------------------------------------------------------------------------------- /src/main/resources/public/diagram-viewer/js/jstools.js: -------------------------------------------------------------------------------- 1 | if (typeof(console) == "undefined") { 2 | var console = { 3 | info: function(){}, 4 | warn: function(){}, 5 | error: function(){}, 6 | log: function(){}, 7 | time: function(){}, 8 | timeEnd: function(){} 9 | }; 10 | } 11 | 12 | if(!Array.isArray) { 13 | Array.isArray = function (vArg) { 14 | return Object.prototype.toString.call(vArg) === "[object Array]"; 15 | }; 16 | } 17 | 18 | if (!Object.isSVGElement) { 19 | Object.isSVGElement = function(vArg) { 20 | var str = Object.prototype.toString.call(vArg); 21 | return (str.indexOf("[object SVG") == 0); 22 | }; 23 | } 24 | -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/libs/angular-translate-storage-cookie/angular-translate-storage-cookie.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * angular-translate - v2.4.2 - 2014-10-21 3 | * http://github.com/angular-translate/angular-translate 4 | * Copyright (c) 2014 ; Licensed MIT 5 | */ 6 | angular.module('pascalprecht.translate').factory('$translateCookieStorage', [ 7 | '$cookieStore', 8 | function ($cookieStore) { 9 | var $translateCookieStorage = { 10 | get: function (name) { 11 | return $cookieStore.get(name); 12 | }, 13 | set: function (name, value) { 14 | $cookieStore.put(name, value); 15 | } 16 | }; 17 | return $translateCookieStorage; 18 | } 19 | ]); -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/libs/angular-translate-loader-static-files/angular-translate-loader-static-files.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * angular-translate - v2.4.2 - 2014-10-21 3 | * http://github.com/angular-translate/angular-translate 4 | * Copyright (c) 2014 ; Licensed MIT 5 | */ 6 | angular.module("pascalprecht.translate").factory("$translateStaticFilesLoader",["$q","$http",function(a,b){return function(c){if(!c||!angular.isString(c.prefix)||!angular.isString(c.suffix))throw new Error("Couldn't load static files, no prefix or suffix specified!");var d=a.defer();return b(angular.extend({url:[c.prefix,c.key,c.suffix].join(""),method:"GET",params:""},c.$http)).success(function(a){d.resolve(a)}).error(function(){d.reject(c.key)}),d.promise}}]); -------------------------------------------------------------------------------- /src/main/resources/application.yml: -------------------------------------------------------------------------------- 1 | spring: 2 | # 数据库配置 3 | datasource: 4 | driver-class-name: com.mysql.jdbc.Driver 5 | url: "jdbc:mysql://127.0.0.1:3306/activity?characterEncoding=utf8&useSSL=true&serverTimezone=GMT%2B8" 6 | username: root 7 | password: root 8 | jpa: 9 | show-sql: true 10 | hibernate: 11 | ddl-auto: update 12 | main: 13 | allow-bean-definition-overriding: true 14 | # 端口配置 15 | server: 16 | tomcat: 17 | uri-encoding: UTF-8 18 | servlet: 19 | session: 20 | timeout: 10 21 | port: 8080 22 | activiti: 23 | # 自动部署验证设置:true-开启(默认)、false-关闭 24 | check-process-definitions: false 25 | server: 26 | servlet: 27 | context-path: "/activityApi" 28 | -------------------------------------------------------------------------------- /src/main/java/com/yfny/activityapi/ActivityApiApplication.java: -------------------------------------------------------------------------------- 1 | package com.yfny.activityapi; 2 | 3 | import org.activiti.spring.boot.SecurityAutoConfiguration; 4 | import org.springframework.boot.SpringApplication; 5 | import org.springframework.boot.autoconfigure.SpringBootApplication; 6 | import org.springframework.transaction.annotation.EnableTransactionManagement; 7 | 8 | /** 9 | * 启动类 10 | */ 11 | //这里要屏蔽SecurityAutoConfiguration.class,不然登陆Activity-Modeler的时候要输入账号密码 12 | @SpringBootApplication(exclude = {SecurityAutoConfiguration.class}) 13 | @EnableTransactionManagement//起用事务 14 | public class ActivityApiApplication { 15 | 16 | public static void main(String[] args) { 17 | SpringApplication.run(ActivityApiApplication.class, args); 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/libs/angular-translate-loader-static-files/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular-translate-loader-static-files", 3 | "version": "0.1.6", 4 | "main": "./angular-translate-loader-static-files.js", 5 | "dependencies": { 6 | "angular": "1.0.8", 7 | "angular-translate": "~1.1.1" 8 | }, 9 | "homepage": "https://github.com/PascalPrecht/bower-angular-translate-loader-static-files", 10 | "_release": "0.1.6", 11 | "_resolution": { 12 | "type": "version", 13 | "tag": "0.1.6", 14 | "commit": "eaac546d29d6cde45873e6bad9d18cdff071d983" 15 | }, 16 | "_source": "git://github.com/PascalPrecht/bower-angular-translate-loader-static-files.git", 17 | "_target": "0.1.6", 18 | "_originalSource": "angular-translate-loader-static-files" 19 | } -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/libs/angular-translate-storage-cookie/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular-translate-storage-cookie", 3 | "version": "0.1.6", 4 | "main": "./angular-translate-storage-cookie.js", 5 | "dependencies": { 6 | "angular": "1.0.8", 7 | "angular-cookies": "1.0.8", 8 | "angular-translate": "~1.1.1" 9 | }, 10 | "homepage": "https://github.com/PascalPrecht/bower-angular-translate-storage-cookie", 11 | "_release": "0.1.6", 12 | "_resolution": { 13 | "type": "version", 14 | "tag": "0.1.6", 15 | "commit": "fc9ea3275f0f9bf0a60ca073b58488d934a348ac" 16 | }, 17 | "_source": "git://github.com/PascalPrecht/bower-angular-translate-storage-cookie.git", 18 | "_target": "0.1.6", 19 | "_originalSource": "angular-translate-storage-cookie" 20 | } -------------------------------------------------------------------------------- /src/main/java/com/yfny/activityapi/utils/UtilMisc.java: -------------------------------------------------------------------------------- 1 | package com.yfny.activityapi.utils; 2 | 3 | import java.util.HashMap; 4 | import java.util.Map; 5 | 6 | /** 7 | *

8 | * Created by jinboYu on 2019/3/13 9 | */ 10 | public class UtilMisc { 11 | 12 | public static Map toMap(String flowId, V1 value1, String activityStartTime, V2 value2) { 13 | return populateMap(new HashMap(), flowId, value1, activityStartTime, value2); 14 | } 15 | @SuppressWarnings("unchecked") 16 | private static Map populateMap(Map map, Object... data) { 17 | for (int i = 0; i < data.length;) { 18 | map.put((String) data[i++], (V) data[i++]); 19 | } 20 | return map; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/configuration/properties/text-popup.html: -------------------------------------------------------------------------------- 1 | 2 |

-------------------------------------------------------------------------------- /src/main/resources/public/editor-app/configuration/properties/sequenceflow-order-popup.html: -------------------------------------------------------------------------------- 1 | 2 | 48 | -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/configuration/properties-signal-scope-controller.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Activiti Modeler component part of the Activiti project 3 | * Copyright 2005-2014 Alfresco Software, Ltd. All rights reserved. 4 | * 5 | * This library is free software; you can redistribute it and/or 6 | * modify it under the terms of the GNU Lesser General Public 7 | * License as published by the Free Software Foundation; either 8 | * version 2.1 of the License, or (at your option) any later version. 9 | * 10 | * This library is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 | * Lesser General Public License for more details. 14 | 15 | * You should have received a copy of the GNU Lesser General Public 16 | * License along with this library; if not, write to the Free Software 17 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 18 | */ 19 | angular.module('activitiModeler').controller('ActivitiSignalRefCtrl', [ '$scope', function($scope) { 20 | 21 | // Find the parent shape on which the signal definitions are defined 22 | var signalDefinitionsProperty = undefined; 23 | var parent = $scope.selectedShape; 24 | while (parent !== null && parent !== undefined && signalDefinitionsProperty === undefined) { 25 | if (parent.properties && parent.properties['oryx-signaldefinitions']) { 26 | signalDefinitionsProperty = parent.properties['oryx-signaldefinitions']; 27 | } else { 28 | parent = parent.parent; 29 | } 30 | } 31 | 32 | try { 33 | signalDefinitionsProperty = JSON.parse(signalDefinitionsProperty); 34 | if (typeof signalDefinitionsProperty == 'string') { 35 | signalDefinitionsProperty = JSON.parse(signalDefinitionsProperty); 36 | } 37 | } catch (err) { 38 | // Do nothing here, just to be sure we try-catch it 39 | } 40 | 41 | $scope.signalDefinitions = signalDefinitionsProperty; 42 | 43 | 44 | $scope.signalChanged = function() { 45 | $scope.updatePropertyInModel($scope.property); 46 | }; 47 | }]); -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/configuration/properties-message-scope-controller.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Activiti Modeler component part of the Activiti project 3 | * Copyright 2005-2014 Alfresco Software, Ltd. All rights reserved. 4 | * 5 | * This library is free software; you can redistribute it and/or 6 | * modify it under the terms of the GNU Lesser General Public 7 | * License as published by the Free Software Foundation; either 8 | * version 2.1 of the License, or (at your option) any later version. 9 | * 10 | * This library is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 | * Lesser General Public License for more details. 14 | 15 | * You should have received a copy of the GNU Lesser General Public 16 | * License along with this library; if not, write to the Free Software 17 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 18 | */ 19 | 20 | angular.module('activitiModeler').controller('ActivitiMessageRefCtrl', [ '$scope', function($scope) { 21 | 22 | // Find the parent shape on which the message definitions are defined 23 | var messageDefinitionsProperty = undefined; 24 | var parent = $scope.selectedShape; 25 | while (parent !== null && parent !== undefined && messageDefinitionsProperty === undefined) { 26 | if (parent.properties && parent.properties['oryx-messagedefinitions']) { 27 | messageDefinitionsProperty = parent.properties['oryx-messagedefinitions']; 28 | } else { 29 | parent = parent.parent; 30 | } 31 | } 32 | 33 | try { 34 | messageDefinitionsProperty = JSON.parse(messageDefinitionsProperty); 35 | if (typeof messageDefinitionsProperty == 'string') { 36 | messageDefinitionsProperty = JSON.parse(messageDefinitionsProperty); 37 | } 38 | } catch (err) { 39 | // Do nothing here, just to be sure we try-catch it 40 | } 41 | 42 | $scope.messageDefinitions = messageDefinitionsProperty; 43 | 44 | 45 | $scope.messageChanged = function() { 46 | $scope.updatePropertyInModel($scope.property); 47 | }; 48 | }]); -------------------------------------------------------------------------------- /src/main/java/com/yfny/activityapi/service/FlowTaskService.java: -------------------------------------------------------------------------------- 1 | package com.yfny.activityapi.service; 2 | 3 | import org.activiti.engine.task.Task; 4 | import org.springframework.transaction.annotation.Propagation; 5 | import org.springframework.transaction.annotation.Transactional; 6 | 7 | import java.util.List; 8 | import java.util.Map; 9 | 10 | /** 11 | * 流程任务Service 12 | *

13 | * Created by jinboYu on 2019/3/26 14 | */ 15 | @Transactional(propagation= Propagation.REQUIRED,rollbackFor=Exception.class) 16 | public interface FlowTaskService { 17 | 18 | /** 19 | * 创建任务 20 | * @param userId 任务创建人ID 21 | * @param key 部署流程ID 22 | * @param variables 任务变量 23 | * @return 返回任务ID 24 | * @throws Exception 25 | */ 26 | String createTask(String userId, String key, Map variables) throws Exception; 27 | 28 | /** 29 | * 完成任务 30 | * @param taskId 任务ID 31 | * @param variables 任务变量 32 | * @return 返回任务ID 33 | * @throws Exception 34 | */ 35 | String fulfilTask(String taskId, Map variables) throws Exception; 36 | 37 | /** 38 | * 取消任务 39 | * @param taskId 任务ID 40 | * @return 1为取消成功,2为取消失败 41 | * @throws Exception 42 | */ 43 | int revocationTask(String taskId) throws Exception; 44 | 45 | /** 46 | * 创建用户 47 | * @param userId 用户ID 48 | * @return 1为创建成功。2为创建失败 49 | * @throws Exception 50 | */ 51 | int createUser(String userId) throws Exception; 52 | 53 | /** 54 | * 根据用户ID查询任务,带分页 55 | * @param userId 用户ID 56 | * @param pageNum 当前页 57 | * @param pageSize 显示数量 58 | * @return 59 | * @throws Exception 60 | */ 61 | String getDemandByUserId( String userId,int pageNum, int pageSize)throws Exception; 62 | 63 | /** 64 | * 根据分组ID获取任务列表,带分页 65 | * 66 | * @param groupId 分组ID 67 | * @param pageNum 当前页数 68 | * @param pageSize 显示数量 69 | * @return 70 | */ 71 | String getDemandByGroupId(String groupId,int pageNum,int pageSize)throws Exception; 72 | 73 | List getTaskListByUserId(String userId, int pageNum, int pageSize)throws Exception; 74 | } 75 | -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/configuration/properties-condition-expression-controller.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Activiti Modeler component part of the Activiti project 3 | * Copyright 2005-2014 Alfresco Software, Ltd. All rights reserved. 4 | * 5 | * This library is free software; you can redistribute it and/or 6 | * modify it under the terms of the GNU Lesser General Public 7 | * License as published by the Free Software Foundation; either 8 | * version 2.1 of the License, or (at your option) any later version. 9 | * 10 | * This library is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 | * Lesser General Public License for more details. 14 | 15 | * You should have received a copy of the GNU Lesser General Public 16 | * License along with this library; if not, write to the Free Software 17 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 18 | */ 19 | 20 | /* 21 | * Condition expression 22 | */ 23 | 24 | var KisBpmConditionExpressionCtrl = [ '$scope', '$modal', function($scope, $modal) { 25 | 26 | // Config for the modal window 27 | var opts = { 28 | template: 'editor-app/configuration/properties/condition-expression-popup.html?version=' + Date.now(), 29 | scope: $scope 30 | }; 31 | 32 | // Open the dialog 33 | $modal(opts); 34 | }]; 35 | 36 | var KisBpmConditionExpressionPopupCtrl = [ '$scope', '$translate', '$http', function($scope, $translate, $http) { 37 | 38 | // Put json representing condition on scope 39 | if ($scope.property.value !== undefined && $scope.property.value !== null) { 40 | 41 | $scope.conditionExpression = {value: $scope.property.value}; 42 | 43 | } else { 44 | $scope.conditionExpression = {value: ''}; 45 | } 46 | 47 | $scope.save = function() { 48 | $scope.property.value = $scope.conditionExpression.value; 49 | $scope.updatePropertyInModel($scope.property); 50 | $scope.close(); 51 | }; 52 | 53 | // Close button handler 54 | $scope.close = function() { 55 | $scope.property.mode = 'read'; 56 | $scope.$hide(); 57 | }; 58 | }]; -------------------------------------------------------------------------------- /src/main/resources/public/diagram-viewer/style.css: -------------------------------------------------------------------------------- 1 | body { background: #fafafa; color: #708090; /* font: 300 100.1% "Helvetica Neue", Helvetica, "Arial Unicode MS", Arial, sans-serif; */ font-family: Verdana, sans-serif, Arial; font-size: 10px; } .wrapper{ height: 100%; position: relative; width: 100%; } /* #holder { height: 480px; width: 640px; b_ackground: #F8F8FF; -moz-border-radius: 10px; -webkit-border-radius: 10px; -webkit-box-shadow: 0 1px 3px #666; background: #DDD url(./images/bg.png); /* background: #DDD url(./images/checker-bg.png); * / b_order:0px solid #dedede; } */ div.diagramHolder { float:left; } div.diagram{ border:1px solid #dedede; margin: 5px; padding: 5px; background: #FFF; } div.diagram.hidden{ display:none; } svg { background: #DDD url(./images/bg.png); } div.diagram-info { float:left; position: relative; padding: 5px; } /* Breadcrumbs */ #diagramBreadCrumbs { margin-left: 2px; margin-right: 2px; margin-top: 10px; } #diagramBreadCrumbs ul { list-style: none; background-color: white; border: 1px solid #DEDEDE; border-color: #C0C2C5; margin: 0; margin-bottom: 10px; margin-left: 0; -webkit-padding-start: 0px; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; } #diagramBreadCrumbs li { /*text-decoration: underline;*/ display: inline-block; vertical-align: middle; padding-left: .75em; padding-right: 0; cursor: pointer; } #diagramBreadCrumbs li.selected { color: #9370DB; color: #4876FF; color: #4F94CD; font-weight: bold; } #diagramBreadCrumbs li span { background: url(images/breadcrumbs.png) no-repeat 100% 50%; display: block; padding: .5em 15px .5em 0; } /* Progress bar */ .ui-progressbar { height: 25px; /*height:2em; text-align: left; overflow: hidden; */ background: white; border: 1px solid #949DAD; margin: 2px; overflow: hidden; padding: 1px; position: relative; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; } .ui-progressbar .ui-progressbar-value { m_argin: -1px; height:100%; background: #D4E4FF; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; } .ui-widget-header a { color: #222222/*{fcHeader}*/; } .ui-progressbar .ui-progressbar-label{ position: absolute; margin-top: 7px; border:0px solid red; width: 100%; text-align: center; } -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/libs/angular-cookies_1.2.13/angular-cookies.min.js.map: -------------------------------------------------------------------------------- 1 | { 2 | "version":3, 3 | "file":"angular-cookies.min.js", 4 | "lineCount":7, 5 | "mappings":"A;;;;;aAKC,SAAQ,CAACA,CAAD,CAASC,CAAT,CAAkBC,CAAlB,CAA6B,CAoBtCD,CAAAE,OAAA,CAAe,WAAf,CAA4B,CAAC,IAAD,CAA5B,CAAAC,QAAA,CA4BW,UA5BX,CA4BuB,CAAC,YAAD,CAAe,UAAf,CAA2B,QAAS,CAACC,CAAD,CAAaC,CAAb,CAAuB,CAAA,IACxEC,EAAU,EAD8D,CAExEC,EAAc,EAF0D,CAGxEC,CAHwE,CAIxEC,EAAU,CAAA,CAJ8D,CAKxEC,EAAOV,CAAAU,KALiE,CAMxEC,EAAcX,CAAAW,YAGlBN,EAAAO,UAAA,CAAmB,QAAQ,EAAG,CAC5B,IAAIC,EAAiBR,CAAAC,QAAA,EACjBE,EAAJ,EAA0BK,CAA1B,GACEL,CAGA,CAHqBK,CAGrB,CAFAH,CAAA,CAAKG,CAAL,CAAqBN,CAArB,CAEA,CADAG,CAAA,CAAKG,CAAL,CAAqBP,CAArB,CACA,CAAIG,CAAJ,EAAaL,CAAAU,OAAA,EAJf,CAF4B,CAA9B,CAAA,EAUAL,EAAA,CAAU,CAAA,CAKVL,EAAAW,OAAA,CASAC,QAAa,EAAG,CAAA,IACVC,CADU,CAEVC,CAFU,CAIVC,CAGJ,KAAKF,CAAL,GAAaV,EAAb,CACMI,CAAA,CAAYL,CAAA,CAAQW,CAAR,CAAZ,CAAJ,EACEZ,CAAAC,QAAA,CAAiBW,CAAjB,CAAuBhB,CAAvB,CAKJ,KAAIgB,CAAJ,GAAYX,EAAZ,CAEE,CADAY,CACK,CADGZ,CAAA,CAAQW,CAAR,CACH,CAAAjB,CAAAoB,SAAA,CAAiBF,CAAjB,CAAL,EAMWA,CANX,GAMqBX,CAAA,CAAYU,CAAZ,CANrB,GAOEZ,CAAAC,QAAA,CAAiBW,CAAjB,CAAuBC,CAAvB,CACA,CAAAC,CAAA,CAAU,CAAA,CARZ,EACMnB,CAAAqB,UAAA,CAAkBd,CAAA,CAAYU,CAAZ,CAAlB,CAAJ,CACEX,CAAA,CAAQW,CAAR,CADF,CACkBV,CAAA,CAAYU,CAAZ,CADlB,CAGE,OAAOX,CAAA,CAAQW,CAAR,CASb,IAAIE,CAAJ,CAIE,IAAKF,CAAL,GAFAK,EAEahB,CAFID,CAAAC,QAAA,EAEJA,CAAAA,CAAb,CACMA,CAAA,CAAQW,CAAR,CAAJ,GAAsBK,CAAA,CAAeL,CAAf,CAAtB,GAEMN,CAAA,CAAYW,CAAA,CAAeL,CAAf,CAAZ,CAAJ,CACE,OAAOX,CAAA,CAAQW,CAAR,CADT,CAGEX,CAAA,CAAQW,CAAR,CAHF,CAGkBK,CAAA,CAAeL,CAAf,CALpB,CAlCU,CAThB,CAEA;MAAOX,EA1BqE,CAA3D,CA5BvB,CAAAH,QAAA,CA4HW,cA5HX,CA4H2B,CAAC,UAAD,CAAa,QAAQ,CAACoB,CAAD,CAAW,CAErD,MAAO,KAYAC,QAAQ,CAACC,CAAD,CAAM,CAEjB,MAAO,CADHP,CACG,CADKK,CAAA,CAASE,CAAT,CACL,EAAQzB,CAAA0B,SAAA,CAAiBR,CAAjB,CAAR,CAAkCA,CAFxB,CAZd,KA4BAS,QAAQ,CAACF,CAAD,CAAMP,CAAN,CAAa,CACxBK,CAAA,CAASE,CAAT,CAAA,CAAgBzB,CAAA4B,OAAA,CAAeV,CAAf,CADQ,CA5BrB,QA0CGW,QAAQ,CAACJ,CAAD,CAAM,CACpB,OAAOF,CAAA,CAASE,CAAT,CADa,CA1CjB,CAF8C,CAAhC,CA5H3B,CApBsC,CAArC,CAAA,CAoME1B,MApMF,CAoMUA,MAAAC,QApMV;", 6 | "sources":["angular-cookies.js"], 7 | "names":["window","angular","undefined","module","factory","$rootScope","$browser","cookies","lastCookies","lastBrowserCookies","runEval","copy","isUndefined","addPollFn","currentCookies","$apply","$watch","push","name","value","updated","isString","isDefined","browserCookies","$cookies","get","key","fromJson","put","toJson","remove"] 8 | } -------------------------------------------------------------------------------- /src/main/java/com/yfny/activityapi/controller/model/StencilsetRestResource.java: -------------------------------------------------------------------------------- 1 | /* Licensed under the Apache License, Version 2.0 (the "License"); 2 | * you may not use this file except in compliance with the License. 3 | * You may obtain a copy of the License at 4 | * 5 | * http://www.apache.org/licenses/LICENSE-2.0 6 | * 7 | * Unless required by applicable law or agreed to in writing, software 8 | * distributed under the License is distributed on an "AS IS" BASIS, 9 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 10 | * See the License for the specific language governing permissions and 11 | * limitations under the License. 12 | */ 13 | package com.yfny.activityapi.controller.model; 14 | 15 | import java.io.InputStream; 16 | 17 | import org.activiti.engine.ActivitiException; 18 | import org.apache.commons.io.IOUtils; 19 | import org.springframework.web.bind.annotation.RequestMapping; 20 | import org.springframework.web.bind.annotation.RequestMethod; 21 | import org.springframework.web.bind.annotation.ResponseBody; 22 | import org.springframework.web.bind.annotation.RestController; 23 | 24 | /** 25 | * @author Tijs Rademakers 26 | */ 27 | @RestController 28 | public class StencilsetRestResource { 29 | 30 | // 源码 31 | // @RequestMapping(value="/editor/stencilset", method = RequestMethod.GET, produces = "application/json;charset=utf-8") 32 | // public @ResponseBody String getStencilset() { 33 | // InputStream stencilsetStream = this.getClass().getClassLoader().getResourceAsStream("stencilset.json"); 34 | // try { 35 | // return IOUtils.toString(stencilsetStream, "utf-8"); 36 | // } catch (Exception e) { 37 | // throw new ActivitiException("Error while loading stencil set", e); 38 | // } 39 | // } 40 | 41 | //修改源码解决Activiti6.0.0及以上版本与activiti-modeler冲突 42 | @RequestMapping(value = "/editor/stencilset", method = RequestMethod.GET, produces = "application/json;charset=utf-8") 43 | public @ResponseBody 44 | String getStencilset() { 45 | //stencilset.json为Model中的工具栏的名称字符,这里在resources下面查找 46 | InputStream stencilsetStream = this.getClass().getClassLoader().getResourceAsStream("stencilset.json"); 47 | try { 48 | return IOUtils.toString(stencilsetStream, "utf-8"); 49 | } catch (Exception e) { 50 | throw new ActivitiException("Error while loading stencil set", e); 51 | } 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /src/main/java/com/yfny/activityapi/controller/FlowDiagramController.java: -------------------------------------------------------------------------------- 1 | package com.yfny.activityapi.controller; 2 | 3 | import com.yfny.activityapi.service.FlowDiagramService; 4 | import org.springframework.beans.factory.annotation.Autowired; 5 | import org.springframework.web.bind.annotation.GetMapping; 6 | import org.springframework.web.bind.annotation.PathVariable; 7 | import org.springframework.web.bind.annotation.RequestMapping; 8 | import org.springframework.web.bind.annotation.RestController; 9 | 10 | import javax.imageio.ImageIO; 11 | import javax.servlet.http.HttpServletResponse; 12 | import java.awt.image.BufferedImage; 13 | import java.io.InputStream; 14 | import java.io.OutputStream; 15 | 16 | /** 17 | * 流程图相关Controller 18 | *

19 | * Created by jinboYu on 2019/3/28 20 | */ 21 | @RestController 22 | @RequestMapping(value = "/flowDiagram") 23 | public class FlowDiagramController { 24 | 25 | //流程图相关Service 26 | @Autowired 27 | private FlowDiagramService flowDiagramService; 28 | 29 | /** 30 | * 根据流程实例ID获取流程图,高亮当前任务节点及历史节点 31 | * 32 | * @param taskId 任务ID 33 | * @param response 34 | */ 35 | @GetMapping(value = "/getImage/{taskId}") 36 | public void getImage(@PathVariable String taskId, 37 | HttpServletResponse response) throws Exception { 38 | //根据当前流程实例ID获取图片输入流 39 | InputStream is = flowDiagramService.getResourceDiagramInputStream(taskId); 40 | if (is == null) 41 | return; 42 | response.setContentType("image/png"); 43 | BufferedImage image = ImageIO.read(is); 44 | OutputStream out = response.getOutputStream(); 45 | ImageIO.write(image, "png", out); 46 | is.close(); 47 | out.close(); 48 | } 49 | 50 | /** 51 | * 根据流程实例ID生成流程图,只高亮当前任务节点 52 | * 53 | * @param taskId 任务ID 54 | * @param response 55 | */ 56 | @GetMapping(value = "/getDiagram/{taskId}") 57 | public void getDiagram(@PathVariable String taskId, 58 | HttpServletResponse response) throws Exception { 59 | //根据当前流程实例ID获取图片输入流 60 | InputStream is = flowDiagramService.getDiagram(taskId); 61 | if (is == null) 62 | return; 63 | response.setContentType("image/png"); 64 | BufferedImage image = ImageIO.read(is); 65 | OutputStream out = response.getOutputStream(); 66 | ImageIO.write(image, "png", out); 67 | is.close(); 68 | out.close(); 69 | } 70 | 71 | } 72 | -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/configuration/properties/subprocess-reference-popup.html: -------------------------------------------------------------------------------- 1 | 2 |

44 | -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/configuration/properties/message-definitions-popup.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/editor-controller.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Activiti Modeler component part of the Activiti project 3 | * Copyright 2005-2014 Alfresco Software, Ltd. All rights reserved. 4 | * 5 | * This library is free software; you can redistribute it and/or 6 | * modify it under the terms of the GNU Lesser General Public 7 | * License as published by the Free Software Foundation; either 8 | * version 2.1 of the License, or (at your option) any later version. 9 | * 10 | * This library is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 | * Lesser General Public License for more details. 14 | 15 | * You should have received a copy of the GNU Lesser General Public 16 | * License along with this library; if not, write to the Free Software 17 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 18 | */ 19 | 'use strict'; 20 | 21 | angular.module('activitiModeler') 22 | .controller('EditorUnsavedChangesPopupCrtl', ['$rootScope', '$scope', '$http', '$location', '$window', function ($rootScope, $scope, $http, $location, $window) { 23 | 24 | $scope.ok = function () { 25 | if ($scope.handleResponseFunction) { 26 | $scope.handleResponseFunction(true); 27 | 28 | // Also clear any 'onbeforeunload', added by oryx 29 | $window.onbeforeunload = undefined; 30 | } 31 | $scope.$hide(); 32 | }; 33 | 34 | $scope.cancel = function () { 35 | if ($scope.handleResponseFunction) { 36 | $scope.handleResponseFunction(false); 37 | } 38 | $scope.$hide(); 39 | }; 40 | }]); 41 | 42 | activitiModule 43 | .directive('autoFocus', ['$timeout', '$parse', function($timeout, $parse) { 44 | return { 45 | restrict: 'AC', 46 | compile: function($element, attr) { 47 | 48 | return function(_scope, _element, _attrs) { 49 | var firstChild = (_attrs.focusFirstChild !== undefined); 50 | $timeout(function () { 51 | if (firstChild) { 52 | // look for first input-element in child-tree and focus that 53 | var inputs = _element.find('input'); 54 | if (inputs && inputs.length > 0) { 55 | inputs[0].focus(); 56 | } 57 | } else { 58 | // Focus element where the directive is put on 59 | _element[0].focus(); 60 | } 61 | }, 100); 62 | } 63 | } 64 | }; 65 | }]); 66 | -------------------------------------------------------------------------------- /src/main/resources/public/diagram-viewer/js/ActivitiRest.js: -------------------------------------------------------------------------------- 1 | var ActivitiRest = { 2 | options: {}, 3 | getProcessDefinitionByKey: function(processDefinitionKey, callback) { 4 | var url = Lang.sub(this.options.processDefinitionByKeyUrl, {processDefinitionKey: processDefinitionKey}); 5 | 6 | $.ajax({ 7 | url: url, 8 | dataType: 'jsonp', 9 | cache: false, 10 | async: true, 11 | success: function(data, textStatus) { 12 | var processDefinition = data; 13 | if (!processDefinition) { 14 | console.error("Process definition '" + processDefinitionKey + "' not found"); 15 | } else { 16 | callback.apply({processDefinitionId: processDefinition.id}); 17 | } 18 | } 19 | }).done(function(data, textStatus) { 20 | console.log("ajax done"); 21 | }).fail(function(jqXHR, textStatus, error){ 22 | console.error('Get diagram layout['+processDefinitionKey+'] failure: ', textStatus, 'error: ', error, jqXHR); 23 | }); 24 | }, 25 | 26 | getProcessDefinition: function(processDefinitionId, callback) { 27 | var url = Lang.sub(this.options.processDefinitionUrl, {processDefinitionId: processDefinitionId}); 28 | 29 | $.ajax({ 30 | url: url, 31 | dataType: 'jsonp', 32 | cache: false, 33 | async: true, 34 | success: function(data, textStatus) { 35 | var processDefinitionDiagramLayout = data; 36 | if (!processDefinitionDiagramLayout) { 37 | console.error("Process definition diagram layout '" + processDefinitionId + "' not found"); 38 | return; 39 | } else { 40 | callback.apply({processDefinitionDiagramLayout: processDefinitionDiagramLayout}); 41 | } 42 | } 43 | }).done(function(data, textStatus) { 44 | console.log("ajax done"); 45 | }).fail(function(jqXHR, textStatus, error){ 46 | console.log('Get diagram layout['+processDefinitionId+'] failure: ', textStatus, jqXHR); 47 | }); 48 | }, 49 | 50 | getHighLights: function(processInstanceId, callback) { 51 | var url = Lang.sub(this.options.processInstanceHighLightsUrl, {processInstanceId: processInstanceId}); 52 | 53 | $.ajax({ 54 | url: url, 55 | dataType: 'jsonp', 56 | cache: false, 57 | async: true, 58 | success: function(data, textStatus) { 59 | console.log("ajax returned data"); 60 | var highLights = data; 61 | if (!highLights) { 62 | console.log("highLights not found"); 63 | return; 64 | } else { 65 | callback.apply({highLights: highLights}); 66 | } 67 | } 68 | }).done(function(data, textStatus) { 69 | console.log("ajax done"); 70 | }).fail(function(jqXHR, textStatus, error){ 71 | console.log('Get HighLights['+processInstanceId+'] failure: ', textStatus, jqXHR); 72 | }); 73 | } 74 | }; -------------------------------------------------------------------------------- /src/main/java/com/yfny/activityapi/controller/model/ModelController.java: -------------------------------------------------------------------------------- 1 | package com.yfny.activityapi.controller.model; 2 | 3 | import com.fasterxml.jackson.databind.node.ObjectNode; 4 | import com.yfny.activityapi.service.ModelService; 5 | import org.activiti.engine.repository.Model; 6 | import org.springframework.beans.factory.annotation.Autowired; 7 | import org.springframework.http.HttpStatus; 8 | import org.springframework.web.bind.annotation.*; 9 | 10 | import javax.servlet.http.HttpServletRequest; 11 | import javax.servlet.http.HttpServletResponse; 12 | import java.util.List; 13 | 14 | /** 15 | * 流程模型Controller 16 | *

17 | * Created by jinboYu on 2019/3/28 18 | */ 19 | @RestController 20 | @RequestMapping(value = "/model") 21 | public class ModelController { 22 | 23 | @Autowired 24 | private ModelService modelService; 25 | 26 | 27 | /** 28 | * 创建流程模型 29 | * @param request 30 | * @param response 31 | * @throws Exception 32 | */ 33 | @GetMapping("/create") 34 | public void createModel(HttpServletRequest request, HttpServletResponse response) throws Exception{ 35 | modelService.createModel(request,response); 36 | } 37 | 38 | 39 | @GetMapping(value="/{modelId}/json", produces = "application/json") 40 | public ObjectNode getEditorJson(@PathVariable String modelId) throws Exception { 41 | return modelService.getEditorJson(modelId); 42 | } 43 | 44 | /** 45 | * 获取流程模型,带分页 46 | * @param pageNum 当前页 47 | * @param pageSize 48 | * @return 49 | * @throws Exception 50 | */ 51 | @GetMapping(value = "/selectModel/{pageNum}/{pageSize}") 52 | public List selectModel(@PathVariable int pageNum,@PathVariable int pageSize) throws Exception{ 53 | return modelService.selectModel(pageNum,pageSize); 54 | } 55 | 56 | /** 57 | * 保存流程模型 58 | * @param modelId 59 | * @param name 60 | * @param description 61 | * @param json_xml 62 | * @param svg_xml 63 | * @return 64 | * @throws Exception 65 | */ 66 | @PutMapping(value="/{modelId}/save") 67 | @ResponseStatus(value = HttpStatus.OK) 68 | public int saveModel(@PathVariable String modelId, String name, String description, String json_xml, String svg_xml) throws Exception { 69 | return modelService.saveModel(modelId,name,description,json_xml,svg_xml); 70 | } 71 | 72 | /** 73 | * 部署流程模型 74 | * @param modelId 75 | * @return 76 | * @throws Exception 77 | */ 78 | @GetMapping(value = "/deployModel/{modelId}") 79 | public int deployModel(@PathVariable String modelId) throws Exception { 80 | return modelService.deployModel(modelId); 81 | } 82 | 83 | } 84 | -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/plugins.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/libs/jquery.autogrow-textarea.js: -------------------------------------------------------------------------------- 1 | (function($) 2 | { 3 | /** 4 | * Auto-growing textareas; technique ripped from Facebook 5 | * 6 | * http://github.com/jaz303/jquery-grab-bag/tree/master/javascripts/jquery.autogrow-textarea.js 7 | */ 8 | $.fn.autogrow = function(options) 9 | { 10 | return this.filter('textarea').each(function() 11 | { 12 | var self = this; 13 | var $self = $(self); 14 | var minHeight = $self.height(); 15 | var noFlickerPad = $self.hasClass('autogrow-short') ? 0 : parseInt($self.css('lineHeight')) || 0; 16 | 17 | var shadow = $('

').css({ 18 | position: 'absolute', 19 | top: -10000, 20 | left: -10000, 21 | width: $self.width(), 22 | fontSize: $self.css('fontSize'), 23 | fontFamily: $self.css('fontFamily'), 24 | fontWeight: $self.css('fontWeight'), 25 | lineHeight: $self.css('lineHeight'), 26 | resize: 'none', 27 | 'word-wrap': 'break-word' 28 | }).appendTo(document.body); 29 | 30 | var update = function(event) 31 | { 32 | var times = function(string, number) 33 | { 34 | for (var i=0, r=''; i/g, '>') 40 | .replace(/&/g, '&') 41 | .replace(/\n$/, '
 ') 42 | .replace(/\n/g, '
') 43 | .replace(/ {2,}/g, function(space){ return times(' ', space.length - 1) + ' ' }); 44 | 45 | // Did enter get pressed? Resize in this keydown event so that the flicker doesn't occur. 46 | if (event && event.data && event.data.event === 'keydown' && event.keyCode === 13) { 47 | val += '
'; 48 | } 49 | 50 | shadow.css('width', $self.width()); 51 | shadow.html(val + (noFlickerPad === 0 ? '...' : '')); // Append '...' to resize pre-emptively. 52 | $self.height(Math.max(shadow.height() + noFlickerPad, minHeight)); 53 | } 54 | 55 | $self.change(update).keyup(update).keydown({event:'keydown'},update); 56 | $(window).resize(update); 57 | 58 | update(); 59 | }); 60 | }; 61 | })(jQuery); -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/configuration/properties/assignment-popup.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/libs/es5-shim-15.3.4.5/tests/lib/jasmine.css: -------------------------------------------------------------------------------- 1 | body { 2 | font-family: "Helvetica Neue Light", "Lucida Grande", "Calibri", "Arial", sans-serif; 3 | } 4 | 5 | 6 | .jasmine_reporter a:visited, .jasmine_reporter a { 7 | color: #303; 8 | } 9 | 10 | .jasmine_reporter a:hover, .jasmine_reporter a:active { 11 | color: blue; 12 | } 13 | 14 | .run_spec { 15 | float:right; 16 | padding-right: 5px; 17 | font-size: .8em; 18 | text-decoration: none; 19 | } 20 | 21 | .jasmine_reporter { 22 | margin: 0 5px; 23 | } 24 | 25 | .banner { 26 | color: #303; 27 | background-color: #fef; 28 | padding: 5px; 29 | } 30 | 31 | .logo { 32 | float: left; 33 | font-size: 1.1em; 34 | padding-left: 5px; 35 | } 36 | 37 | .logo .version { 38 | font-size: .6em; 39 | padding-left: 1em; 40 | } 41 | 42 | .runner.running { 43 | background-color: yellow; 44 | } 45 | 46 | 47 | .options { 48 | text-align: right; 49 | font-size: .8em; 50 | } 51 | 52 | 53 | 54 | 55 | .suite { 56 | border: 1px outset gray; 57 | margin: 5px 0; 58 | padding-left: 1em; 59 | } 60 | 61 | .suite .suite { 62 | margin: 5px; 63 | } 64 | 65 | .suite.passed { 66 | background-color: #dfd; 67 | } 68 | 69 | .suite.failed { 70 | background-color: #fdd; 71 | } 72 | 73 | .spec { 74 | margin: 5px; 75 | padding-left: 1em; 76 | clear: both; 77 | } 78 | 79 | .spec.failed, .spec.passed, .spec.skipped { 80 | padding-bottom: 5px; 81 | border: 1px solid gray; 82 | } 83 | 84 | .spec.failed { 85 | background-color: #fbb; 86 | border-color: red; 87 | } 88 | 89 | .spec.passed { 90 | background-color: #bfb; 91 | border-color: green; 92 | } 93 | 94 | .spec.skipped { 95 | background-color: #bbb; 96 | } 97 | 98 | .messages { 99 | border-left: 1px dashed gray; 100 | padding-left: 1em; 101 | padding-right: 1em; 102 | } 103 | 104 | .passed { 105 | background-color: #cfc; 106 | display: none; 107 | } 108 | 109 | .failed { 110 | background-color: #fbb; 111 | } 112 | 113 | .skipped { 114 | color: #777; 115 | background-color: #eee; 116 | display: none; 117 | } 118 | 119 | 120 | /*.resultMessage {*/ 121 | /*white-space: pre;*/ 122 | /*}*/ 123 | 124 | .resultMessage span.result { 125 | display: block; 126 | line-height: 2em; 127 | color: black; 128 | } 129 | 130 | .resultMessage .mismatch { 131 | color: black; 132 | } 133 | 134 | .stackTrace { 135 | white-space: pre; 136 | font-size: .8em; 137 | margin-left: 10px; 138 | max-height: 5em; 139 | overflow: auto; 140 | border: 1px inset red; 141 | padding: 1em; 142 | background: #eef; 143 | } 144 | 145 | .finished-at { 146 | padding-left: 1em; 147 | font-size: .6em; 148 | } 149 | 150 | .show-passed .passed, 151 | .show-skipped .skipped { 152 | display: block; 153 | } 154 | 155 | 156 | #jasmine_content { 157 | position:fixed; 158 | right: 100%; 159 | } 160 | 161 | .runner { 162 | border: 1px solid gray; 163 | display: block; 164 | margin: 5px 0; 165 | padding: 2px 0 2px 10px; 166 | } 167 | -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/configuration/properties/signal-definitions-popup.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/test/java/com/yfny/activityapi/ActivitiyApiApplicationTests.java: -------------------------------------------------------------------------------- 1 | package com.yfny.activityapi; 2 | 3 | import org.activiti.engine.HistoryService; 4 | import org.activiti.engine.IdentityService; 5 | import org.activiti.engine.ProcessEngine; 6 | import org.activiti.engine.ProcessEngines; 7 | import org.activiti.engine.history.HistoricProcessInstance; 8 | import org.activiti.engine.identity.Group; 9 | import org.junit.Test; 10 | import org.junit.runner.RunWith; 11 | import org.springframework.boot.test.context.SpringBootTest; 12 | import org.springframework.test.context.junit4.SpringRunner; 13 | 14 | import java.io.*; 15 | import java.util.List; 16 | 17 | 18 | @RunWith(SpringRunner.class) 19 | @SpringBootTest 20 | public class ActivitiyApiApplicationTests { 21 | 22 | @Test 23 | public void contextLoads() { 24 | } 25 | 26 | /** 27 | * 创建分组 28 | */ 29 | @Test 30 | public void createGroup(){ 31 | ProcessEngine engine = ProcessEngines.getDefaultProcessEngine(); 32 | IdentityService is = engine.getIdentityService(); 33 | for (int i=0;i<10;i++){ 34 | Group group = is.newGroup(String.valueOf(i)); 35 | group.setName("groupName_"+i); 36 | group.setType("groupType_"+i); 37 | is.saveGroup(group); 38 | } 39 | engine.close(); 40 | } 41 | 42 | /** 43 | * 自定义条件查询 44 | */ 45 | @Test 46 | public void selectGroup(){ 47 | ProcessEngine engine = ProcessEngines.getDefaultProcessEngine(); 48 | IdentityService is = engine.getIdentityService(); 49 | List groups = is.createNativeGroupQuery().sql("SELECT * FROM act_id_group WHERE NAME_ LIKE #{name}").parameter("name","%groupName%").list(); 50 | System.out.println(groups.get(0).getName()); 51 | } 52 | 53 | @Test 54 | public void readFileByLines() { 55 | File file = new File("D:/zz.txt"); 56 | //判断文件是否存在 57 | if (!file.exists()) { 58 | System.out.println("文件夹不存在"); 59 | }else { 60 | BufferedReader reader = null; 61 | StringBuffer sb = new StringBuffer(); 62 | try { 63 | reader = new BufferedReader(new InputStreamReader(new FileInputStream(file))); 64 | String tempString = null; 65 | while ((tempString = reader.readLine()) != null) { 66 | int i = sb.lastIndexOf("}"); 67 | 68 | sb.append(tempString); 69 | } 70 | reader.close(); 71 | } catch (IOException e) { 72 | e.printStackTrace(); 73 | } finally { 74 | if (reader != null) { 75 | try { 76 | reader.close(); 77 | } catch (IOException e1) { 78 | } 79 | } 80 | } 81 | System.out.println("读取成功"); 82 | } 83 | } 84 | 85 | @Test 86 | public void getTask(){ 87 | ProcessEngine engine = ProcessEngines.getDefaultProcessEngine(); 88 | HistoryService historyService = engine.getHistoryService(); 89 | HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery().processInstanceId("17507").singleResult(); 90 | } 91 | 92 | } 93 | -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/libs/angular-resource_1.2.13/angular-resource.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | AngularJS v1.2.13 3 | (c) 2010-2014 Google, Inc. http://angularjs.org 4 | License: MIT 5 | */ 6 | (function(H,a,A){'use strict';function D(p,g){g=g||{};a.forEach(g,function(a,c){delete g[c]});for(var c in p)!p.hasOwnProperty(c)||"$"===c.charAt(0)&&"$"===c.charAt(1)||(g[c]=p[c]);return g}var v=a.$$minErr("$resource"),C=/^(\.[a-zA-Z_$][0-9a-zA-Z_$]*)+$/;a.module("ngResource",["ng"]).factory("$resource",["$http","$q",function(p,g){function c(a,c){this.template=a;this.defaults=c||{};this.urlParams={}}function t(n,w,l){function r(h,d){var e={};d=x({},w,d);s(d,function(b,d){u(b)&&(b=b());var k;if(b&& 7 | b.charAt&&"@"==b.charAt(0)){k=h;var a=b.substr(1);if(null==a||""===a||"hasOwnProperty"===a||!C.test("."+a))throw v("badmember",a);for(var a=a.split("."),f=0,c=a.length;f boilerplate 39 | 40 | 1.2.2 41 | - Changed reduce to follow the letter of the spec with regard to having and 42 | owning properties. 43 | - Fixed a bug where RegExps pass as Functions in some engines in reduce. 44 | 45 | 1.2.1 46 | - Adding few fixes to make jshint happy. 47 | - Fix for issue #12, function expressions can cause scoping issues in IE. 48 | - NPM will minify on install or when `npm run-script install` is executed. 49 | - Adding .gitignore to avoid publishing dev dependencies. 50 | 51 | 1.2.0 52 | - Making script loadable as AMD module. 53 | - Adding `indexOf` to the list of safe shims. 54 | 55 | 1.1.0 56 | - Added support for accessor properties where possible (which is all browsers 57 | except IE). 58 | - Stop exposing bound function's (that are returned by 59 | `Function.prototype.bind`) internal properties (`bound, boundTo, boundArgs`) 60 | as in some cases (when using facade objects for example) capabilities of the 61 | enclosed functions will be leaked. 62 | - `Object.create` now explicitly sets `__proto__` property to guarantee 63 | correct behavior of `Object.getPrototypeOf`'s on all objects created using 64 | `Object.create`. 65 | - Switched to `===` from `==` where possible as it's slightly faster on older 66 | browsers that are target of this lib. 67 | - Added names to all anonymous functions to have a better stack traces. 68 | 69 | 1.0.0 70 | - fixed Date.toISODate, using UTC accessors, as in 71 | http://code.google.com/p/v8/source/browse/trunk/src/date.js?r=6120#986 72 | (arian) 73 | 74 | 0.0.4 75 | - Revised Object.getPrototypeOf to work in more cases 76 | in response to http://ejohn.org/blog/objectgetprototypeof/ 77 | [issue #2] (fschaefer) 78 | 79 | 0.0.3 80 | - Fixed typos in Object.keys (samsonjs) 81 | 82 | 0.0.2 83 | Per kangax's recommendations: 84 | - faster Object.create(null) 85 | - fixed a function-scope function declaration statement in Object.create 86 | 87 | 0.0.1 88 | - fixed Object.create(null), in so far as that's possible 89 | - reworked Rhino Object.freeze(Function) bug detector and patcher 90 | 91 | 0.0.0 92 | - forked from narwhal-lib 93 | 94 | -------------------------------------------------------------------------------- /pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | 6 | org.springframework.boot 7 | spring-boot-starter-parent 8 | 2.1.3.RELEASE 9 | 10 | 11 | com.yfny 12 | activity-api 13 | 0.0.1-SNAPSHOT 14 | activity-api 15 | 16 | 17 | 18 | org.activiti 19 | activiti-spring-boot-starter-basic 20 | 6.0.0 21 | 22 | 23 | 24 | org.activiti 25 | activiti-json-converter 26 | 6.0.0 27 | 28 | 29 | 30 | org.apache.xmlgraphics 31 | batik-transcoder 32 | 1.7 33 | 34 | 35 | org.apache.xmlgraphics 36 | batik-codec 37 | 1.7 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | mysql 51 | mysql-connector-java 52 | 5.1.47 53 | runtime 54 | 55 | 56 | 57 | org.springframework.boot 58 | spring-boot-starter-web 59 | 2.1.3.RELEASE 60 | 61 | 62 | 63 | org.springframework.boot 64 | spring-boot-starter-test 65 | test 66 | 67 | 68 | com.vaadin.external.google 69 | android-json 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | org.springframework.boot 79 | spring-boot-maven-plugin 80 | 81 | 82 | 83 | 84 | -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/configuration/properties/in-parameters-popup.html: -------------------------------------------------------------------------------- 1 | 2 | 54 | -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/configuration/properties/out-parameters-popup.html: -------------------------------------------------------------------------------- 1 | 2 | 54 | -------------------------------------------------------------------------------- /src/main/resources/public/diagram-viewer/js/ActivityImpl.js: -------------------------------------------------------------------------------- 1 | /** * * @author Tom Baeyens * @author (Javascript) Dmitry Farafonov */ var ActivityImpl = function(activityJson){ this.outgoingTransitions = []; this.outgoingTransitions = []; this.incomingTransitions = []; this.activityBehavior = null; this.parent = null; this.isScope = false; this.isAsync = false; this.isExclusive = false; this.x = -1; this.y = -1; this.width = -1; this.height = -1; this.properties = {}; //console.log("activityJson: ", activityJson); if (activityJson != undefined) { this.setId(activityJson.activityId); for (var propertyName in activityJson.properties) { this.setProperty(propertyName, activityJson.properties[propertyName]); } //this.setProperty("name", activityJson.activityName); //this.setProperty("type", activityJson.activityType); this.setX(activityJson.x); this.setY(activityJson.y); this.setWidth(activityJson.width); this.setHeight(activityJson.height); if (activityJson.multiInstance) this.setProperty("multiInstance", activityJson.multiInstance); if (activityJson.collapsed) { this.setProperty("collapsed", activityJson.collapsed); } if (activityJson.isInterrupting != undefined) this.setProperty("isInterrupting", activityJson.isInterrupting); } }; ActivityImpl.prototype = { outgoingTransitions: [], outgoingTransitions: [], incomingTransitions: [], activityBehavior: null, parent: null, isScope: false, isAsync: false, isExclusive: false, id: null, properties: {}, // Graphical information x: -1, y: -1, width: -1, height: -1, setId: function(id){ this.id = id; }, getId: function(){ return this.id; }, setProperty: function(name, value){ this.properties[name] = value; }, getProperty: function(name){ return this.properties[name]; }, createOutgoingTransition: function(transitionId){ }, toString: function(id) { return "Activity("+id+")"; }, getParentActivity: function(){ /* if (parent instanceof ActivityImpl) { 79 return (ActivityImpl) parent; 80 } 81 return null; */ return this.parent; }, // restricted setters /////////////////////////////////////////////////////// setOutgoingTransitions: function(outgoingTransitions){ this.outgoingTransitions = outgoingTransitions; }, setParent: function(parent){ this.parent = parent; }, setIncomingTransitions: function(incomingTransitions){ this.incomingTransitions = incomingTransitions; }, // getters and setters ////////////////////////////////////////////////////// getOutgoingTransitions: function(){ return this.outgoingTransitions; }, getActivityBehavior: function(){ return this.activityBehavior; }, setActivityBehavior: function(activityBehavior){ this.activityBehavior = activityBehavior; }, getParent: function(){ return this.parent; }, getIncomingTransitions: function(){ return this.incomingTransitions; }, isScope: function(){ return this.isScope; }, setScope: function(isScope){ this.isScope = isScope; }, getX: function(){ return this.x; }, setX: function(x){ this.x = x; }, getY: function(){ return this.y; }, setY: function(y){ this.y = y; }, getWidth: function(){ return this.width; }, setWidth: function(width){ this.width = width; }, getHeight: function(){ return this.height; }, setHeight: function(height){ this.height = height; }, isAsync: function() { return this.isAsync; }, setAsync: function(isAsync) { this.isAsync = isAsync; }, isExclusive: function() { return this.isExclusive; }, setExclusive: function(isExclusive) { this.isExclusive = isExclusive; }, vvoid: function(){} }; -------------------------------------------------------------------------------- /src/main/resources/public/diagram-viewer/js/jquery/jquery.progressbar.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @ Dmitry Farafonov 3 | */ 4 | 5 | (function($){ 6 | $.ProgressBar = function(options) { 7 | this.element = $(options.boundingBox); 8 | if (options.on && options.on.complete){ 9 | this.onComplete = options.on.complete; 10 | } 11 | if (options.on && options.on.valueChange){ 12 | this.onValueChange = options.on.valueChange; 13 | } 14 | 15 | this._create(); 16 | 17 | if (options.label) 18 | this.set("label", options.label); 19 | if (options.value) 20 | this.value(options.value); 21 | if (options.max) 22 | this.set("max", options.max); 23 | }; 24 | $.ProgressBar.prototype = { 25 | options: { 26 | value: 0, 27 | max: 100 28 | }, 29 | 30 | min: 0, 31 | 32 | _create: function() { 33 | this.element 34 | .addClass( "ui-progressbar ui-widget ui-widget-content ui-corner-all" ) 35 | .attr({ 36 | role: "progressbar", 37 | "aria-valuemin": this.min, 38 | "aria-valuemax": this.options.max, 39 | "aria-valuenow": this._value() 40 | }); 41 | 42 | this.valueDiv = $( "
" ) 43 | .appendTo( this.element ); 44 | 45 | this.valueDiv = $( "
" ) 46 | .appendTo( this.element ); 47 | 48 | this.oldValue = this._value(); 49 | this._refreshValue(); 50 | }, 51 | 52 | _destroy: function() { 53 | this.element 54 | .removeClass( "ui-progressbar ui-widget ui-widget-content ui-corner-all" ) 55 | .removeAttr( "role" ) 56 | .removeAttr( "aria-valuemin" ) 57 | .removeAttr( "aria-valuemax" ) 58 | .removeAttr( "aria-valuenow" ); 59 | 60 | this.valueDiv.remove(); 61 | }, 62 | 63 | value: function( newValue ) { 64 | if ( newValue === undefined ) { 65 | return this._value(); 66 | } 67 | 68 | this._setOption( "value", newValue ); 69 | return this; 70 | }, 71 | 72 | _setOption: function( key, value ) { 73 | if ( key === "value" ) { 74 | //var oldVal = this.options.value; 75 | this.options.value = value; 76 | this._refreshValue(); 77 | 78 | if (this.onValueChange) 79 | this.onValueChange.apply(this, [{oldVal: this.oldValue, newVal: value}]); 80 | 81 | if ( this._value() === this.options.max ) { 82 | //this._trigger( "complete" ); 83 | if (this.onComplete) 84 | this.onComplete.apply(this); 85 | } 86 | } else if (key === "label") { 87 | $(this.element).find(".ui-progressbar-label").html(value); 88 | } else if (key === "max") { 89 | this.options.max = value; 90 | } 91 | 92 | //this._super( key, value ); 93 | }, 94 | 95 | _value: function() { 96 | var val = this.options.value; 97 | // normalize invalid value 98 | if ( typeof val !== "number" ) { 99 | val = 0; 100 | } 101 | return Math.min( this.options.max, Math.max( this.min, val ) ); 102 | }, 103 | 104 | _percentage: function() { 105 | return 100 * this._value() / this.options.max; 106 | }, 107 | 108 | _refreshValue: function() { 109 | var value = this.value(), 110 | percentage = this._percentage(); 111 | 112 | if ( this.oldValue !== value ) { 113 | this.oldValue = value; 114 | //this._trigger( "change" ); 115 | } 116 | 117 | this.valueDiv 118 | .toggle( value > this.min ) 119 | .toggleClass( "ui-corner-right", value === this.options.max ) 120 | .width( percentage.toFixed(0) + "%" ); 121 | this.element.attr( "aria-valuenow", value ); 122 | 123 | //$(this.element).find(".ui-progressbar-label").html(value + "%"); 124 | }, 125 | 126 | set: function(key, value){ 127 | this._setOption(key, value); 128 | } 129 | }; 130 | 131 | })( jQuery ); -------------------------------------------------------------------------------- /src/main/java/com/yfny/activityapi/utils/ActivitiUtils.java: -------------------------------------------------------------------------------- 1 | package com.yfny.activityapi.utils; 2 | 3 | import org.activiti.engine.IdentityService; 4 | import org.activiti.engine.RepositoryService; 5 | import org.activiti.engine.RuntimeService; 6 | import org.activiti.engine.repository.Deployment; 7 | import org.activiti.engine.repository.ProcessDefinition; 8 | import org.activiti.engine.runtime.ProcessInstance; 9 | import org.springframework.beans.factory.annotation.Autowired; 10 | import org.springframework.stereotype.Component; 11 | 12 | import java.io.InputStream; 13 | import java.util.zip.ZipInputStream; 14 | 15 | 16 | /** 17 | *

18 | * Created by jinboYu on 2019/3/5 19 | */ 20 | @Component 21 | public class ActivitiUtils { 22 | 23 | @Autowired 24 | private RepositoryService repositoryService; 25 | 26 | @Autowired 27 | private RuntimeService runtimeService; 28 | 29 | @Autowired 30 | private IdentityService identityService; 31 | /** 32 | * 启动流程引擎 33 | * @param userId 流程发起人ID 34 | * @param key 流程ID 35 | * @return 36 | */ 37 | // public static ProcessInstance getProcessInstance(String userId,String key){ 38 | // if (processInstance==null){ 39 | // synchronized (ProcessInstance.class){ 40 | // if (processInstance==null){ 41 | //// //获取流程引擎对象 42 | // ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); 43 | // //设置流程发起人 44 | // processEngine.getIdentityService().setAuthenticatedUserId(userId); 45 | // //启动流程 46 | // ProcessInstance processInstance = processEngine.getRuntimeService().startProcessInstanceByKey(key); 47 | // return processInstance; 48 | //// ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); 49 | //// Deployment deployment = processEngine.getRepositoryService()//与流程定义和部署对象相关的Service 50 | //// .createDeployment()//创建一个部署对象 51 | //// .name("流程定义")//添加部署名称 52 | //// .addClasspathResource("processes/xqd.bpmn")//从classpath的资源中加载,一次只能加载一个文件 53 | //// .addClasspathResource("processes/xqd.png") 54 | //// .key("xqd") 55 | //// .deploy();//完成部署 56 | //// return processEngine.getRuntimeService().startProcessInstanceByKey(deployment.getKey()); 57 | // }else { 58 | // return processInstance; 59 | // } 60 | // } 61 | // }else { 62 | // return processInstance; 63 | // } 64 | // } 65 | 66 | /** 67 | * 启动流程引擎 68 | * 69 | * @param userId 流程发起人ID 70 | * @param key 流程ID 71 | * @return 72 | */ 73 | public ProcessInstance getProcessInstance(String userId, String key) { 74 | //读取配置文件流 75 | InputStream in = this.getClass().getClassLoader().getSystemResourceAsStream("processes/" + key + ".zip"); 76 | 77 | ZipInputStream zipInputStream = new ZipInputStream(in); 78 | 79 | //部署流程实例 80 | Deployment deployment = repositoryService 81 | .createDeployment() 82 | .addZipInputStream(zipInputStream) 83 | .key(key) 84 | .deploy(); 85 | identityService.setAuthenticatedUserId(userId); 86 | 87 | //获取流程定义 88 | ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().deploymentId(deployment.getId()).singleResult(); 89 | //根据流程定义启动流程 90 | return runtimeService.startProcessInstanceById(processDefinition.getId()); 91 | } 92 | 93 | 94 | } 95 | -------------------------------------------------------------------------------- /src/main/resources/public/diagram-viewer/js/jquery/jquery.asyncqueue.js: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the jquery plugin "asyncQueue". 3 | * 4 | * (c) Sebastien Roch 5 | * @author (parallel) Dmitry Farafonov 6 | * 7 | * For the full copyright and license information, please view the LICENSE 8 | * file that was distributed with this source code. 9 | */ 10 | (function($){ 11 | $.AsyncQueue = function() { 12 | var that = this, 13 | queue = [], 14 | completeFunc, 15 | failureFunc, 16 | paused = false, 17 | lastCallbackData, 18 | _run, 19 | _complete, 20 | inQueue = 0, 21 | defaultTimeOut = 10; 22 | 23 | _run = function() { 24 | var f = queue.shift(); 25 | 26 | if (f) { 27 | inQueue++; 28 | setTimeout(function(){ 29 | f.fn.apply(that, [that]); 30 | 31 | if (!f.isParallel) 32 | if (paused === false) { 33 | _run(); 34 | } 35 | inQueue --; 36 | if (inQueue == 0 && queue.length == 0) 37 | _complete(); 38 | }, f.timeOut); 39 | 40 | if (f.isParallel) 41 | if (paused === false) { 42 | _run(); 43 | } 44 | } 45 | }; 46 | 47 | _complete = function(){ 48 | if (completeFunc) 49 | completeFunc.apply(that, [that]); 50 | }; 51 | 52 | this.onComplete = function(func) { 53 | completeFunc = func; 54 | }; 55 | 56 | this.onFailure = function(func) { 57 | failureFunc = func; 58 | }; 59 | 60 | this.add = function(func) { 61 | // TODO: add callback for queue[i] complete 62 | 63 | var obj = arguments[0]; 64 | if (obj && Object.prototype.toString.call(obj) === "[object Array]") { 65 | var fn = arguments[1]; 66 | var timeOut = (typeof(arguments[2]) != "undefined")? arguments[2] : defaultTimeOut; 67 | if (typeof(fn) == "function") { 68 | for(var i = 0; i < obj.length; i++) { 69 | var f = function(objx){ 70 | queue.push({isParallel: true, fn: function(){fn.apply(that, [that, objx]);}, timeOut: timeOut}); 71 | }(obj[i]) 72 | } 73 | } 74 | } else { 75 | var fn = arguments[0]; 76 | var timeOut = (typeof(arguments[1]) != "undefined")? arguments[2] : defaultTimeOut; 77 | queue.push({isParallel: false, fn: func, timeOut: timeOut}); 78 | } 79 | return this; 80 | }; 81 | 82 | this.addParallel = function(func, timeOut) { 83 | // TODO: add callback for queue[i] complete 84 | 85 | queue.push({isParallel: true, fn: func, timeOut: timeOut}); 86 | return this; 87 | }; 88 | 89 | this.storeData = function(dataObject) { 90 | lastCallbackData = dataObject; 91 | return this; 92 | }; 93 | 94 | this.lastCallbackData = function () { 95 | return lastCallbackData; 96 | }; 97 | 98 | this.run = function() { 99 | paused = false; 100 | _run(); 101 | }; 102 | 103 | this.pause = function () { 104 | paused = true; 105 | return this; 106 | }; 107 | 108 | this.failure = function() { 109 | paused = true; 110 | if (failureFunc) { 111 | var args = [that]; 112 | for(i = 0; i < arguments.length; i++) { 113 | args.push(arguments[i]); 114 | } 115 | failureFunc.apply(that, args); 116 | } 117 | }; 118 | 119 | this.size = function(){ 120 | return queue.length; 121 | }; 122 | 123 | return this; 124 | } 125 | })(jQuery); 126 | -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/libs/mousetrap-1.4.5.min.js: -------------------------------------------------------------------------------- 1 | /* mousetrap v1.4.5 craig.is/killing/mice */ 2 | (function(J,r,f){function s(a,b,c){a.addEventListener?a.addEventListener(b,c,!1):a.attachEvent("on"+b,c)}function A(a){if("keypress"==a.type){var b=String.fromCharCode(a.which);a.shiftKey||(b=b.toLowerCase());return b}return h[a.which]?h[a.which]:B[a.which]?B[a.which]:String.fromCharCode(a.which).toLowerCase()}function t(a){a=a||{};var b=!1,c;for(c in n)a[c]?b=!0:n[c]=0;b||(u=!1)}function C(a,b,c,d,e,v){var g,k,f=[],h=c.type;if(!l[a])return[];"keyup"==h&&w(a)&&(b=[a]);for(g=0;gg||h.hasOwnProperty(g)&&(p[h[g]]=g)}e=p[c]?"keydown":"keypress"}"keypress"==e&&f.length&&(e="keydown");return{key:d,modifiers:f,action:e}}function F(a,b,c,d,e){q[a+":"+c]=b;a=a.replace(/\s+/g," ");var f=a.split(" ");1":".","?":"/","|":"\\"},G={option:"alt",command:"meta","return":"enter",escape:"esc",mod:/Mac|iPod|iPhone|iPad/.test(navigator.platform)?"meta":"ctrl"},p,l={},q={},n={},D,z=!1,I=!1,u=!1;for(f=1;20>f;++f)h[111+f]="f"+f;for(f=0;9>=f;++f)h[f+96]=f;s(r,"keypress",y);s(r,"keydown",y);s(r,"keyup",y);var m={bind:function(a,b,c){a=a instanceof Array?a:[a];for(var d=0;d0){this.init(type,text);}} 29 | PathToken.prototype.init=function(type,text){this.type=type;this.text=text;}; 30 | PathToken.prototype.typeis=function(type){return this.type==type;} -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/libs/angular-route_1.2.13/angular-route.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | AngularJS v1.2.13 3 | (c) 2010-2014 Google, Inc. http://angularjs.org 4 | License: MIT 5 | */ 6 | (function(h,e,A){'use strict';function u(w,q,k){return{restrict:"ECA",terminal:!0,priority:400,transclude:"element",link:function(a,c,b,f,n){function y(){l&&(l.$destroy(),l=null);g&&(k.leave(g),g=null)}function v(){var b=w.current&&w.current.locals;if(e.isDefined(b&&b.$template)){var b=a.$new(),f=w.current;g=n(b,function(d){k.enter(d,null,g||c,function(){!e.isDefined(t)||t&&!a.$eval(t)||q()});y()});l=f.scope=b;l.$emit("$viewContentLoaded");l.$eval(h)}else y()}var l,g,t=b.autoscroll,h=b.onload||""; 7 | a.$on("$routeChangeSuccess",v);v()}}}function z(e,h,k){return{restrict:"ECA",priority:-400,link:function(a,c){var b=k.current,f=b.locals;c.html(f.$template);var n=e(c.contents());b.controller&&(f.$scope=a,f=h(b.controller,f),b.controllerAs&&(a[b.controllerAs]=f),c.data("$ngControllerController",f),c.children().data("$ngControllerController",f));n(a)}}}h=e.module("ngRoute",["ng"]).provider("$route",function(){function h(a,c){return e.extend(new (e.extend(function(){},{prototype:a})),c)}function q(a, 8 | e){var b=e.caseInsensitiveMatch,f={originalPath:a,regexp:a},h=f.keys=[];a=a.replace(/([().])/g,"\\$1").replace(/(\/)?:(\w+)([\?\*])?/g,function(a,e,b,c){a="?"===c?c:null;c="*"===c?c:null;h.push({name:b,optional:!!a});e=e||"";return""+(a?"":e)+"(?:"+(a?e:"")+(c&&"(.+?)"||"([^/]+)")+(a||"")+")"+(a||"")}).replace(/([\/$\*])/g,"\\$1");f.regexp=RegExp("^"+a+"$",b?"i":"");return f}var k={};this.when=function(a,c){k[a]=e.extend({reloadOnSearch:!0},c,a&&q(a,c));if(a){var b="/"==a[a.length-1]?a.substr(0,a.length- 9 | 1):a+"/";k[b]=e.extend({redirectTo:a},q(b,c))}return this};this.otherwise=function(a){this.when(null,a);return this};this.$get=["$rootScope","$location","$routeParams","$q","$injector","$http","$templateCache","$sce",function(a,c,b,f,n,q,v,l){function g(){var d=t(),m=r.current;if(d&&m&&d.$$route===m.$$route&&e.equals(d.pathParams,m.pathParams)&&!d.reloadOnSearch&&!x)m.params=d.params,e.copy(m.params,b),a.$broadcast("$routeUpdate",m);else if(d||m)x=!1,a.$broadcast("$routeChangeStart",d,m),(r.current= 10 | d)&&d.redirectTo&&(e.isString(d.redirectTo)?c.path(u(d.redirectTo,d.params)).search(d.params).replace():c.url(d.redirectTo(d.pathParams,c.path(),c.search())).replace()),f.when(d).then(function(){if(d){var a=e.extend({},d.resolve),c,b;e.forEach(a,function(d,c){a[c]=e.isString(d)?n.get(d):n.invoke(d)});e.isDefined(c=d.template)?e.isFunction(c)&&(c=c(d.params)):e.isDefined(b=d.templateUrl)&&(e.isFunction(b)&&(b=b(d.params)),b=l.getTrustedResourceUrl(b),e.isDefined(b)&&(d.loadedTemplateUrl=b,c=q.get(b, 11 | {cache:v}).then(function(a){return a.data})));e.isDefined(c)&&(a.$template=c);return f.all(a)}}).then(function(c){d==r.current&&(d&&(d.locals=c,e.copy(d.params,b)),a.$broadcast("$routeChangeSuccess",d,m))},function(c){d==r.current&&a.$broadcast("$routeChangeError",d,m,c)})}function t(){var a,b;e.forEach(k,function(f,k){var p;if(p=!b){var s=c.path();p=f.keys;var l={};if(f.regexp)if(s=f.regexp.exec(s)){for(var g=1,q=s.length;g 14 | * Created by jinboYu on 2019/3/5 15 | */ 16 | @RestController 17 | @RequestMapping(value = "/task") 18 | public class TaskController { 19 | 20 | 21 | 22 | @Autowired 23 | private FlowTaskService flowTaskService; 24 | 25 | 26 | /** 27 | * 根据分组ID获取任务列表,带分页 28 | * 29 | * @param groupId 分组ID 30 | * @param pageNum 当前页数 31 | * @param pageSize 显示数量 32 | * @return 33 | */ 34 | @GetMapping(value = "/getDemandByGroupId/{groupId}/{pageNum}/{pageSize}") 35 | public String getDemandByGroupId(@PathVariable String groupId, @PathVariable int pageNum, @PathVariable int pageSize) throws Exception { 36 | return flowTaskService.getDemandByGroupId(groupId,pageNum,pageSize); 37 | } 38 | 39 | /** 40 | * 根据当前用户Id获取任务列表,带分页 41 | * 42 | * @param userId 用户ID 43 | * @param pageNum 当前页数 44 | * @param pageSize 显示数量 45 | * @return 46 | */ 47 | @GetMapping(value = "/getDemandByUserId/{userId}/{pageNum}/{pageSize}") 48 | public String getDemandByUserId(@PathVariable String userId, @PathVariable int pageNum, @PathVariable int pageSize) throws Exception { 49 | return flowTaskService.getDemandByUserId(userId,pageNum,pageSize); 50 | } 51 | 52 | @GetMapping(value = "/getTaskListByUserId/{userId}/{pageNum}/{pageSize}") 53 | public List getTaskListByUserId(@PathVariable String userId, @PathVariable int pageNum, @PathVariable int pageSize) throws Exception { 54 | return flowTaskService.getTaskListByUserId(userId,pageNum,pageSize); 55 | } 56 | 57 | 58 | /** 59 | * 创建流程并完成第一个任务 60 | * 61 | * @param userId 流程发起人ID 62 | * @param key 流程ID 63 | * @param variables 流程变量 64 | * @return 下一个任务的ID 65 | */ 66 | @PostMapping(value = "/create/{userId}/{key}") 67 | public String createTask(@PathVariable String userId, @PathVariable String key, @RequestBody Map variables) throws Exception { 68 | String taskId = flowTaskService.createTask(userId, key, variables); 69 | return taskId; 70 | } 71 | 72 | /** 73 | * 完成流程任务 74 | * 75 | * @param taskId 任务ID 76 | * @param variables 流程变量 77 | * @return 返回下一个任务的ID 78 | */ 79 | @PostMapping(value = "/fulfil/{taskId}") 80 | public String fulfilTask(@PathVariable String taskId, @RequestBody Map variables) throws Exception { 81 | return flowTaskService.fulfilTask(taskId, variables); 82 | } 83 | 84 | 85 | /** 86 | * 撤销流程 87 | * 88 | * @param taskId 流程任务ID 89 | * @return 90 | */ 91 | @PostMapping(value = "/revocationTask/{taskId}") 92 | public String revocationTask(@PathVariable String taskId) throws Exception { 93 | int i = flowTaskService.revocationTask(taskId); 94 | if (i == 1) { 95 | return "撤销成功"; 96 | } else if (i==2){ 97 | return "撤销失败,任务不存在"; 98 | }else { 99 | return "撤销失败"; 100 | } 101 | } 102 | 103 | /** 104 | * 创建用户 105 | * 106 | * @param userId 107 | * @return 108 | */ 109 | @PostMapping(value = "/createUser/{userId}") 110 | public String createUser(@PathVariable String userId) throws Exception { 111 | int i = flowTaskService.createUser(userId); 112 | if (i == 1) { 113 | return "创建成功"; 114 | } 115 | return "创建失败"; 116 | } 117 | } -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/editor/css/editor.css: -------------------------------------------------------------------------------- 1 | body, html { 2 | font-family: tahoma,arial,helvetica,sans-serif; 3 | font-size: 12px; 4 | } 5 | 6 | /********* 7 | * SVG Style 8 | */ 9 | 10 | text, 11 | text * { 12 | cursor:default; 13 | -webkit-user-select: none; 14 | } 15 | 16 | /********* 17 | * HEADER SECTION 18 | * 19 | */ 20 | 21 | #oryx_canvas_htmlContainer { 22 | 23 | } 24 | 25 | .ORYX_Editor { 26 | background: white; 27 | border: none; 28 | margin:-5px; 29 | margin-top:0px; 30 | width:1200px; 31 | height:600px; 32 | } 33 | 34 | .icon-large { 35 | width:18px !important; 36 | } 37 | 38 | #oryxcanvas { 39 | width:1200px; 40 | height:600px; 41 | } 42 | 43 | /** Resizer for the Canvas **/ 44 | .canvas_resize_indicator_area { 45 | 46 | margin :auto; 47 | display :block; 48 | height :30px; 49 | left :20%; 50 | position :absolute; 51 | text-align :center; 52 | top :0; 53 | width :60%; 54 | 55 | } 56 | 57 | .canvas_resize_indicator { 58 | 59 | width : 15px; 60 | height : 15px; 61 | position : absolute; 62 | display : block; 63 | margin : auto; 64 | opacity : 0.6; 65 | } 66 | 67 | .canvas_resize_indicator:hover { 68 | 69 | opacity : 1.0; 70 | } 71 | /** End Resizer **/ 72 | 73 | .Oryx_down { 74 | 75 | } 76 | 77 | .Oryx_button img { 78 | width:16px; 79 | height:16px; 80 | top:0px; 81 | left:0px; 82 | line-height: 16px; 83 | } 84 | 85 | .Oryx_Right .Oryx_button, 86 | .Oryx_Left .Oryx_button, 87 | .Oryx_Top .Oryx_button, 88 | .Oryx_Bottom .Oryx_button { 89 | opacity: 0.5; 90 | } 91 | 92 | .Oryx_button.x-opacity-0 { 93 | opacity: 0; 94 | display:none; 95 | } 96 | 97 | .Oryx_button.x-opacity-10 { 98 | opacity: 0.1; 99 | } 100 | 101 | .Oryx_button.x-opacity-20 { 102 | opacity: 0.2; 103 | } 104 | 105 | .Oryx_button.x-opacity-50 { 106 | opacity: 0.5; 107 | } 108 | 109 | .Oryx_Right:hover .Oryx_button, 110 | .Oryx_Left:hover .Oryx_button, 111 | .Oryx_Top:hover .Oryx_button, 112 | .Oryx_Bottom:hover .Oryx_button { 113 | opacity: 0.7; 114 | display:block; 115 | } 116 | 117 | 118 | .Oryx_button img { 119 | top:0px; 120 | } 121 | 122 | .Oryx_Left img { 123 | top:0px; 124 | } 125 | 126 | .Oryx_button { 127 | width:24px; 128 | height:24px; 129 | padding:2px; 130 | position:absolute; 131 | background-color: #ffffff; 132 | background-color: rgba(255,255,255,0.7); 133 | cursor: pointer; 134 | } 135 | 136 | .Oryx_button_with_caption { 137 | width:inherit; 138 | height:16px; 139 | padding:4px; 140 | position:absolute; 141 | } 142 | 143 | /*** Resizer ***/ 144 | 145 | .resizer_southeast, 146 | .resizer_northwest { 147 | width:12px; 148 | height:12px; 149 | position:relative; 150 | background-color: transparent; 151 | background-repeat:no-repeat; 152 | } 153 | 154 | /*** Selection Frame ***/ 155 | 156 | .Oryx_SelectionFrame{ 157 | position:absolute; 158 | border:1px dotted gray; 159 | background:none; 160 | } 161 | 162 | .LoadingIndicator { 163 | background-image: url('../../images/loading.gif'); 164 | } 165 | 166 | .Oryx_hover, .Oryx_button:hover { 167 | background-color: #999999; 168 | background-color: rgba(193, 229, 238, 0.7); 169 | opacity: 1 !important; 170 | -webkit-border-radius: 3px; 171 | -moz-border-radius: 3px; 172 | border-radius: 3px; 173 | } 174 | 175 | .ValidateButton { 176 | width:24px; 177 | height:24px; 178 | padding:2px; 179 | position:absolute; 180 | cursor: pointer; 181 | } 182 | 183 | .ValidateButton:hover { 184 | background-color: #999999; 185 | background-color: rgba(193, 229, 238, 0.7); 186 | opacity: 1 !important; 187 | -webkit-border-radius: 3px; 188 | -moz-border-radius: 3px; 189 | border-radius: 3px; 190 | } 191 | 192 | .resizer_southeast { 193 | background-image:url(../../images/se-handle-dark.gif); 194 | cursor: se-resize; 195 | background-position: 4px 4px; 196 | } 197 | 198 | .resizer_northwest { 199 | background-image:url(../../images/nw-handle-dark.gif); 200 | cursor: nw-resize; 201 | background-position: -2px -2px; 202 | } 203 | -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/configuration/properties/fields-popup.html: -------------------------------------------------------------------------------- 1 | 2 |

62 | -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/libs/angular-sanitize_1.2.13/angular-sanitize.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | AngularJS v1.2.13 3 | (c) 2010-2014 Google, Inc. http://angularjs.org 4 | License: MIT 5 | */ 6 | (function(p,h,q){'use strict';function E(a){var e=[];s(e,h.noop).chars(a);return e.join("")}function k(a){var e={};a=a.split(",");var d;for(d=0;d=c;d--)e.end&&e.end(f[d]);f.length=c}}var b,g,f=[],l=a;for(f.last=function(){return f[f.length-1]};a;){g=!0;if(f.last()&&x[f.last()])a=a.replace(RegExp("(.*)<\\s*\\/\\s*"+f.last()+"[^>]*>","i"),function(b,a){a=a.replace(H,"$1").replace(I,"$1");e.chars&&e.chars(r(a));return""}),c("",f.last());else{if(0===a.indexOf("\x3c!--"))b=a.indexOf("--",4),0<=b&&a.lastIndexOf("--\x3e",b)===b&&(e.comment&&e.comment(a.substring(4,b)),a=a.substring(b+3),g=!1);else if(y.test(a)){if(b=a.match(y))a= 8 | a.replace(b[0],""),g=!1}else if(J.test(a)){if(b=a.match(z))a=a.substring(b[0].length),b[0].replace(z,c),g=!1}else K.test(a)&&(b=a.match(A))&&(a=a.substring(b[0].length),b[0].replace(A,d),g=!1);g&&(b=a.indexOf("<"),g=0>b?a:a.substring(0,b),a=0>b?"":a.substring(b),e.chars&&e.chars(r(g)))}if(a==l)throw L("badparse",a);l=a}c()}function r(a){if(!a)return"";var e=M.exec(a);a=e[1];var d=e[3];if(e=e[2])n.innerHTML=e.replace(//g,">")}function s(a,e){var d=!1,c=h.bind(a,a.push);return{start:function(a,g,f){a=h.lowercase(a);!d&&x[a]&&(d=a);d||!0!==C[a]||(c("<"),c(a),h.forEach(g,function(d,f){var g=h.lowercase(f),k="img"===a&&"src"===g||"background"===g;!0!==O[g]||!0===D[g]&&!e(d,k)||(c(" "),c(f),c('="'),c(B(d)),c('"'))}),c(f?"/>":">"))},end:function(a){a=h.lowercase(a);d||!0!==C[a]||(c(""));a==d&&(d=!1)},chars:function(a){d|| 10 | c(B(a))}}}var L=h.$$minErr("$sanitize"),A=/^<\s*([\w:-]+)((?:\s+[\w:-]+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)\s*>/,z=/^<\s*\/\s*([\w:-]+)[^>]*>/,G=/([\w:-]+)(?:\s*=\s*(?:(?:"((?:[^"])*)")|(?:'((?:[^'])*)')|([^>\s]+)))?/g,K=/^]*?)>/i,I=/]/,d=/^mailto:/;return function(c,b){function g(a){a&&m.push(E(a))}function f(a,c){m.push("');g(c);m.push("")}if(!c)return c;for(var l,k=c,m=[],n,p;l=k.match(e);)n=l[0],l[2]==l[3]&&(n="mailto:"+n),p=l.index,g(k.substr(0,p)),f(n,l[0].replace(d,"")),k=k.substring(p+l[0].length);g(k);return a(m.join(""))}}])})(window,window.angular); 14 | //# sourceMappingURL=angular-sanitize.min.js.map 15 | -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/configuration/properties-default-controllers.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Activiti Modeler component part of the Activiti project 3 | * Copyright 2005-2014 Alfresco Software, Ltd. All rights reserved. 4 | * 5 | * This library is free software; you can redistribute it and/or 6 | * modify it under the terms of the GNU Lesser General Public 7 | * License as published by the Free Software Foundation; either 8 | * version 2.1 of the License, or (at your option) any later version. 9 | * 10 | * This library is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 | * Lesser General Public License for more details. 14 | 15 | * You should have received a copy of the GNU Lesser General Public 16 | * License along with this library; if not, write to the Free Software 17 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 18 | */ 19 | 20 | /* 21 | * String controller 22 | */ 23 | 24 | var KisBpmStringPropertyCtrl = [ '$scope', function ($scope) { 25 | 26 | $scope.shapeId = $scope.selectedShape.id; 27 | $scope.valueFlushed = false; 28 | /** Handler called when input field is blurred */ 29 | $scope.inputBlurred = function() { 30 | $scope.valueFlushed = true; 31 | if ($scope.property.value) { 32 | $scope.property.value = $scope.property.value.replace(/(<([^>]+)>)/ig,""); 33 | } 34 | $scope.updatePropertyInModel($scope.property); 35 | }; 36 | 37 | $scope.enterPressed = function(keyEvent) { 38 | if (keyEvent && keyEvent.which === 13) { 39 | keyEvent.preventDefault(); 40 | $scope.inputBlurred(); // we want to do the same as if the user would blur the input field 41 | } 42 | }; 43 | 44 | $scope.$on('$destroy', function controllerDestroyed() { 45 | if(!$scope.valueFlushed) { 46 | if ($scope.property.value) { 47 | $scope.property.value = $scope.property.value.replace(/(<([^>]+)>)/ig,""); 48 | } 49 | $scope.updatePropertyInModel($scope.property, $scope.shapeId); 50 | } 51 | }); 52 | 53 | }]; 54 | 55 | /* 56 | * Boolean controller 57 | */ 58 | 59 | var KisBpmBooleanPropertyCtrl = ['$scope', function ($scope) { 60 | 61 | $scope.changeValue = function() { 62 | if ($scope.property.key === 'oryx-defaultflow' && $scope.property.value) { 63 | var selectedShape = $scope.selectedShape; 64 | if (selectedShape) { 65 | var incomingNodes = selectedShape.getIncomingShapes(); 66 | if (incomingNodes && incomingNodes.length > 0) { 67 | // get first node, since there can be only one for a sequence flow 68 | var rootNode = incomingNodes[0]; 69 | var flows = rootNode.getOutgoingShapes(); 70 | if (flows && flows.length > 1) { 71 | // in case there are more flows, check if another flow is already defined as default 72 | for (var i = 0; i < flows.length; i++) { 73 | if (flows[i].resourceId != selectedShape.resourceId) { 74 | var defaultFlowProp = flows[i].properties['oryx-defaultflow']; 75 | if (defaultFlowProp) { 76 | flows[i].setProperty('oryx-defaultflow', false, true); 77 | } 78 | } 79 | } 80 | } 81 | } 82 | } 83 | } 84 | $scope.updatePropertyInModel($scope.property); 85 | }; 86 | 87 | }]; 88 | 89 | /* 90 | * Text controller 91 | */ 92 | 93 | var KisBpmTextPropertyCtrl = [ '$scope', '$modal', function($scope, $modal) { 94 | 95 | var opts = { 96 | template: 'editor-app/configuration/properties/text-popup.html?version=' + Date.now(), 97 | scope: $scope 98 | }; 99 | 100 | // Open the dialog 101 | $modal(opts); 102 | }]; 103 | 104 | var KisBpmTextPropertyPopupCtrl = ['$scope', function($scope) { 105 | 106 | $scope.save = function() { 107 | $scope.updatePropertyInModel($scope.property); 108 | $scope.close(); 109 | }; 110 | 111 | $scope.close = function() { 112 | $scope.property.mode = 'read'; 113 | $scope.$hide(); 114 | }; 115 | }]; -------------------------------------------------------------------------------- /src/main/resources/public/editor-app/libs/angular-dragdrop.min-1.0.3.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Implementing Drag and Drop functionality in AngularJS is easier than ever. 3 | * Demo: http://codef0rmer.github.com/angular-dragdrop/ 4 | * 5 | * @version 1.0.3 6 | * 7 | * (c) 2013 Amit Gharat a.k.a codef0rmer - amitgharat.wordpress.com 8 | */ 9 | var jqyoui=angular.module("ngDragDrop",[]).service("ngDragDropService",["$timeout","$parse",function($timeout,$parse){this.callEventCallback=function(scope,callbackName,event,ui){if(!callbackName){return}var args=[event,ui];var match=callbackName.match(/^(.+)\((.+)\)$/);if(match!==null){callbackName=match[1];values=eval("["+match[0].replace(/^(.+)\(/,"").replace(/\)/,"")+"]");args.push.apply(args,values)}scope[callbackName].apply(scope,args)};this.invokeDrop=function(e,t,n,r){var i="",s="",o={},u={},a=null,f={},l={},c,h,p=null,d=t.scope(),v=e.scope();i=e.attr("ng-model");s=t.attr("ng-model");c=v.$eval(i);h=d.$eval(s);p=t.find("[jqyoui-draggable]:last");u=d.$eval(t.attr("jqyoui-droppable"))||[];o=v.$eval(e.attr("jqyoui-draggable"))||[];o.index=this.fixIndex(v,o,c);u.index=this.fixIndex(d,u,h);a=angular.isArray(c)?o.index:null;f=angular.isArray(c)?c[a]:c;if(angular.isArray(h)&&u&&u.index!==undefined){l=h[u.index]}else if(!angular.isArray(h)){l=h}else{l={}}if(o.animate===true){this.move(e,p.length>0?p:t,null,"fast",u,null);this.move(p.length>0&&!u.multiple?p:[],e.parent("[jqyoui-droppable]"),jqyoui.startXY,"fast",u,function(){$timeout(function(){e.css({position:"relative",left:"",top:""});p.css({position:"relative",left:"",top:""});this.mutateDraggable(v,u,o,i,s,l,e);this.mutateDroppable(d,u,o,s,f,a);this.callEventCallback(d,u.onDrop,n,r)}.bind(this))}.bind(this))}else{$timeout(function(){this.mutateDraggable(v,u,o,i,s,l,e);this.mutateDroppable(d,u,o,s,f,a);this.callEventCallback(d,u.onDrop,n,r)}.bind(this))}};this.move=function(e,t,n,r,i,s){if(e.length===0){if(s){window.setTimeout(function(){s()},300)}return false}var o=9999,u=e.offset(),a=t&&t.is(":visible");if(n===null&&t.length>0){if(t.attr("jqyoui-draggable")!==undefined&&t.attr("ng-model")!==undefined&&t.is(":visible")&&i&&i.multiple){n=t.offset();if(i.stack===false){n.left+=t.outerWidth(true)}else{n.top+=t.outerHeight(true)}}else{n=t.css({visibility:"hidden",display:"block"}).offset();t.css({visibility:"",display:a?"":"none"})}}e.css({position:"absolute","z-index":o}).css(u).animate(n,r,function(){if(s)s()})};this.mutateDroppable=function(e,t,n,r,i,s){var o=e.$eval(r);e.__dragItem=i;if(angular.isArray(o)){if(t&&t.index>=0){o[t.index]=i}else{o.push(i)}if(n&&n.placeholder===true){o[o.length-1]["jqyoui_pos"]=s}}else{$parse(r+" = __dragItem")(e);if(n&&n.placeholder===true){o["jqyoui_pos"]=s}}};this.mutateDraggable=function(e,t,n,r,i,s,o){var u=angular.equals(angular.copy(s),{}),a=e.$eval(r);e.__dropItem=s;if(n&&n.placeholder){if(n.placeholder!="keep"){if(angular.isArray(a)&&n.index!==undefined){a[n.index]=s}else{$parse(r+" = __dropItem")(e)}}}else{if(angular.isArray(a)){if(u){if(n&&n.placeholder!==true&&n.placeholder!=="keep"){a.splice(n.index,1)}}else{a[n.index]=s}}else{$parse(r+" = __dropItem")(e);if(e.$parent){$parse(r+" = __dropItem")(e.$parent)}}}o.css({"z-index":"",left:"",top:""})};this.fixIndex=function(e,t,n){if(t.applyFilter&&angular.isArray(n)&&n.length>0){var r=e[t.applyFilter](),i=r[t.index],s=undefined;n.forEach(function(e,t){if(angular.equals(e,i)){s=t}});return s}return t.index}}]).directive("jqyouiDraggable",["ngDragDropService",function(e){return{require:"?jqyouiDroppable",restrict:"A",link:function(t,n,r){var i,s;var o=function(o,u){if(o){i=t.$eval(n.attr("jqyoui-draggable"))||[];n.draggable({disabled:false}).draggable(t.$eval(r.jqyouiOptions)||{}).draggable({start:function(n,r){s=angular.element(this).css("z-index");angular.element(this).css("z-index",99999);jqyoui.startXY=angular.element(this).offset();e.callEventCallback(t,i.onStart,n,r)},stop:function(n,r){angular.element(this).css("z-index",s);e.callEventCallback(t,i.onStop,n,r)},drag:function(n,r){e.callEventCallback(t,i.onDrag,n,r)}})}else{n.draggable({disabled:true})}};t.$watch(function(){return t.$eval(r.drag)},o);o()}}}]).directive("jqyouiDroppable",["ngDragDropService",function(e){return{restrict:"A",priority:1,link:function(t,n,r){var i=function(i,s){if(i){n.droppable({disabled:false}).droppable(t.$eval(r.jqyouiOptions)||{}).droppable({over:function(n,r){var i=t.$eval(angular.element(this).attr("jqyoui-droppable"))||[];e.callEventCallback(t,i.onOver,n,r)},out:function(n,r){var i=t.$eval(angular.element(this).attr("jqyoui-droppable"))||[];e.callEventCallback(t,i.onOut,n,r)},drop:function(t,n){e.invokeDrop(angular.element(n.draggable),angular.element(this),t,n)}})}else{n.droppable({disabled:true})}};t.$watch(function(){return t.$eval(r.drop)},i);i()}}}]) 10 | -------------------------------------------------------------------------------- /.mvn/wrapper/MavenWrapperDownloader.java: -------------------------------------------------------------------------------- 1 | /* 2 | Licensed to the Apache Software Foundation (ASF) under one 3 | or more contributor license agreements. See the NOTICE file 4 | distributed with this work for additional information 5 | regarding copyright ownership. The ASF licenses this file 6 | to you under the Apache License, Version 2.0 (the 7 | "License"); you may not use this file except in compliance 8 | with the License. You may obtain a copy of the License at 9 | 10 | http://www.apache.org/licenses/LICENSE-2.0 11 | 12 | Unless required by applicable law or agreed to in writing, 13 | software distributed under the License is distributed on an 14 | "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | KIND, either express or implied. See the License for the 16 | specific language governing permissions and limitations 17 | under the License. 18 | */ 19 | 20 | import java.io.File; 21 | import java.io.FileInputStream; 22 | import java.io.FileOutputStream; 23 | import java.io.IOException; 24 | import java.net.URL; 25 | import java.nio.channels.Channels; 26 | import java.nio.channels.ReadableByteChannel; 27 | import java.util.Properties; 28 | 29 | public class MavenWrapperDownloader { 30 | 31 | /** 32 | * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided. 33 | */ 34 | private static final String DEFAULT_DOWNLOAD_URL = 35 | "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.4.2/maven-wrapper-0.4.2.jar"; 36 | 37 | /** 38 | * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to 39 | * use instead of the default one. 40 | */ 41 | private static final String MAVEN_WRAPPER_PROPERTIES_PATH = 42 | ".mvn/wrapper/maven-wrapper.properties"; 43 | 44 | /** 45 | * Path where the maven-wrapper.jar will be saved to. 46 | */ 47 | private static final String MAVEN_WRAPPER_JAR_PATH = 48 | ".mvn/wrapper/maven-wrapper.jar"; 49 | 50 | /** 51 | * Name of the property which should be used to override the default download url for the wrapper. 52 | */ 53 | private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl"; 54 | 55 | public static void main(String args[]) { 56 | System.out.println("- Downloader started"); 57 | File baseDirectory = new File(args[0]); 58 | System.out.println("- Using model directory: " + baseDirectory.getAbsolutePath()); 59 | 60 | // If the maven-wrapper.properties exists, read it and check if it contains a custom 61 | // wrapperUrl parameter. 62 | File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH); 63 | String url = DEFAULT_DOWNLOAD_URL; 64 | if (mavenWrapperPropertyFile.exists()) { 65 | FileInputStream mavenWrapperPropertyFileInputStream = null; 66 | try { 67 | mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile); 68 | Properties mavenWrapperProperties = new Properties(); 69 | mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream); 70 | url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url); 71 | } catch (IOException e) { 72 | System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'"); 73 | } finally { 74 | try { 75 | if (mavenWrapperPropertyFileInputStream != null) { 76 | mavenWrapperPropertyFileInputStream.close(); 77 | } 78 | } catch (IOException e) { 79 | // Ignore ... 80 | } 81 | } 82 | } 83 | System.out.println("- Downloading from: : " + url); 84 | 85 | File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH); 86 | if (!outputFile.getParentFile().exists()) { 87 | if (!outputFile.getParentFile().mkdirs()) { 88 | System.out.println( 89 | "- ERROR creating output direcrory '" + outputFile.getParentFile().getAbsolutePath() + "'"); 90 | } 91 | } 92 | System.out.println("- Downloading to: " + outputFile.getAbsolutePath()); 93 | try { 94 | downloadFileFromURL(url, outputFile); 95 | System.out.println("Done"); 96 | System.exit(0); 97 | } catch (Throwable e) { 98 | System.out.println("- Error downloading"); 99 | e.printStackTrace(); 100 | System.exit(1); 101 | } 102 | } 103 | 104 | private static void downloadFileFromURL(String urlString, File destination) throws Exception { 105 | URL website = new URL(urlString); 106 | ReadableByteChannel rbc; 107 | rbc = Channels.newChannel(website.openStream()); 108 | FileOutputStream fos = new FileOutputStream(destination); 109 | fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE); 110 | fos.close(); 111 | rbc.close(); 112 | } 113 | 114 | } 115 | --------------------------------------------------------------------------------