├── activiti7-ui ├── README.md ├── .browserslistrc ├── src │ ├── types │ │ ├── index.d.ts │ │ ├── env.d.ts │ │ ├── interface.ts │ │ └── shims.d.ts │ ├── components │ │ ├── BpmnJs │ │ │ ├── styles │ │ │ │ ├── camunda-penal.scss │ │ │ │ ├── palette.scss │ │ │ │ ├── bpmn-override.scss │ │ │ │ ├── designer.scss │ │ │ │ └── contextmenu.scss │ │ │ ├── overwrite-modules │ │ │ │ ├── ElementFactory │ │ │ │ │ └── index.ts │ │ │ │ ├── ContextPad │ │ │ │ │ └── index.ts │ │ │ │ ├── Palette │ │ │ │ │ ├── index.ts │ │ │ │ │ └── utils.ts │ │ │ │ └── Translate │ │ │ │ │ └── index.ts │ │ │ ├── bpmn-icons │ │ │ │ ├── bpmn-icon-association.svg │ │ │ │ ├── bpmn-icon-lane.svg │ │ │ │ ├── bpmn-icon-data-input-output-association.svg │ │ │ │ ├── bpmn-icon-participant.svg │ │ │ │ ├── bpmn-icon-connection.svg │ │ │ │ ├── bpmn-icon-task-none.svg │ │ │ │ ├── bpmn-icon-gateway-none.svg │ │ │ │ ├── bpmn-icon-conditional-flow.svg │ │ │ │ ├── bpmn-icon-data-output.svg │ │ │ │ ├── bpmn-icon-default-flow.svg │ │ │ │ ├── bpmn-icon-send-task.svg │ │ │ │ ├── bpmn-icon-collaboration.svg │ │ │ │ └── bpmn-icon-gateway-eventbased.svg │ │ │ ├── i18n │ │ │ │ ├── index.ts │ │ │ │ └── zh_CN │ │ │ │ │ ├── index.ts │ │ │ │ │ └── elements │ │ │ │ │ ├── gateway.ts │ │ │ │ │ └── tasks.ts │ │ │ ├── types │ │ │ │ ├── editor │ │ │ │ │ ├── global.d.ts │ │ │ │ │ └── settings.d.ts │ │ │ │ └── bpmn-moddle │ │ │ │ │ ├── bpmn-form.d.ts │ │ │ │ │ └── bpmn-instance.d.ts │ │ │ ├── bo-utils │ │ │ │ └── idUtil.ts │ │ │ ├── utils │ │ │ │ ├── BpmnAsyncElement.ts │ │ │ │ ├── EmptyXML.ts │ │ │ │ └── index.ts │ │ │ └── components │ │ │ │ ├── Panel │ │ │ │ └── components │ │ │ │ │ └── sub │ │ │ │ │ └── BpmnIcon.vue │ │ │ │ └── Toolbar │ │ │ │ └── index.tsx │ │ └── FormDesigner │ │ │ ├── utils │ │ │ ├── create-app.js │ │ │ ├── debug-console.js │ │ │ ├── event-bus.js │ │ │ ├── config.js │ │ │ ├── el-icons.js │ │ │ └── smart-vue-i18n │ │ │ │ └── index.js │ │ │ ├── svg │ │ │ ├── el │ │ │ │ ├── check.svg │ │ │ │ ├── back.svg │ │ │ │ ├── zoom-in.svg │ │ │ │ ├── delete.svg │ │ │ │ ├── view.svg │ │ │ │ ├── plus.svg │ │ │ │ ├── arrow-down.svg │ │ │ │ ├── drag-move.svg │ │ │ │ ├── info.svg │ │ │ │ ├── move-down.svg │ │ │ │ └── move-up.svg │ │ │ ├── divider.svg │ │ │ ├── slider-field.svg │ │ │ ├── file-upload-field.svg │ │ │ ├── switch-field.svg │ │ │ ├── drag.svg │ │ │ ├── custom │ │ │ │ └── search.svg │ │ │ ├── text-field.svg │ │ │ ├── button.svg │ │ │ ├── grid-col.svg │ │ │ ├── redo.svg │ │ │ ├── undo.svg │ │ │ ├── slot-component.svg │ │ │ ├── textarea-field.svg │ │ │ ├── section.svg │ │ │ ├── html-text.svg │ │ │ ├── number-field.svg │ │ │ └── card.svg │ │ │ ├── form-widget │ │ │ ├── field-widget │ │ │ │ └── index.js │ │ │ └── container-widget │ │ │ │ └── index.js │ │ │ ├── setting-panel │ │ │ └── property-editor │ │ │ │ ├── index.js │ │ │ │ ├── event-handler │ │ │ │ ├── eventMixin.js │ │ │ │ ├── onBlur-editor.vue │ │ │ │ ├── onClick-editor.vue │ │ │ │ ├── onCreated-editor.vue │ │ │ │ ├── onFocus-editor.vue │ │ │ │ ├── onInput-editor.vue │ │ │ │ ├── onMounted-editor.vue │ │ │ │ ├── onFileRemove.vue │ │ │ │ ├── onRemoteQuery-editor.vue │ │ │ │ ├── onBeforeUpload-editor.vue │ │ │ │ ├── onValidate-editor.vue │ │ │ │ ├── onAppendButtonClick-editor.vue │ │ │ │ ├── onChange-editor.vue │ │ │ │ ├── onUploadError-editor.vue │ │ │ │ ├── onSubFormRowAdd-editor.vue │ │ │ │ ├── onSubFormRowChange-editor.vue │ │ │ │ ├── onUploadSuccess-editor.vue │ │ │ │ ├── onSubFormRowInsert-editor.vue │ │ │ │ └── onSubFormRowDelete-editor.vue │ │ │ │ ├── field-radio │ │ │ │ └── radio-defaultValue-editor.vue │ │ │ │ ├── field-select │ │ │ │ └── select-defaultValue-editor.vue │ │ │ │ ├── field-cascader │ │ │ │ ├── cascader-defaultValue-editor.vue │ │ │ │ ├── checkStrictly-editor.vue │ │ │ │ ├── showAllLevels-editor.vue │ │ │ │ └── cascader-multiple-editor.vue │ │ │ │ ├── field-checkbox │ │ │ │ └── checkbox-defaultValue-editor.vue │ │ │ │ ├── border-editor.vue │ │ │ │ ├── hidden-editor.vue │ │ │ │ ├── disabled-editor.vue │ │ │ │ ├── editable-editor.vue │ │ │ │ ├── readonly-editor.vue │ │ │ │ ├── required-editor.vue │ │ │ │ ├── clearable-editor.vue │ │ │ │ ├── field-button │ │ │ │ ├── circle-editor.vue │ │ │ │ ├── plain-editor.vue │ │ │ │ ├── round-editor.vue │ │ │ │ └── icon-editor.vue │ │ │ │ ├── field-slider │ │ │ │ ├── range-editor.vue │ │ │ │ ├── vertical-editor.vue │ │ │ │ └── showStops-editor.vue │ │ │ │ ├── filterable-editor.vue │ │ │ │ ├── allowCreate-editor.vue │ │ │ │ ├── buttonStyle-editor.vue │ │ │ │ ├── field-rate │ │ │ │ ├── allowHalf-editor.vue │ │ │ │ ├── showScore-editor.vue │ │ │ │ ├── showText-editor.vue │ │ │ │ ├── rate-max-editor.vue │ │ │ │ ├── lowThreshold-editor.vue │ │ │ │ ├── highThreshold-editor.vue │ │ │ │ └── rate-defaultValue-editor.vue │ │ │ │ ├── labelHidden-editor.vue │ │ │ │ ├── uploadTip-editor.vue │ │ │ │ ├── autoFullWidth-editor.vue │ │ │ │ ├── field-static-text │ │ │ │ ├── fontSize-editor.vue │ │ │ │ ├── preWrap-editor.vue │ │ │ │ └── textContent-editor.vue │ │ │ │ ├── field-switch │ │ │ │ ├── activeText-editor.vue │ │ │ │ ├── inactiveText-editor.vue │ │ │ │ ├── activeColor-editor.vue │ │ │ │ ├── inactiveColor-editor.vue │ │ │ │ ├── switchWidth-editor.vue │ │ │ │ └── switch-defaultValue-editor.vue │ │ │ │ ├── prefixIcon-editor.vue │ │ │ │ ├── rows-editor.vue │ │ │ │ ├── showFileList-editor.vue │ │ │ │ ├── showWordLimit-editor.vue │ │ │ │ ├── suffixIcon-editor.vue │ │ │ │ ├── buttonIcon-editor.vue │ │ │ │ ├── multipleSelect-editor.vue │ │ │ │ ├── labelTooltip-editor.vue │ │ │ │ ├── withCredentials-editor.vue │ │ │ │ ├── container-sub-form │ │ │ │ ├── showBlankRow-editor.vue │ │ │ │ └── showRowNumber-editor.vue │ │ │ │ ├── container-table-cell │ │ │ │ ├── cellWidth-editor.vue │ │ │ │ ├── cellHeight-editor.vue │ │ │ │ └── wordBreak-editor.vue │ │ │ │ ├── endPlaceholder-editor.vue │ │ │ │ ├── validationHint-editor.vue │ │ │ │ ├── automaticDropdown-editor.vue │ │ │ │ ├── startPlaceholder-editor.vue │ │ │ │ ├── step-editor.vue │ │ │ │ ├── appendButtonDisabled-editor.vue │ │ │ │ ├── limit-editor.vue │ │ │ │ ├── showPassword-editor.vue │ │ │ │ ├── container-grid-col │ │ │ │ ├── grid-col-responsive-editor.vue │ │ │ │ ├── grid-col-pull-editor.vue │ │ │ │ ├── grid-col-push-editor.vue │ │ │ │ └── grid-col-offset-editor.vue │ │ │ │ ├── precision-editor.vue │ │ │ │ ├── fileMaxSize-editor.vue │ │ │ │ ├── multipleLimit-editor.vue │ │ │ │ ├── field-rich-editor │ │ │ │ └── rich-editor-contentHeight-editor.vue │ │ │ │ ├── remote-editor.vue │ │ │ │ ├── placeholder-editor.vue │ │ │ │ ├── requiredHint-editor.vue │ │ │ │ ├── multiple-editor.vue │ │ │ │ ├── field-number │ │ │ │ ├── controlsPosition-editor.vue │ │ │ │ └── number-defaultValue-editor.vue │ │ │ │ ├── labelWidth-editor.vue │ │ │ │ ├── field-color │ │ │ │ └── color-defaultValue-editor.vue │ │ │ │ ├── defaultValue-editor.vue │ │ │ │ ├── appendButton-editor.vue │ │ │ │ ├── displayStyle-editor.vue │ │ │ │ ├── uploadURL-editor.vue │ │ │ │ ├── field-html-text │ │ │ │ └── htmlContent-editor.vue │ │ │ │ ├── field-date │ │ │ │ ├── date-valueFormat-editor.vue │ │ │ │ ├── date-defaultValue-editor.vue │ │ │ │ └── date-type-editor.vue │ │ │ │ ├── labelIconClass-editor.vue │ │ │ │ ├── field-divider │ │ │ │ └── contentPosition-editor.vue │ │ │ │ ├── container-grid │ │ │ │ └── colHeight-editor.vue │ │ │ │ ├── field-date-range │ │ │ │ ├── date-range-valueFormat-editor.vue │ │ │ │ ├── date-range-type-editor.vue │ │ │ │ └── date-range-defaultValue-editor.vue │ │ │ │ ├── field-time │ │ │ │ ├── time-format-editor.vue │ │ │ │ └── time-defaultValue-editor.vue │ │ │ │ ├── label-editor.vue │ │ │ │ ├── field-time-range │ │ │ │ ├── time-range-format-editor.vue │ │ │ │ └── time-range-defaultValue-editor.vue │ │ │ │ ├── optionItems-editor.vue │ │ │ │ ├── labelIconPosition-editor.vue │ │ │ │ ├── type-editor.vue │ │ │ │ └── max-editor.vue │ │ │ ├── form-render │ │ │ ├── container-item │ │ │ │ ├── index.js │ │ │ │ └── container-item-wrapper.vue │ │ │ └── refMixin.js │ │ │ ├── styles │ │ │ └── index.scss │ │ │ ├── lang │ │ │ ├── zh-CN_extension.js │ │ │ └── en-US_extension.js │ │ │ ├── extension │ │ │ ├── extension-helper.js │ │ │ └── samples │ │ │ │ └── extension-schema.js │ │ │ └── refMixinDesign.js │ ├── assets │ │ └── images │ │ │ ├── icon.png │ │ │ └── close.png │ ├── App.vue │ ├── constants │ │ ├── cacheKey.ts │ │ └── app.ts │ └── utils │ │ ├── Widget.ts │ │ ├── EventBus.ts │ │ └── cache.ts ├── .env.development ├── .env.production ├── babel.config.js ├── favicon.ico ├── tsconfig.node.json ├── .editorconfig ├── .gitignore ├── .prettierrc ├── index.html └── .eslintrc.js ├── images ├── log.png ├── flow.png ├── form.png ├── start.png ├── approve.png ├── mainForm.png ├── bindTable.png ├── condition.png ├── dataTableSetting.png └── executionListener.png ├── document ├── images │ ├── bdt_1.png │ ├── bdt_10.png │ ├── bdt_2.png │ ├── bdt_3.png │ ├── bdt_4.png │ ├── bdt_5.png │ ├── bdt_6.png │ ├── bdt_7.png │ ├── bdt_8.png │ └── bdt_9.png └── bpmnDataTable.md └── activiti7-java ├── src ├── main │ ├── resources │ │ ├── bpmn │ │ │ ├── leave_demo.png │ │ │ └── rejectProcess.png │ │ └── mapper │ │ │ ├── SysDeployDao.xml │ │ │ ├── SysDeployNodeDao.xml │ │ │ ├── SysDeptDao.xml │ │ │ └── SysListenerDao.xml │ └── java │ │ └── com │ │ └── activiti │ │ ├── utils │ │ ├── constant │ │ │ ├── ColumnKeyType.java │ │ │ ├── NodeStatus.java │ │ │ ├── Constants.java │ │ │ └── ActivityType.java │ │ ├── page │ │ │ ├── PageDomain.java │ │ │ └── TableDataInfo.java │ │ └── enums │ │ │ └── DbType.java │ │ ├── modules │ │ ├── dao │ │ │ ├── TablePostgreSQLDao.java │ │ │ ├── TableMySQLDao.java │ │ │ ├── SysDeployDao.java │ │ │ ├── SysDeployNodeDao.java │ │ │ ├── SysDeptDao.java │ │ │ ├── SysUserDao.java │ │ │ └── SysListenerDao.java │ │ ├── entity │ │ │ ├── dto │ │ │ │ ├── SysListenerListDto.java │ │ │ │ ├── LoginUserDto.java │ │ │ │ ├── SysUserListDto.java │ │ │ │ └── workflow │ │ │ │ │ ├── FinishedListDto.java │ │ │ │ │ ├── DefinitionListDto.java │ │ │ │ │ ├── FormJsonsDto.java │ │ │ │ │ ├── StartProcessDto.java │ │ │ │ │ ├── TodoListDto.java │ │ │ │ │ ├── StartListDto.java │ │ │ │ │ ├── NodeColumnsDto.java │ │ │ │ │ ├── TodoCompleteDto.java │ │ │ │ │ ├── TableInfoDto.java │ │ │ │ │ ├── TableColumnsDto.java │ │ │ │ │ └── DeployProcessDto.java │ │ │ ├── NodeColumnItem.java │ │ │ ├── TableInfo.java │ │ │ ├── vo │ │ │ │ └── workflow │ │ │ │ │ ├── NodeColumnsVo.java │ │ │ │ │ ├── TableInfoVo.java │ │ │ │ │ ├── IdentityVo.java │ │ │ │ │ ├── TableColumnsVo.java │ │ │ │ │ └── HighlightNodeInfoVo.java │ │ │ ├── TableColumns.java │ │ │ └── SysDeployEntity.java │ │ ├── service │ │ │ ├── SysDeployNodeService.java │ │ │ ├── SysUserService.java │ │ │ ├── impl │ │ │ │ ├── SysDeployNodeServiceImpl.java │ │ │ │ ├── SysDeptServiceImpl.java │ │ │ │ ├── SysUserServiceImpl.java │ │ │ │ └── SysListenerServiceImpl.java │ │ │ ├── SysDeptService.java │ │ │ ├── SysListenerService.java │ │ │ ├── ProcessTodoService.java │ │ │ └── SysDeployService.java │ │ └── controller │ │ │ └── IndexController.java │ │ ├── config │ │ └── security │ │ │ └── SecurityConfig.java │ │ └── ActivitiApplication.java └── test │ └── java │ └── com │ └── activiti │ └── ActivitiApplicationTests.java └── .gitignore /activiti7-ui/README.md: -------------------------------------------------------------------------------- 1 | # 工作流 2 | - vue管理页面 -------------------------------------------------------------------------------- /activiti7-ui/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | not dead 4 | -------------------------------------------------------------------------------- /activiti7-ui/src/types/index.d.ts: -------------------------------------------------------------------------------- 1 | declare interface Window { 2 | axios: any; 3 | } 4 | -------------------------------------------------------------------------------- /images/log.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuguofeng-java/workflow/HEAD/images/log.png -------------------------------------------------------------------------------- /activiti7-ui/.env.development: -------------------------------------------------------------------------------- 1 | NODE_ENV=development 2 | VITE_APP_API=http://localhost:9090/app -------------------------------------------------------------------------------- /images/flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuguofeng-java/workflow/HEAD/images/flow.png -------------------------------------------------------------------------------- /images/form.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuguofeng-java/workflow/HEAD/images/form.png -------------------------------------------------------------------------------- /images/start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuguofeng-java/workflow/HEAD/images/start.png -------------------------------------------------------------------------------- /images/approve.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuguofeng-java/workflow/HEAD/images/approve.png -------------------------------------------------------------------------------- /images/mainForm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuguofeng-java/workflow/HEAD/images/mainForm.png -------------------------------------------------------------------------------- /images/bindTable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuguofeng-java/workflow/HEAD/images/bindTable.png -------------------------------------------------------------------------------- /images/condition.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuguofeng-java/workflow/HEAD/images/condition.png -------------------------------------------------------------------------------- /activiti7-ui/.env.production: -------------------------------------------------------------------------------- 1 | NODE_ENV=production 2 | VITE_APP_API=http://119.3.177.255:9090/app 3 | 4 | -------------------------------------------------------------------------------- /activiti7-ui/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: ["@vue/cli-plugin-babel/preset"], 3 | }; 4 | -------------------------------------------------------------------------------- /activiti7-ui/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuguofeng-java/workflow/HEAD/activiti7-ui/favicon.ico -------------------------------------------------------------------------------- /activiti7-ui/src/components/BpmnJs/styles/camunda-penal.scss: -------------------------------------------------------------------------------- 1 | .camunda-penal { 2 | width: 480px; 3 | } 4 | -------------------------------------------------------------------------------- /document/images/bdt_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuguofeng-java/workflow/HEAD/document/images/bdt_1.png -------------------------------------------------------------------------------- /document/images/bdt_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuguofeng-java/workflow/HEAD/document/images/bdt_10.png -------------------------------------------------------------------------------- /document/images/bdt_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuguofeng-java/workflow/HEAD/document/images/bdt_2.png -------------------------------------------------------------------------------- /document/images/bdt_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuguofeng-java/workflow/HEAD/document/images/bdt_3.png -------------------------------------------------------------------------------- /document/images/bdt_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuguofeng-java/workflow/HEAD/document/images/bdt_4.png -------------------------------------------------------------------------------- /document/images/bdt_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuguofeng-java/workflow/HEAD/document/images/bdt_5.png -------------------------------------------------------------------------------- /document/images/bdt_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuguofeng-java/workflow/HEAD/document/images/bdt_6.png -------------------------------------------------------------------------------- /document/images/bdt_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuguofeng-java/workflow/HEAD/document/images/bdt_7.png -------------------------------------------------------------------------------- /document/images/bdt_8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuguofeng-java/workflow/HEAD/document/images/bdt_8.png -------------------------------------------------------------------------------- /document/images/bdt_9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuguofeng-java/workflow/HEAD/document/images/bdt_9.png -------------------------------------------------------------------------------- /images/dataTableSetting.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuguofeng-java/workflow/HEAD/images/dataTableSetting.png -------------------------------------------------------------------------------- /images/executionListener.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuguofeng-java/workflow/HEAD/images/executionListener.png -------------------------------------------------------------------------------- /activiti7-ui/src/types/env.d.ts: -------------------------------------------------------------------------------- 1 | interface ImportMetaEnv { 2 | /** 3 | * api接口环境 4 | */ 5 | VITE_APP_API: string; 6 | } 7 | -------------------------------------------------------------------------------- /activiti7-ui/src/assets/images/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuguofeng-java/workflow/HEAD/activiti7-ui/src/assets/images/icon.png -------------------------------------------------------------------------------- /activiti7-ui/src/assets/images/close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuguofeng-java/workflow/HEAD/activiti7-ui/src/assets/images/close.png -------------------------------------------------------------------------------- /activiti7-ui/src/components/BpmnJs/styles/palette.scss: -------------------------------------------------------------------------------- 1 | .palette { 2 | width: 360px; 3 | box-sizing: border-box; 4 | padding: 16px; 5 | } 6 | -------------------------------------------------------------------------------- /activiti7-java/src/main/resources/bpmn/leave_demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuguofeng-java/workflow/HEAD/activiti7-java/src/main/resources/bpmn/leave_demo.png -------------------------------------------------------------------------------- /activiti7-java/src/main/resources/bpmn/rejectProcess.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuguofeng-java/workflow/HEAD/activiti7-java/src/main/resources/bpmn/rejectProcess.png -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/utils/create-app.js: -------------------------------------------------------------------------------- 1 | import { createApp } from "vue"; 2 | import App from "../App.vue"; 3 | 4 | export const vfApp = createApp(App); 5 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/BpmnJs/overwrite-modules/ElementFactory/index.ts: -------------------------------------------------------------------------------- 1 | import CustomElementFactory from "./CustomElementFactory"; 2 | 3 | export default { 4 | elementFactory: ["type", CustomElementFactory] 5 | }; 6 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/BpmnJs/styles/bpmn-override.scss: -------------------------------------------------------------------------------- 1 | .bts-toggle-mode { 2 | display: none; 3 | } 4 | 5 | .cmd-change-menu { 6 | transition: background-color ease 0.2s; 7 | background-color: rgba(0, 0, 0, .3); 8 | } 9 | -------------------------------------------------------------------------------- /activiti7-ui/src/App.vue: -------------------------------------------------------------------------------- 1 | 9 | 12 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/utils/debug-console.js: -------------------------------------------------------------------------------- 1 | console.log = (function (logFunc) { 2 | return function () { 3 | if (process.env.NODE_ENV === "development") { 4 | logFunc.call(console, ...arguments); 5 | } 6 | }; 7 | })(console.log); 8 | -------------------------------------------------------------------------------- /activiti7-ui/src/constants/cacheKey.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * token值 3 | */ 4 | export const CacheToken = "CacheToken"; 5 | 6 | /** 7 | * 语言 8 | */ 9 | export const CacheLang = "CacheLang"; 10 | /** 11 | * 主题 12 | */ 13 | export const CacheTheme = "CacheTheme"; 14 | -------------------------------------------------------------------------------- /activiti7-ui/src/utils/Widget.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * vfrom 展示的控件 3 | */ 4 | export const excludeWidget: string[] = [ 5 | "divider", 6 | "button", 7 | "html-text", 8 | "static-text", 9 | "grid-col", 10 | "grid", 11 | "table-cell", 12 | "table" 13 | ]; 14 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/utils/event-bus.js: -------------------------------------------------------------------------------- 1 | import mitt from "mitt"; 2 | 3 | const instance = mitt(); 4 | const eventBus = {}; 5 | eventBus.$on = instance.on; 6 | eventBus.$off = instance.off; 7 | eventBus.$emit = instance.emit; 8 | 9 | export default eventBus; 10 | -------------------------------------------------------------------------------- /activiti7-java/src/main/resources/mapper/SysDeployDao.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /activiti7-java/src/main/resources/mapper/SysDeployNodeDao.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/svg/el/check.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /activiti7-ui/src/utils/EventBus.ts: -------------------------------------------------------------------------------- 1 | import mitt from "mitt"; 2 | 3 | const instance = mitt(); 4 | const eventBus: any = {}; 5 | eventBus.on = instance.on; 6 | eventBus.off = instance.off; 7 | eventBus.emit = instance.emit; 8 | eventBus.all = instance.all; 9 | 10 | export default eventBus; 11 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/BpmnJs/bpmn-icons/bpmn-icon-association.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /activiti7-ui/tsconfig.node.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "skipLibCheck": true, 4 | // TypeScript编译器是否允许编译JavaScript文件 5 | "allowJs": true, 6 | "composite": false, 7 | "module": "esnext", 8 | "moduleResolution": "node" 9 | }, 10 | "include": ["vite.config.ts"] 11 | } 12 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/form-widget/field-widget/index.js: -------------------------------------------------------------------------------- 1 | let comps = {}; 2 | 3 | const modules = import.meta.globEager("./*.vue"); 4 | for (const path in modules) { 5 | let cname = modules[path].default.name; 6 | comps[cname] = modules[path].default; 7 | } 8 | 9 | export default comps; 10 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/index.js: -------------------------------------------------------------------------------- 1 | let comps = {}; 2 | 3 | const modules = import.meta.globEager("./**/*.vue"); 4 | for (const path in modules) { 5 | let cname = modules[path].default.name; 6 | comps[cname] = modules[path].default; 7 | } 8 | 9 | export default comps; 10 | -------------------------------------------------------------------------------- /activiti7-ui/src/types/interface.ts: -------------------------------------------------------------------------------- 1 | export interface IFunction { 2 | (x?: any): T; 3 | } 4 | 5 | export interface IObject { 6 | [key: string]: T; 7 | } 8 | 9 | export interface IHttpResponse { 10 | code: number; 11 | msg: string; 12 | data: any; 13 | rows: any; 14 | total: number; 15 | } 16 | -------------------------------------------------------------------------------- /activiti7-java/src/test/java/com/activiti/ActivitiApplicationTests.java: -------------------------------------------------------------------------------- 1 | package com.activiti; 2 | 3 | import org.junit.jupiter.api.Test; 4 | import org.springframework.boot.test.context.SpringBootTest; 5 | 6 | @SpringBootTest 7 | class ActivitiApplicationTests { 8 | 9 | @Test 10 | void contextLoads() { 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /activiti7-ui/.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = lf 8 | charset = utf-8 9 | trim_trailing_whitespace = true 10 | insert_final_newline = true 11 | 12 | [*.md] 13 | trim_trailing_whitespace = false 14 | 15 | [Makefile] 16 | indent_style = tab 17 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/form-render/container-item/index.js: -------------------------------------------------------------------------------- 1 | const modules = import.meta.globEager("./*.vue"); 2 | 3 | export default { 4 | install(app) { 5 | for (const path in modules) { 6 | let cname = modules[path].default.name; 7 | app.component(cname, modules[path].default); 8 | } 9 | } 10 | }; 11 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/form-widget/container-widget/index.js: -------------------------------------------------------------------------------- 1 | const modules = import.meta.globEager("./*.vue"); 2 | 3 | export default { 4 | install(app) { 5 | for (const path in modules) { 6 | let cname = modules[path].default.name; 7 | app.component(cname, modules[path].default); 8 | } 9 | } 10 | }; 11 | -------------------------------------------------------------------------------- /activiti7-java/src/main/java/com/activiti/utils/constant/ColumnKeyType.java: -------------------------------------------------------------------------------- 1 | package com.activiti.utils.constant; 2 | 3 | /** 4 | * 数据库类型 5 | * 6 | * @author liuguofeng 7 | * @date 2023/12/15 16:51 8 | **/ 9 | public class ColumnKeyType { 10 | /** 11 | * 主键 12 | */ 13 | public static final String PRIMARY_KEY = "PRI"; 14 | 15 | } 16 | -------------------------------------------------------------------------------- /activiti7-java/src/main/java/com/activiti/modules/dao/TablePostgreSQLDao.java: -------------------------------------------------------------------------------- 1 | package com.activiti.modules.dao; 2 | 3 | import org.apache.ibatis.annotations.Mapper; 4 | 5 | /** 6 | * PostgreSQL表结构 7 | * 8 | * @author liuguofeng 9 | * @date 2023/12/13 10:45 10 | **/ 11 | @Mapper 12 | public interface TablePostgreSQLDao extends TableDao { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /activiti7-ui/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /dist 4 | 5 | 6 | # local env files 7 | .env.local 8 | .env.*.local 9 | 10 | # Log files 11 | npm-debug.log* 12 | yarn-debug.log* 13 | yarn-error.log* 14 | pnpm-debug.log* 15 | 16 | # Editor directories and files 17 | .idea 18 | .vscode 19 | *.suo 20 | *.ntvs* 21 | *.njsproj 22 | *.sln 23 | *.sw? 24 | -------------------------------------------------------------------------------- /activiti7-java/src/main/java/com/activiti/modules/dao/TableMySQLDao.java: -------------------------------------------------------------------------------- 1 | package com.activiti.modules.dao; 2 | 3 | import org.apache.ibatis.annotations.Mapper; 4 | 5 | 6 | 7 | /** 8 | * MySQL表结构 9 | * 10 | * @author liuguofeng 11 | * @date 2023/12/13 10:16 12 | **/ 13 | @Mapper 14 | public interface TableMySQLDao extends TableDao { 15 | 16 | 17 | } 18 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/BpmnJs/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { createI18n } from "vue-i18n"; 2 | import zh_CN from "./zh_CN"; 3 | 4 | export const defaultLang = "zh_CN"; 5 | 6 | const i18n = createI18n({ 7 | legacy: false, 8 | globalInjection: true, 9 | locale: defaultLang, 10 | messages: { 11 | zh_CN 12 | } 13 | }); 14 | 15 | export default i18n; 16 | -------------------------------------------------------------------------------- /activiti7-java/src/main/java/com/activiti/utils/page/PageDomain.java: -------------------------------------------------------------------------------- 1 | package com.activiti.utils.page; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * 分页数据 7 | */ 8 | @Data 9 | public class PageDomain { 10 | /** 11 | * 当前记录起始索引 12 | */ 13 | private Integer pageNo; 14 | 15 | /** 16 | * 每页显示记录数 17 | */ 18 | private Integer pageSize; 19 | } 20 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/BpmnJs/bpmn-icons/bpmn-icon-lane.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/BpmnJs/types/editor/global.d.ts: -------------------------------------------------------------------------------- 1 | import { ElementLike } from "diagram-js/lib/core"; 2 | 3 | declare global { 4 | interface Window { 5 | bpmnInstances: any; 6 | __messageBox: MessageApiInjection; 7 | } 8 | 9 | type BpmnElement = ElementLike & { type: string }; 10 | } 11 | 12 | declare interface Window { 13 | bpmnInstances: any; 14 | } 15 | -------------------------------------------------------------------------------- /activiti7-java/src/main/java/com/activiti/modules/entity/dto/SysListenerListDto.java: -------------------------------------------------------------------------------- 1 | package com.activiti.modules.entity.dto; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * 监听器列表参数 7 | * @author liuguofeng 8 | * @date 2023/12/06 22:30 9 | **/ 10 | @Data 11 | public class SysListenerListDto { 12 | /** 13 | * 监听器名称 14 | */ 15 | private String listenerName; 16 | } 17 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/svg/el/back.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/BpmnJs/overwrite-modules/ContextPad/index.ts: -------------------------------------------------------------------------------- 1 | import { ModuleDeclaration } from "didi"; 2 | import rewriteContextPadProvider from "./rewriteContextPadProvider"; 3 | 4 | const rewriteContextPad: ModuleDeclaration = { 5 | __init__: ["contextPadProvider"], 6 | contextPadProvider: ["type", rewriteContextPadProvider] 7 | }; 8 | 9 | export default rewriteContextPad; 10 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/BpmnJs/i18n/zh_CN/index.ts: -------------------------------------------------------------------------------- 1 | import tasks from "./elements/tasks"; 2 | import events from "./elements/events"; 3 | import gateway from "./elements/gateway"; 4 | import other from "./elements/other"; 5 | import lint from "./lint"; 6 | 7 | export default { 8 | elements: { 9 | ...other, 10 | ...events, 11 | ...gateway, 12 | ...tasks 13 | }, 14 | lint 15 | }; 16 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/event-handler/eventMixin.js: -------------------------------------------------------------------------------- 1 | import emitter from "@/components/FormDesigner/utils/emitter"; 2 | 3 | export default { 4 | mixins: [emitter], 5 | created() {}, 6 | methods: { 7 | editEventHandler(eventName, eventParams) { 8 | this.dispatch("SettingPanel", "editEventHandler", [eventName, [...eventParams]]); 9 | } 10 | } 11 | }; 12 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/field-radio/radio-defaultValue-editor.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/svg/el/zoom-in.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/BpmnJs/overwrite-modules/Palette/index.ts: -------------------------------------------------------------------------------- 1 | import { ModuleDeclaration } from "didi"; 2 | import rerenderPaletteProvider from "./rewritePaletteProvider"; 3 | 4 | // 使用 paletteProvider 同名参数 覆盖 默认 paletteProvider 构造函数 5 | const RerenderPalette: ModuleDeclaration = { 6 | __init__: ["paletteProvider"], 7 | paletteProvider: ["type", rerenderPaletteProvider] 8 | }; 9 | 10 | export default RerenderPalette; 11 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/field-select/select-defaultValue-editor.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /activiti7-java/src/main/java/com/activiti/utils/constant/NodeStatus.java: -------------------------------------------------------------------------------- 1 | package com.activiti.utils.constant; 2 | 3 | /** 4 | * 节点状态 5 | * 6 | * @author liuguofeng 7 | * @date 2023/11/22 09:01 8 | **/ 9 | public class NodeStatus { 10 | /** 11 | * 已完成的节点 12 | */ 13 | public final static int EXECUTED = 1; 14 | 15 | /** 16 | * 未完成的节点 17 | */ 18 | public final static int UNFINISHED = 2; 19 | } 20 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/field-cascader/cascader-defaultValue-editor.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/field-checkbox/checkbox-defaultValue-editor.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/BpmnJs/styles/designer.scss: -------------------------------------------------------------------------------- 1 | @import 'bpmn-js/dist/assets/diagram-js.css'; // 基础样式 2 | @import 'bpmn-js/dist/assets/bpmn-font/css/bpmn.css'; // 节点基础图标 3 | @import 'bpmn-js/dist/assets/bpmn-font/css/bpmn-codes.css'; // 节点完整图标 4 | 5 | 6 | .designer { 7 | flex: 1; 8 | } 9 | 10 | .djs-minimap div.toggle { 11 | display: none; 12 | } 13 | 14 | // 修复选中时填充色 15 | .layer-selectionOutline { 16 | fill: none; 17 | } 18 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/BpmnJs/i18n/zh_CN/elements/gateway.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | Gateway: "网关", 3 | "Exclusive Gateway": "互斥网关", 4 | "Parallel Gateway": "并行网关", 5 | "Inclusive Gateway": "相容网关", 6 | "Complex Gateway": "复杂网关", 7 | "Event based Gateway": "事件网关", 8 | ExclusiveGateway: "互斥网关", 9 | ParallelGateway: "并行网关", 10 | InclusiveGateway: "相容网关", 11 | ComplexGateway: "复杂网关", 12 | EventBasedGateway: "事件网关" 13 | }; 14 | -------------------------------------------------------------------------------- /activiti7-java/src/main/java/com/activiti/modules/entity/dto/LoginUserDto.java: -------------------------------------------------------------------------------- 1 | package com.activiti.modules.entity.dto; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * 登录参数 7 | * 8 | * @author liuguofeng 9 | * @date 2023/10/18 11:12 10 | **/ 11 | @Data 12 | public class LoginUserDto { 13 | 14 | /** 15 | * 用户名称 16 | */ 17 | private String userName; 18 | 19 | /** 20 | * 密码 21 | */ 22 | private String password; 23 | } 24 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/BpmnJs/bpmn-icons/bpmn-icon-data-input-output-association.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/styles/index.scss: -------------------------------------------------------------------------------- 1 | 2 | html { 3 | height: 100%; 4 | box-sizing: border-box; 5 | } 6 | 7 | body { 8 | height: 100%; 9 | margin: 0; /* */ 10 | background-color: #ffffff; 11 | -moz-osx-font-smoothing: grayscale; 12 | -webkit-font-smoothing: antialiased; 13 | text-rendering: optimizeLegibility; 14 | font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, Microsoft YaHei, Arial, sans-serif; 15 | } 16 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/BpmnJs/types/bpmn-moddle/bpmn-form.d.ts: -------------------------------------------------------------------------------- 1 | declare interface ExecutionListenerForm extends BpmnExecutionListener { 2 | type: string; 3 | } 4 | 5 | declare interface FormItemVisible { 6 | listenerType: string; 7 | scriptType: string; 8 | } 9 | 10 | declare interface ConditionalForm { 11 | conditionType?: string; 12 | expression?: string; 13 | scriptType?: string; 14 | language?: string; 15 | body?: string; 16 | resource?: string; 17 | } 18 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/svg/divider.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /activiti7-java/src/main/java/com/activiti/modules/service/SysDeployNodeService.java: -------------------------------------------------------------------------------- 1 | package com.activiti.modules.service; 2 | 3 | import com.activiti.modules.entity.SysDeployNodeEntity; 4 | import com.baomidou.mybatisplus.extension.service.IService; 5 | 6 | /** 7 | * 流程部署节点数据 8 | * 9 | * @author liuguofeng 10 | * @email liuguofeng-java@qq.com 11 | * @date 2023-11-28 14:50:18 12 | */ 13 | public interface SysDeployNodeService extends IService { 14 | 15 | } 16 | 17 | -------------------------------------------------------------------------------- /activiti7-ui/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "singleQuote": false, 3 | "semi": true, 4 | "trailingComma": "none", 5 | "printWidth": 100, 6 | "arrowParens": "always", 7 | "tabWidth": 2, 8 | "endOfLine": "auto", 9 | "overrides": [ 10 | { 11 | "files": ".prettierrc", 12 | "options": { "parser": "json" } 13 | }, 14 | { 15 | "files": "*.vue", 16 | "options": { 17 | "parser": "vue", 18 | "printWidth": 300 19 | } 20 | } 21 | ] 22 | } 23 | -------------------------------------------------------------------------------- /activiti7-java/src/main/java/com/activiti/config/security/SecurityConfig.java: -------------------------------------------------------------------------------- 1 | package com.activiti.config.security; 2 | 3 | import org.springframework.context.annotation.Configuration; 4 | import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; 5 | 6 | /** 7 | * 该配置跳过spring-security的验证 8 | * 9 | * @author liuguofeng 10 | * @date 2023/10/17 10:52 11 | **/ 12 | @Configuration 13 | public class SecurityConfig extends WebSecurityConfigurerAdapter { 14 | } -------------------------------------------------------------------------------- /activiti7-ui/src/components/BpmnJs/bpmn-icons/bpmn-icon-participant.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/svg/el/delete.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /activiti7-java/src/main/java/com/activiti/modules/dao/SysDeployDao.java: -------------------------------------------------------------------------------- 1 | package com.activiti.modules.dao; 2 | 3 | import com.activiti.modules.entity.SysDeployEntity; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | * 流程部署详情 9 | * 10 | * @author liuguofeng 11 | * @email liuguofeng-java@qq.com 12 | * @date 2023-12-15 11:48:02 13 | */ 14 | @Mapper 15 | public interface SysDeployDao extends BaseMapper { 16 | 17 | } 18 | -------------------------------------------------------------------------------- /activiti7-java/src/main/java/com/activiti/modules/dao/SysDeployNodeDao.java: -------------------------------------------------------------------------------- 1 | package com.activiti.modules.dao; 2 | 3 | import com.activiti.modules.entity.SysDeployNodeEntity; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | * 流程部署节点数据 9 | * 10 | * @author liuguofeng 11 | * @email liuguofeng-java@qq.com 12 | * @date 2023-11-28 14:50:18 13 | */ 14 | @Mapper 15 | public interface SysDeployNodeDao extends BaseMapper { 16 | 17 | } 18 | -------------------------------------------------------------------------------- /activiti7-java/src/main/java/com/activiti/modules/entity/NodeColumnItem.java: -------------------------------------------------------------------------------- 1 | package com.activiti.modules.entity; 2 | 3 | import lombok.Data; 4 | 5 | import java.io.Serializable; 6 | 7 | /** 8 | * 绑定的具体字段 9 | * 10 | * @author liuguofeng 11 | * @date 2023/12/13 10:23 12 | **/ 13 | @Data 14 | public class NodeColumnItem implements Serializable { 15 | 16 | /** 17 | * 表字段名称 18 | */ 19 | private String columnName; 20 | 21 | /** 22 | * 行备注 23 | */ 24 | private String columnComment; 25 | } 26 | -------------------------------------------------------------------------------- /activiti7-java/src/main/java/com/activiti/modules/entity/TableInfo.java: -------------------------------------------------------------------------------- 1 | package com.activiti.modules.entity; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * 表信息 7 | * 8 | * @author liuguofeng 9 | * @date 2023/12/13 10:23 10 | **/ 11 | @Data 12 | public class TableInfo { 13 | 14 | /** 15 | * 表名称 16 | */ 17 | private String tableName; 18 | 19 | /** 20 | * 表备注 21 | */ 22 | private String tableComment; 23 | 24 | /** 25 | * 创建时间 26 | */ 27 | private String createTime; 28 | 29 | } 30 | -------------------------------------------------------------------------------- /activiti7-java/src/main/java/com/activiti/utils/enums/DbType.java: -------------------------------------------------------------------------------- 1 | package com.activiti.utils.enums; 2 | 3 | import lombok.Getter; 4 | 5 | /** 6 | * 数据库类型 7 | * 8 | * @author liuguofeng 9 | * @date 2023/12/13 11:12 10 | **/ 11 | @Getter 12 | public enum DbType { 13 | /** 14 | * MySql数据库 15 | */ 16 | MY_SQL("MySQL"), 17 | /** 18 | * PostgreSql数据库 19 | */ 20 | POSTGRE_SQL("PostgreSQl"); 21 | 22 | private final String key; 23 | DbType(String key) { 24 | this.key = key; 25 | } 26 | } 27 | 28 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/svg/el/view.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/svg/el/plus.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /activiti7-ui/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 工作流 8 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/svg/slider-field.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /activiti7-java/.gitignore: -------------------------------------------------------------------------------- 1 | HELP.md 2 | target/ 3 | !.mvn/wrapper/maven-wrapper.jar 4 | !**/src/main/**/target/ 5 | !**/src/test/**/target/ 6 | 7 | ### STS ### 8 | .apt_generated 9 | .classpath 10 | .factorypath 11 | .project 12 | .settings 13 | .springBeans 14 | .sts4-cache 15 | 16 | ### IntelliJ IDEA ### 17 | .idea 18 | *.iws 19 | *.iml 20 | *.ipr 21 | 22 | ### NetBeans ### 23 | /nbproject/private/ 24 | /nbbuild/ 25 | /dist/ 26 | /nbdist/ 27 | /.nb-gradle/ 28 | build/ 29 | !**/src/main/**/build/ 30 | !**/src/test/**/build/ 31 | /logs/ 32 | 33 | ### VS Code ### 34 | .vscode/ 35 | -------------------------------------------------------------------------------- /activiti7-java/src/main/java/com/activiti/modules/entity/dto/SysUserListDto.java: -------------------------------------------------------------------------------- 1 | package com.activiti.modules.entity.dto; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * 用户信息列表参数 7 | * 8 | * @author liuguofeng 9 | * @date 2023/10/20 09:48 10 | **/ 11 | @Data 12 | public class SysUserListDto { 13 | // 用户名称 14 | private String userName; 15 | 16 | // 手机号 17 | private String mobile; 18 | 19 | // 邮箱 20 | private String email; 21 | 22 | // 注册开始时间 23 | private String startTime; 24 | 25 | // 注册结束时间 26 | private String endTime; 27 | } 28 | -------------------------------------------------------------------------------- /activiti7-java/src/main/java/com/activiti/modules/entity/dto/workflow/FinishedListDto.java: -------------------------------------------------------------------------------- 1 | package com.activiti.modules.entity.dto.workflow; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * 已办任务列表参数 7 | * 8 | * @author liuguofeng 9 | * @date 2024/01/08 09:39 10 | **/ 11 | @Data 12 | public class FinishedListDto { 13 | /** 14 | * 用户id 15 | */ 16 | private String userId; 17 | 18 | /** 19 | * 流程定义名称 20 | */ 21 | private String definitionName; 22 | 23 | /** 24 | * 流程定义key 25 | */ 26 | private String definitionKey; 27 | } 28 | -------------------------------------------------------------------------------- /activiti7-java/src/main/java/com/activiti/modules/entity/dto/workflow/DefinitionListDto.java: -------------------------------------------------------------------------------- 1 | package com.activiti.modules.entity.dto.workflow; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * 流程定义列表参数 7 | * 8 | * @author liuguofeng 9 | * @date 2023/10/21 11:38 10 | **/ 11 | @Data 12 | public class DefinitionListDto { 13 | /** 14 | * 流程定义名称 15 | */ 16 | private String definitionName; 17 | 18 | /** 19 | * 流程定义key 20 | */ 21 | private String definitionKey; 22 | 23 | /** 24 | * 是否激活 25 | */ 26 | private boolean isActive; 27 | } 28 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/BpmnJs/bo-utils/idUtil.ts: -------------------------------------------------------------------------------- 1 | import { Element } from "diagram-js/lib/model/Types"; 2 | import modelerStore from "@/store/modeler"; 3 | 4 | export function getIdValue(element: Element): string { 5 | return element.businessObject.id; 6 | } 7 | 8 | export function setIdValue(element: Element, value: string) { 9 | const store = modelerStore(); 10 | const modeling = store.getModeling; 11 | 12 | // eslint-disable-next-line @typescript-eslint/ban-ts-comment 13 | // @ts-ignore 14 | modeling.updateProperties(element, { 15 | id: value 16 | }); 17 | } 18 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/border-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/hidden-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /activiti7-java/src/main/java/com/activiti/modules/entity/vo/workflow/NodeColumnsVo.java: -------------------------------------------------------------------------------- 1 | package com.activiti.modules.entity.vo.workflow; 2 | 3 | import com.activiti.modules.entity.NodeColumnItem; 4 | import lombok.Data; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * 节点绑定数据库表字段的数据 10 | * 11 | * @author liuguofeng 12 | * @date 2023/12/15 10:33 13 | **/ 14 | @Data 15 | public class NodeColumnsVo { 16 | /** 17 | * 流程定义节点唯一标识 18 | */ 19 | private String activityId; 20 | 21 | /** 22 | * 绑定的具体字段 23 | */ 24 | private List columns; 25 | } 26 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/lang/zh-CN_extension.js: -------------------------------------------------------------------------------- 1 | export default { 2 | extension: { 3 | widgetLabel: { 4 | card: "卡片", 5 | alert: "提示" 6 | }, 7 | 8 | setting: { 9 | cardFolded: "是否收起", 10 | cardShowFold: "显示折叠按钮", 11 | cardWidth: "卡片宽度", 12 | cardShadow: "显示阴影", 13 | 14 | alertTitle: "标题", 15 | alertType: "类型", 16 | description: "辅助性文字", 17 | closable: "是否可关闭", 18 | closeText: "关闭按钮文字", 19 | center: "文字居中", 20 | showIcon: "显示图标", 21 | effect: "显示效果" 22 | } 23 | } 24 | }; 25 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/disabled-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/editable-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/readonly-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/required-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/clearable-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/field-button/circle-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/field-button/plain-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/field-button/round-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/field-slider/range-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/utils/config.js: -------------------------------------------------------------------------------- 1 | export const VARIANT_FORM_VERSION = "3.0.10"; 2 | 3 | //export const MOCK_CASE_URL = 'https://www.fastmock.site/mock/2de212e0dc4b8e0885fea44ab9f2e1d0/vform/' 4 | export const MOCK_CASE_URL = "https://ks3-cn-beijing.ksyuncs.com/vform-static/vcase/"; 5 | 6 | //export const ACE_BASE_PATH = 'public/lib/ace/src-min-noconflict' 7 | export const ACE_BASE_PATH = "https://ks3-cn-beijing.ksyun.com/vform2021/ace-mini"; 8 | 9 | export const BEAUTIFIER_PATH = 10 | "https://ks3-cn-beijing.ksyun.com/vform2021/js-beautify/1.14.0/beautifier.min.js"; 11 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/filterable-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /activiti7-java/src/main/java/com/activiti/modules/entity/TableColumns.java: -------------------------------------------------------------------------------- 1 | package com.activiti.modules.entity; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * 表结构 7 | * 8 | * @author liuguofeng 9 | * @date 2023/12/13 10:23 10 | **/ 11 | @Data 12 | public class TableColumns { 13 | 14 | /** 15 | * 行名称 16 | */ 17 | private String columnName; 18 | /** 19 | * 数据类型 20 | */ 21 | private String dataType; 22 | /** 23 | * 行备注 24 | */ 25 | private String columnComment; 26 | /** 27 | * 行健 28 | */ 29 | private String columnKey; 30 | 31 | } 32 | -------------------------------------------------------------------------------- /activiti7-java/src/main/java/com/activiti/modules/entity/vo/workflow/TableInfoVo.java: -------------------------------------------------------------------------------- 1 | package com.activiti.modules.entity.vo.workflow; 2 | 3 | import lombok.Data; 4 | 5 | import java.util.List; 6 | 7 | /** 8 | * 表信息 9 | * 10 | * @author liuguofeng 11 | * @date 2023/12/13 10:23 12 | **/ 13 | @Data 14 | public class TableInfoVo { 15 | 16 | /** 17 | * 表名称 18 | */ 19 | private String tableName; 20 | 21 | /** 22 | * 表备注 23 | */ 24 | private String tableComment; 25 | 26 | /** 27 | * 数据库表信息 28 | */ 29 | private List columns; 30 | } 31 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/allowCreate-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/buttonStyle-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/field-button/icon-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/field-rate/allowHalf-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/field-rate/showScore-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/field-rate/showText-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/field-slider/vertical-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/labelHidden-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/uploadTip-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/autoFullWidth-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/field-slider/showStops-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/field-static-text/fontSize-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/field-switch/activeText-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/prefixIcon-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/rows-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/showFileList-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/showWordLimit-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/suffixIcon-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /activiti7-java/src/main/java/com/activiti/modules/entity/vo/workflow/IdentityVo.java: -------------------------------------------------------------------------------- 1 | package com.activiti.modules.entity.vo.workflow; 2 | 3 | import lombok.Data; 4 | 5 | import java.util.List; 6 | 7 | 8 | /** 9 | * 流程记录身份信息 10 | * 11 | * @author liuguofeng 12 | * @date 2023/11/16 10:04 13 | **/ 14 | @Data 15 | public class IdentityVo { 16 | 17 | /** 18 | * 审批人用户名称 19 | */ 20 | private String userName; 21 | 22 | /** 23 | * 候选人信息 24 | */ 25 | private List userNames; 26 | 27 | /** 28 | * 候选组信息 29 | */ 30 | private List groupNames; 31 | } 32 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/buttonIcon-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/multipleSelect-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /activiti7-java/src/main/java/com/activiti/modules/controller/IndexController.java: -------------------------------------------------------------------------------- 1 | package com.activiti.modules.controller; 2 | 3 | import org.springframework.web.bind.annotation.GetMapping; 4 | import org.springframework.web.bind.annotation.RequestMapping; 5 | import org.springframework.web.bind.annotation.RestController; 6 | 7 | /** 8 | * 测试 9 | * @author liuguofeng 10 | * @date 2023/10/17 10:46 11 | **/ 12 | @RestController 13 | @RequestMapping("/index") 14 | public class IndexController { 15 | 16 | @GetMapping("demo01") 17 | public String demo01(){ 18 | return "hello world"; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /activiti7-java/src/main/java/com/activiti/modules/entity/dto/workflow/FormJsonsDto.java: -------------------------------------------------------------------------------- 1 | package com.activiti.modules.entity.dto.workflow; 2 | 3 | import lombok.Data; 4 | 5 | import java.util.Map; 6 | 7 | /** 8 | * 动态表单数据结构 9 | * @author liuguofeng 10 | * @date 2023/11/29 17:25 11 | **/ 12 | @Data 13 | public class FormJsonsDto { 14 | 15 | /** 16 | * 流程定义节点唯一标识 17 | */ 18 | private String activityId; 19 | 20 | /** 21 | * 表单结构 22 | */ 23 | private Map formJson; 24 | 25 | /** 26 | * 是否是主表单 27 | */ 28 | private int isMainFrom; 29 | ; 30 | } 31 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/field-static-text/preWrap-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/field-switch/inactiveText-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/labelTooltip-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/withCredentials-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /activiti7-java/src/main/java/com/activiti/modules/service/SysUserService.java: -------------------------------------------------------------------------------- 1 | package com.activiti.modules.service; 2 | 3 | import com.activiti.modules.entity.SysUserEntity; 4 | import com.activiti.modules.entity.dto.SysUserListDto; 5 | import com.baomidou.mybatisplus.extension.service.IService; 6 | 7 | import java.util.List; 8 | 9 | 10 | /** 11 | * 系统用户 12 | */ 13 | public interface SysUserService extends IService { 14 | 15 | 16 | /** 17 | * 系统用户分页列表 18 | * 19 | * @param dto 分页参数 20 | * @return 列表 21 | */ 22 | List queryPage(SysUserListDto dto); 23 | } 24 | -------------------------------------------------------------------------------- /activiti7-java/src/main/java/com/activiti/utils/constant/Constants.java: -------------------------------------------------------------------------------- 1 | package com.activiti.utils.constant; 2 | 3 | /** 4 | * 常量参数 5 | * 6 | * @author liuguofeng 7 | * @date 2023/11/04 12:27 8 | **/ 9 | public class Constants { 10 | 11 | /** 12 | * 文件上传前缀 13 | */ 14 | public final static String RESOURCE_PREFIX = "upload"; 15 | 16 | /** 17 | * 前端在请求头内传的token,为了模拟登录, 18 | * 其实Token就是userId 19 | */ 20 | public final static String TOKEN = "Token"; 21 | 22 | /** 23 | * 发起人key 24 | */ 25 | public final static String PROCESS_INITIATOR = "initiator"; 26 | 27 | } 28 | -------------------------------------------------------------------------------- /activiti7-java/src/main/resources/mapper/SysDeptDao.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 14 | 15 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/BpmnJs/bpmn-icons/bpmn-icon-connection.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/container-sub-form/showBlankRow-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/container-table-cell/cellWidth-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/endPlaceholder-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/field-cascader/checkStrictly-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/field-cascader/showAllLevels-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/validationHint-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/automaticDropdown-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/container-sub-form/showRowNumber-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/container-table-cell/cellHeight-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/container-table-cell/wordBreak-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/field-switch/activeColor-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /activiti7-java/src/main/java/com/activiti/modules/entity/dto/workflow/StartProcessDto.java: -------------------------------------------------------------------------------- 1 | package com.activiti.modules.entity.dto.workflow; 2 | 3 | import lombok.Data; 4 | 5 | import java.util.Map; 6 | 7 | /** 8 | * 启动流程实例参数 9 | * 10 | * @author liuguofeng 11 | * @date 2023/11/23 21:05 12 | **/ 13 | @Data 14 | public class StartProcessDto { 15 | /** 16 | * 业务id 17 | */ 18 | private String businessKey; 19 | 20 | /** 21 | * 流程实例id 22 | */ 23 | private String definitionId; 24 | 25 | /** 26 | * 启动流程时的表单参数,用于流程变量和回显 27 | */ 28 | private Map variables; 29 | } 30 | -------------------------------------------------------------------------------- /activiti7-java/src/main/java/com/activiti/modules/entity/vo/workflow/TableColumnsVo.java: -------------------------------------------------------------------------------- 1 | package com.activiti.modules.entity.vo.workflow; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * 表结构 7 | * 8 | * @author liuguofeng 9 | * @date 2023/12/13 10:23 10 | **/ 11 | @Data 12 | public class TableColumnsVo { 13 | 14 | /** 15 | * 行名称 16 | */ 17 | private String columnName; 18 | /** 19 | * 数据类型 20 | */ 21 | private String dataType; 22 | /** 23 | * 行备注 24 | */ 25 | private String columnComment; 26 | /** 27 | * 行健 28 | */ 29 | private String columnKey; 30 | 31 | } 32 | -------------------------------------------------------------------------------- /activiti7-java/src/main/java/com/activiti/modules/service/impl/SysDeployNodeServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.activiti.modules.service.impl; 2 | 3 | import com.activiti.modules.dao.SysDeployNodeDao; 4 | import com.activiti.modules.entity.SysDeployNodeEntity; 5 | import com.activiti.modules.service.SysDeployNodeService; 6 | import org.springframework.stereotype.Service; 7 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 8 | 9 | 10 | @Service("sysNodeDataService") 11 | public class SysDeployNodeServiceImpl extends ServiceImpl implements SysDeployNodeService { 12 | 13 | 14 | 15 | } -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/field-switch/inactiveColor-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/startPlaceholder-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/step-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/BpmnJs/utils/BpmnAsyncElement.ts: -------------------------------------------------------------------------------- 1 | import { ModdleElement } from "bpmn-moddle"; 2 | import modeler from "@/store/modeler"; 3 | 4 | export function isAsyncBefore(bo: ModdleElement): boolean { 5 | const prefix = modeler().getProcessEngine; 6 | return !!(bo.get(`${prefix}:asyncBefore`) || bo.get(`${prefix}:async`)); 7 | } 8 | 9 | export function isAsyncAfter(bo: ModdleElement): boolean { 10 | const prefix = modeler().getProcessEngine; 11 | return !!bo.get(`${prefix}:asyncAfter`); 12 | } 13 | 14 | export function isAsync(bo: ModdleElement): boolean { 15 | return isAsyncAfter(bo) || isAsyncBefore(bo); 16 | } 17 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/appendButtonDisabled-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /activiti7-java/src/main/java/com/activiti/modules/entity/dto/workflow/TodoListDto.java: -------------------------------------------------------------------------------- 1 | package com.activiti.modules.entity.dto.workflow; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * 我发起任务列表参数 7 | * @author liuguofeng 8 | * @date 2023/11/04 14:11 9 | **/ 10 | @Data 11 | public class TodoListDto { 12 | /** 13 | * 用户id 14 | */ 15 | private String userId; 16 | 17 | /** 18 | * 部门id(组id) 19 | */ 20 | private String deptId; 21 | 22 | /** 23 | * 流程定义名称 24 | */ 25 | private String definitionName; 26 | 27 | /** 28 | * 流程定义key 29 | */ 30 | private String definitionKey; 31 | } 32 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/lang/en-US_extension.js: -------------------------------------------------------------------------------- 1 | export default { 2 | extension: { 3 | widgetLabel: { 4 | card: "Card", 5 | alert: "Alert" 6 | }, 7 | 8 | setting: { 9 | cardFolded: "Folded", 10 | cardShowFold: "Show Fold", 11 | cardWidth: "Width Of Card", 12 | cardShadow: "Shadow", 13 | 14 | alertTitle: "Title", 15 | alertType: "Type", 16 | description: "Description", 17 | closable: "Closable", 18 | closeText: "Text On Close Btn", 19 | center: "Center", 20 | showIcon: "Show Icon", 21 | effect: "Effect" 22 | } 23 | } 24 | }; 25 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/field-static-text/textContent-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/limit-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/showPassword-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /activiti7-java/src/main/java/com/activiti/modules/entity/dto/workflow/StartListDto.java: -------------------------------------------------------------------------------- 1 | package com.activiti.modules.entity.dto.workflow; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * 我发起任务列表参数 7 | * @author liuguofeng 8 | * @date 2023/11/04 14:11 9 | **/ 10 | @Data 11 | public class StartListDto { 12 | /** 13 | * 用户id 14 | */ 15 | private String userId; 16 | 17 | /** 18 | * 业务key 19 | */ 20 | private String businessKey; 21 | 22 | /** 23 | * 流程定义名称 24 | */ 25 | private String definitionName; 26 | 27 | /** 28 | * 流程定义key 29 | */ 30 | private String definitionKey; 31 | } 32 | -------------------------------------------------------------------------------- /activiti7-java/src/main/resources/mapper/SysListenerDao.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 14 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/container-grid-col/grid-col-responsive-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/field-switch/switchWidth-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/precision-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /activiti7-ui/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | env: { 4 | node: true, 5 | "vue/setup-compiler-macros": true 6 | }, 7 | extends: [ 8 | "plugin:vue/vue3-essential", 9 | "eslint:recommended", 10 | "@vue/typescript/recommended", 11 | "@vue/prettier" 12 | ], 13 | parserOptions: { 14 | ecmaVersion: 2020, 15 | ecmaFeatures: { 16 | jsx: true 17 | } 18 | }, 19 | rules: { 20 | "no-console": "off", 21 | "no-debugger": "off", 22 | "@typescript-eslint/no-explicit-any": ["off"], 23 | "@typescript-eslint/no-var-requires": 0, 24 | "vue/multi-word-component-names": "off" 25 | } 26 | }; 27 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/fileMaxSize-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/field-rate/rate-max-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/container-grid-col/grid-col-pull-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/container-grid-col/grid-col-push-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/multipleLimit-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/svg/file-upload-field.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /activiti7-java/src/main/java/com/activiti/modules/service/SysDeptService.java: -------------------------------------------------------------------------------- 1 | package com.activiti.modules.service; 2 | 3 | import com.activiti.modules.entity.SysDeptEntity; 4 | import com.baomidou.mybatisplus.extension.service.IService; 5 | 6 | import java.util.List; 7 | import java.util.Map; 8 | 9 | /** 10 | * 部门表 11 | * 12 | * @author liuguofeng 13 | * @email liuguofeng-java@qq.com 14 | * @date 2023-10-22 11:27:47 15 | */ 16 | public interface SysDeptService extends IService { 17 | 18 | /** 19 | * 部门分页列表 20 | * 21 | * @param dto 分页参数 22 | * @return 列表 23 | */ 24 | List queryPage(SysDeptEntity dto); 25 | } 26 | 27 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/container-grid-col/grid-col-offset-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /activiti7-java/src/main/java/com/activiti/modules/entity/dto/workflow/NodeColumnsDto.java: -------------------------------------------------------------------------------- 1 | package com.activiti.modules.entity.dto.workflow; 2 | 3 | import com.activiti.modules.entity.NodeColumnItem; 4 | import lombok.Data; 5 | 6 | import javax.validation.constraints.NotBlank; 7 | import java.util.List; 8 | 9 | /** 10 | * 节点绑定数据库表字段的数据 11 | * 12 | * @author liuguofeng 13 | * @date 2023/12/15 10:33 14 | **/ 15 | @Data 16 | public class NodeColumnsDto { 17 | /** 18 | * 流程定义节点唯一标识 19 | */ 20 | @NotBlank(message = "流程定义节点唯一标识") 21 | private String activityId; 22 | 23 | /** 24 | * 绑定的具体字段 25 | */ 26 | private List columns; 27 | } 28 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/extension/extension-helper.js: -------------------------------------------------------------------------------- 1 | import { 2 | addContainerWidgetSchema, 3 | addBasicFieldSchema, 4 | addAdvancedFieldSchema, 5 | addCustomWidgetSchema 6 | } from "@/components/FormDesigner/widget-panel/widgetsConfig"; 7 | import { 8 | registerCommonProperty, 9 | registerAdvancedProperty, 10 | registerEventProperty 11 | } from "@/components/FormDesigner/setting-panel/propertyRegister"; 12 | 13 | export default { 14 | addContainerWidgetSchema, 15 | addBasicFieldSchema, 16 | addAdvancedFieldSchema, 17 | addCustomWidgetSchema, 18 | 19 | registerCommonProperty, 20 | registerAdvancedProperty, 21 | registerEventProperty 22 | }; 23 | -------------------------------------------------------------------------------- /activiti7-java/src/main/java/com/activiti/ActivitiApplication.java: -------------------------------------------------------------------------------- 1 | package com.activiti; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.actuate.autoconfigure.security.servlet.ManagementWebSecurityAutoConfiguration; 5 | import org.springframework.boot.autoconfigure.SpringBootApplication; 6 | import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration; 7 | 8 | 9 | @SpringBootApplication(exclude = {SecurityAutoConfiguration.class}) 10 | public class ActivitiApplication { 11 | 12 | public static void main(String[] args) { 13 | SpringApplication.run(ActivitiApplication.class, args); 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/field-rich-editor/rich-editor-contentHeight-editor.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /activiti7-java/src/main/java/com/activiti/modules/dao/SysDeptDao.java: -------------------------------------------------------------------------------- 1 | package com.activiti.modules.dao; 2 | 3 | import com.activiti.modules.entity.SysDeptEntity; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * 部门表 11 | * 12 | * @author liuguofeng 13 | * @email liuguofeng-java@qq.com 14 | * @date 2023-10-22 11:27:47 15 | */ 16 | @Mapper 17 | public interface SysDeptDao extends BaseMapper { 18 | 19 | /** 20 | * 部门分页列表 21 | * 22 | * @param dto 分页参数 23 | * @return 列表 24 | */ 25 | List queryPage(SysDeptEntity dto); 26 | } 27 | -------------------------------------------------------------------------------- /activiti7-java/src/main/java/com/activiti/modules/dao/SysUserDao.java: -------------------------------------------------------------------------------- 1 | package com.activiti.modules.dao; 2 | 3 | import com.activiti.modules.entity.SysUserEntity; 4 | import com.activiti.modules.entity.dto.SysUserListDto; 5 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 6 | import org.apache.ibatis.annotations.Mapper; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | * @author liuguofeng 12 | * @date 2023/10/16 11:45 13 | **/ 14 | @Mapper 15 | public interface SysUserDao extends BaseMapper { 16 | 17 | 18 | /** 19 | * 系统用户分页列表 20 | * 21 | * @param dto 分页参数 22 | * @return 列表 23 | */ 24 | List queryPage(SysUserListDto dto); 25 | } 26 | -------------------------------------------------------------------------------- /activiti7-java/src/main/java/com/activiti/modules/entity/dto/workflow/TodoCompleteDto.java: -------------------------------------------------------------------------------- 1 | package com.activiti.modules.entity.dto.workflow; 2 | 3 | import lombok.Data; 4 | 5 | import java.util.Map; 6 | 7 | /** 8 | * 审批节点 9 | * 10 | * @author liuguofeng 11 | * @date 2023/11/05 09:00 12 | **/ 13 | @Data 14 | public class TodoCompleteDto { 15 | /** 16 | * 用户id 17 | */ 18 | private String userId; 19 | 20 | /** 21 | * 部门id(组id) 22 | */ 23 | private String deptId; 24 | 25 | /** 26 | * 流程实例id 27 | */ 28 | private String processInstanceId; 29 | 30 | /** 31 | * 流程变量 32 | */ 33 | private Map variables; 34 | 35 | 36 | } 37 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/BpmnJs/bpmn-icons/bpmn-icon-task-none.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/svg/switch-field.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/field-rate/lowThreshold-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /activiti7-java/src/main/java/com/activiti/modules/entity/vo/workflow/HighlightNodeInfoVo.java: -------------------------------------------------------------------------------- 1 | package com.activiti.modules.entity.vo.workflow; 2 | 3 | import lombok.Data; 4 | import com.activiti.utils.constant.NodeStatus; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * 高亮节点信息 10 | * 11 | * @author liuguofeng 12 | * @date 2023/11/06 13:53 13 | **/ 14 | @Data 15 | public class HighlightNodeInfoVo { 16 | /** 17 | * 流程定义节点唯一标识 18 | */ 19 | private String activityId; 20 | 21 | /** 22 | * 状态 1:已完成节点,2:活动的未处理的节点(下一个节点), 参考 {@link NodeStatus} 23 | */ 24 | private Integer status; 25 | 26 | /** 27 | * 历史审批记录 28 | */ 29 | private List historyRecordVo; 30 | } 31 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/BpmnJs/bpmn-icons/bpmn-icon-gateway-none.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/remote-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/BpmnJs/types/bpmn-moddle/bpmn-instance.d.ts: -------------------------------------------------------------------------------- 1 | declare interface BpmnField { 2 | name: string; 3 | expression?: string; 4 | string?: string; 5 | type?: "string" | "expression"; 6 | } 7 | 8 | declare interface BpmnExtensionElements { 9 | values: any[]; 10 | } 11 | 12 | declare interface BpmnExecutionListener { 13 | name: string; 14 | event: string; 15 | expression?: string; 16 | class?: string; 17 | delegateExpression?: string; 18 | fields?: BpmnField[]; 19 | } 20 | 21 | declare interface BpmnExtensionProperty { 22 | id?: string; 23 | name?: string; 24 | value?: string; 25 | } 26 | 27 | declare interface BpmnExtensionProperties { 28 | values: BpmnExtensionProperty[]; 29 | } 30 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/field-rate/highThreshold-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/placeholder-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/requiredHint-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/svg/el/arrow-down.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/utils/el-icons.js: -------------------------------------------------------------------------------- 1 | import { 2 | Edit, 3 | Minus, 4 | Plus, 5 | InfoFilled, 6 | Search, 7 | CirclePlus, 8 | Delete, 9 | ArrowDown, 10 | ArrowUp 11 | } from "@element-plus/icons-vue"; 12 | 13 | export function registerIcon(app) { 14 | app.component("el-icon-edit", Edit); 15 | app.component("el-icon-minus", Minus); 16 | app.component("el-icon-plus", Plus); 17 | app.component("el-icon-info", InfoFilled); 18 | app.component("el-icon-search", Search); 19 | app.component("el-icon-circle-plus-outline", CirclePlus); 20 | app.component("el-icon-delete", Delete); 21 | app.component("el-icon-arrow-down", ArrowDown); 22 | app.component("el-icon-arrow-up", ArrowUp); 23 | } 24 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/multiple-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/field-cascader/cascader-multiple-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /activiti7-java/src/main/java/com/activiti/modules/service/SysListenerService.java: -------------------------------------------------------------------------------- 1 | package com.activiti.modules.service; 2 | 3 | import com.activiti.modules.entity.SysListenerEntity; 4 | import com.activiti.modules.entity.dto.SysListenerListDto; 5 | import com.baomidou.mybatisplus.extension.service.IService; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * 执行监听器 11 | * 12 | * @author liuguofeng 13 | * @email liuguofeng-java@qq.com 14 | * @date 2023-12-06 22:18:27 15 | */ 16 | public interface SysListenerService extends IService { 17 | 18 | /** 19 | * 执行监听器分页列表 20 | * 21 | * @param dto 分页参数 22 | * @return 列表 23 | */ 24 | List queryPage(SysListenerListDto dto); 25 | } 26 | 27 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/svg/drag.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/BpmnJs/overwrite-modules/Translate/index.ts: -------------------------------------------------------------------------------- 1 | import zh_CN from "../../i18n/zh_CN"; 2 | 3 | const languages = { 4 | zh_CN 5 | }; 6 | 7 | const lang = sessionStorage.getItem("lang"); 8 | 9 | export function customTranslate(template: string, replacements?: Record) { 10 | replacements = replacements || {}; 11 | const translations = languages[lang || "zh_CN"]; 12 | // Translate 13 | template = translations.elements[template] || translations.lint[template] || template; 14 | // Replace 15 | return template.replace(/{([^}]+)}/g, function (_, key) { 16 | return replacements ? replacements[key] : "{" + key + "}"; 17 | }); 18 | } 19 | 20 | export default { 21 | translate: ["value", customTranslate] 22 | }; 23 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/svg/custom/search.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /activiti7-java/src/main/java/com/activiti/utils/page/TableDataInfo.java: -------------------------------------------------------------------------------- 1 | package com.activiti.utils.page; 2 | 3 | import lombok.Data; 4 | 5 | import java.io.Serializable; 6 | import java.util.List; 7 | 8 | /** 9 | * 返回分页信息 10 | * 11 | * @author liuguofeng 12 | * @date 2023/10/20 10:09 13 | **/ 14 | @Data 15 | public class TableDataInfo implements Serializable 16 | { 17 | private static final long serialVersionUID = 1L; 18 | 19 | /** 总记录数 */ 20 | private long total; 21 | 22 | /** 列表数据 */ 23 | private List rows; 24 | 25 | /** 消息状态码 */ 26 | private int code; 27 | 28 | /** 消息内容 */ 29 | private String msg; 30 | 31 | /** 32 | * 表格数据对象 33 | */ 34 | public TableDataInfo() 35 | { 36 | } 37 | } 38 | 39 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/BpmnJs/components/Panel/components/sub/BpmnIcon.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 25 | 26 | 34 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/field-number/controlsPosition-editor.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /activiti7-ui/src/types/shims.d.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | declare module "*.vue" { 3 | import type { DefineComponent } from "vue"; 4 | const component: DefineComponent<{}, {}, any>; 5 | export default component; 6 | } 7 | 8 | declare module "*.svg"; 9 | declare module "*.png"; 10 | declare module "*.jpg"; 11 | declare module "*.jpeg"; 12 | declare module "*.gif"; 13 | declare module "*.bmp"; 14 | declare module "*.tiff"; 15 | declare module "*.gif"; 16 | 17 | declare module "*.less"; 18 | 19 | declare global { 20 | interface ImportMeta { 21 | env: Record; 22 | globEager(globPath: string): Record; 23 | } 24 | } 25 | 26 | declare module "virtual:*" { 27 | const result: any; 28 | export default result; 29 | } 30 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/BpmnJs/bpmn-icons/bpmn-icon-conditional-flow.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/form-render/container-item/container-item-wrapper.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 16 | 17 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/svg/text-field.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /activiti7-java/src/main/java/com/activiti/modules/entity/dto/workflow/TableInfoDto.java: -------------------------------------------------------------------------------- 1 | package com.activiti.modules.entity.dto.workflow; 2 | 3 | import lombok.Data; 4 | 5 | import javax.validation.Valid; 6 | import javax.validation.constraints.Pattern; 7 | import java.util.List; 8 | 9 | /** 10 | * 表信息 11 | * 12 | * @author liuguofeng 13 | * @date 2023/12/13 10:23 14 | **/ 15 | @Data 16 | public class TableInfoDto { 17 | 18 | /** 19 | * 表名称 20 | */ 21 | @Pattern(regexp = "^[a-zA-Z][a-zA-Z0-9_]*$", message = "绑定表名称不符合规则") 22 | private String tableName; 23 | 24 | /** 25 | * 表备注 26 | */ 27 | private String tableComment; 28 | 29 | /** 30 | * 数据库表信息 31 | */ 32 | @Valid 33 | private List columns; 34 | } 35 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/BpmnJs/types/editor/settings.d.ts: -------------------------------------------------------------------------------- 1 | import { ViewerOptions } from "diagram-js/lib/model/Types"; 2 | import { ModuleDeclaration } from "didi"; 3 | 4 | export interface EditorSettings { 5 | processName: string; 6 | processId: string; 7 | processEngine: "flowable" | "activiti"; 8 | paletteMode: "custom" | "rewrite"; 9 | contextPadMode: "rewrite" | "custom"; 10 | useLint: boolean; 11 | isLabelEditingProvider: boolean; 12 | isMove: boolean; 13 | } 14 | 15 | export type ModelerOptions = ViewerOptions & { 16 | additionalModules: ModuleDeclaration[]; 17 | moddleExtensions: object; 18 | }; 19 | 20 | // bpmn.js 事件参数 21 | // 1. canvas 事件 22 | type CanvasEventParams = { 23 | svg: SVGElement; 24 | viewport: SVGElement; 25 | }; 26 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/labelWidth-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /activiti7-java/src/main/java/com/activiti/modules/dao/SysListenerDao.java: -------------------------------------------------------------------------------- 1 | package com.activiti.modules.dao; 2 | 3 | import com.activiti.modules.entity.SysListenerEntity; 4 | import com.activiti.modules.entity.dto.SysListenerListDto; 5 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 6 | import org.apache.ibatis.annotations.Mapper; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | * 执行监听器 12 | * 13 | * @author liuguofeng 14 | * @email liuguofeng-java@qq.com 15 | * @date 2023-12-06 22:18:27 16 | */ 17 | @Mapper 18 | public interface SysListenerDao extends BaseMapper { 19 | 20 | /** 21 | * 执行监听器分页列表 22 | * 23 | * @param dto 分页参数 24 | * @return 列表 25 | */ 26 | List queryPage(SysListenerListDto dto); 27 | } 28 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/field-color/color-defaultValue-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/svg/button.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/defaultValue-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/appendButton-editor.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/displayStyle-editor.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/uploadURL-editor.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/field-html-text/htmlContent-editor.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 23 | 24 | 29 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/field-date/date-valueFormat-editor.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/field-switch/switch-defaultValue-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/labelIconClass-editor.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/BpmnJs/i18n/zh_CN/elements/tasks.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | Task: "任务", 3 | "Send Task": "发送任务", 4 | "Receive Task": "接收任务", 5 | "User Task": "用户任务", 6 | "Manual Task": "手工任务", 7 | "Business Rule Task": "业务规则任务", 8 | "Service Task": "服务任务", 9 | "Script Task": "脚本任务", 10 | "Call Activity": "调用活动", 11 | "Sub Process (collapsed)": "子流程(折叠的)", 12 | "Sub Process (expanded)": "子流程(展开的)", 13 | "Start Event": "开始事件", 14 | "Intermediate Throw Event": "中间事件", 15 | "End Event": "结束事件", 16 | StartEvent: "开始事件", 17 | EndEvent: "结束事件", 18 | SendTask: "发送任务", 19 | ReceiveTask: "接收任务", 20 | UserTask: "用户任务", 21 | ManualTask: "手工任务", 22 | BusinessRuleTask: "业务规则任务", 23 | ServiceTask: "服务任务", 24 | ScriptTask: "脚本任务", 25 | CallActivity: "调用活动", 26 | SubProcess: "子流程" 27 | }; 28 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/BpmnJs/utils/EmptyXML.ts: -------------------------------------------------------------------------------- 1 | export default (key: string, name: string): string => { 2 | return ` 3 | 11 | 12 | 13 | 14 | 15 | `; 16 | }; 17 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/field-divider/contentPosition-editor.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /activiti7-java/src/main/java/com/activiti/utils/constant/ActivityType.java: -------------------------------------------------------------------------------- 1 | package com.activiti.utils.constant; 2 | 3 | /** 4 | * 网关类型 5 | * 6 | * @author liuguofeng 7 | * @date 2023/11/21 16:45 8 | **/ 9 | public class ActivityType { 10 | 11 | /** 12 | * 开始节点 13 | */ 14 | public final static String START_EVENT = "startEvent"; 15 | 16 | 17 | /** 18 | * 用户节点 19 | */ 20 | public final static String USER_TASK = "userTask"; 21 | 22 | /** 23 | * 并行网关 24 | */ 25 | public final static String PARALLEL_GATEWAY = "parallelGateway"; 26 | 27 | /** 28 | * 包容网关 29 | */ 30 | public final static String INCLUSIVE_GATEWAY = "inclusiveGateway"; 31 | 32 | /** 33 | * 互斥网关 34 | */ 35 | public final static String EXCLUSIVE_GATEWAY = "exclusiveGateway"; 36 | } 37 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/container-grid/colHeight-editor.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/BpmnJs/components/Toolbar/index.tsx: -------------------------------------------------------------------------------- 1 | import { defineComponent } from "vue"; 2 | import Imports from "@/components/BpmnJs/components/Toolbar/components/Imports"; 3 | import Previews from "@/components/BpmnJs/components/Toolbar/components/Previews"; 4 | import Scales from "@/components/BpmnJs/components/Toolbar/components/Scales"; 5 | import Commands from "@/components/BpmnJs/components/Toolbar/components/Commands"; 6 | 7 | const Toolbar = defineComponent({ 8 | name: "ToolBar", 9 | setup() { 10 | return () => ( 11 |
12 | 13 | 14 | 15 | 16 |
17 | ); 18 | } 19 | }); 20 | 21 | export default Toolbar; 22 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/field-rate/rate-defaultValue-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/BpmnJs/bpmn-icons/bpmn-icon-data-output.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/field-date-range/date-range-valueFormat-editor.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/field-time/time-format-editor.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/svg/grid-col.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /activiti7-java/src/main/java/com/activiti/modules/service/impl/SysDeptServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.activiti.modules.service.impl; 2 | 3 | import com.activiti.modules.dao.SysDeptDao; 4 | import com.activiti.modules.entity.SysDeptEntity; 5 | import com.activiti.modules.service.SysDeptService; 6 | import org.springframework.stereotype.Service; 7 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 8 | 9 | import java.util.List; 10 | 11 | 12 | @Service("sysDeptService") 13 | public class SysDeptServiceImpl extends ServiceImpl implements SysDeptService { 14 | 15 | /** 16 | * 部门分页列表 17 | * 18 | * @param dto 分页参数 19 | * @return 列表 20 | */ 21 | @Override 22 | public List queryPage(SysDeptEntity dto) { 23 | return baseMapper.queryPage(dto); 24 | } 25 | } -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/label-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/utils/smart-vue-i18n/index.js: -------------------------------------------------------------------------------- 1 | import { reactive } from "vue"; 2 | import { get } from "./utils"; 3 | 4 | let locale = reactive({ 5 | lang: localStorage.getItem("v_form_locale") || "zh-CN" 6 | }); 7 | 8 | export function createI18n(options) { 9 | return { 10 | messages: options.messages, 11 | 12 | $st(path, ...args) { 13 | const message = get(this.messages[locale.lang], path); 14 | return typeof message === "function" ? message(...args) : message !== null ? message : path; 15 | }, 16 | 17 | $st2(path, path2) { 18 | let messages = this.messages[locale.lang]; 19 | const message = get(messages, path); 20 | return message !== null ? message : get(messages, path2); 21 | }, 22 | 23 | setLang(lang) { 24 | locale.lang = lang; 25 | } 26 | }; 27 | } 28 | -------------------------------------------------------------------------------- /activiti7-java/src/main/java/com/activiti/modules/entity/dto/workflow/TableColumnsDto.java: -------------------------------------------------------------------------------- 1 | package com.activiti.modules.entity.dto.workflow; 2 | 3 | import lombok.Data; 4 | 5 | import javax.validation.constraints.Pattern; 6 | 7 | /** 8 | * 表结构 9 | * 10 | * @author liuguofeng 11 | * @date 2023/12/13 10:23 12 | **/ 13 | @Data 14 | public class TableColumnsDto { 15 | 16 | /** 17 | * 行名称 18 | */ 19 | @Pattern(regexp = "^[a-zA-Z][a-zA-Z0-9_]*$", message = "绑定字段-字段名称不符合规则") 20 | private String columnName; 21 | /** 22 | * 数据类型 23 | */ 24 | private String dataType; 25 | 26 | /** 27 | * 字段长度 28 | */ 29 | private Integer columnLength; 30 | /** 31 | * 行备注 32 | */ 33 | private String columnComment; 34 | /** 35 | * 行健 36 | */ 37 | private String columnKey; 38 | 39 | } 40 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/field-date-range/date-range-type-editor.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/field-number/number-defaultValue-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/field-time-range/time-range-format-editor.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/field-time/time-defaultValue-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/extension/samples/extension-schema.js: -------------------------------------------------------------------------------- 1 | export const cardSchema = { 2 | type: "card", 3 | category: "container", 4 | icon: "card", 5 | widgetList: [], 6 | options: { 7 | name: "", 8 | label: "card", 9 | hidden: false, 10 | folded: false, 11 | showFold: true, 12 | cardWidth: "100%", 13 | shadow: "never", 14 | customClass: "" 15 | } 16 | }; 17 | 18 | export const alertSchema = { 19 | type: "alert", 20 | icon: "alert", 21 | formItemFlag: false, 22 | options: { 23 | name: "", 24 | title: "Good things are coming...", 25 | type: "info", 26 | description: "", 27 | closable: true, 28 | closeText: "", 29 | center: true, 30 | showIcon: false, 31 | effect: "light", 32 | hidden: false, 33 | onClose: "", 34 | customClass: "" 35 | } 36 | }; 37 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/svg/redo.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/svg/undo.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/refMixinDesign.js: -------------------------------------------------------------------------------- 1 | export default { 2 | methods: { 3 | initRefList() { 4 | if (this.refList !== null && !!this.widget.options.name) { 5 | this.refList[this.widget.options.name] = this; 6 | } 7 | }, 8 | 9 | getWidgetRef(widgetName, showError) { 10 | let foundRef = this.refList[widgetName]; 11 | if (!foundRef && !!showError) { 12 | this.$message.error(this.i18nt("render.hint.refNotFound") + widgetName); 13 | } 14 | return foundRef; 15 | }, 16 | 17 | /* 该方法用于组件重名检查!! */ 18 | registerToRefList(oldRefName) { 19 | if (this.refList !== null && !!this.widget.options.name) { 20 | if (oldRefName) { 21 | delete this.refList[oldRefName]; 22 | } 23 | this.refList[this.widget.options.name] = this; 24 | } 25 | } 26 | } 27 | }; 28 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/field-time-range/time-range-defaultValue-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/optionItems-editor.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/BpmnJs/overwrite-modules/Palette/utils.ts: -------------------------------------------------------------------------------- 1 | import { assign } from "min-dash"; 2 | 3 | export function createAction( 4 | elementFactory, 5 | create, 6 | type: string, 7 | group: string, 8 | className: string, 9 | title: string, 10 | options?: object 11 | ) { 12 | function createListener(event) { 13 | const shape = elementFactory.createShape(assign({ type: type }, options)); 14 | 15 | if (options) { 16 | !shape.businessObject.di && (shape.businessObject.di = {}); 17 | shape.businessObject.di.isExpanded = (options as { [key: string]: any }).isExpanded; 18 | } 19 | 20 | create.start(event, shape); 21 | } 22 | 23 | return { 24 | group: group, 25 | className: className, 26 | title: title, 27 | action: { 28 | dragstart: createListener, 29 | click: createListener 30 | } 31 | }; 32 | } 33 | -------------------------------------------------------------------------------- /activiti7-java/src/main/java/com/activiti/modules/entity/dto/workflow/DeployProcessDto.java: -------------------------------------------------------------------------------- 1 | package com.activiti.modules.entity.dto.workflow; 2 | 3 | import lombok.Data; 4 | 5 | import javax.validation.Valid; 6 | import javax.validation.constraints.NotBlank; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | * 部署流程 12 | * 13 | * @author liuguofeng 14 | * @date 2023/11/29 17:10 15 | **/ 16 | @Data 17 | public class DeployProcessDto { 18 | /** 19 | * bpmn xml 20 | */ 21 | @NotBlank(message = "bpmn不能为空") 22 | private String xml; 23 | 24 | /** 25 | * 表单数据 26 | */ 27 | private List formJsonList; 28 | 29 | /** 30 | * 节点绑定字段信息 31 | */ 32 | @Valid 33 | private List nodeColumns; 34 | 35 | /** 36 | * 数据库表信息 37 | */ 38 | @Valid 39 | private TableInfoDto tableInfo; 40 | 41 | 42 | } 43 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/BpmnJs/bpmn-icons/bpmn-icon-default-flow.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/svg/el/drag-move.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/field-date/date-defaultValue-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/svg/el/info.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/event-handler/onBlur-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/event-handler/onClick-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/event-handler/onCreated-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/event-handler/onFocus-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/event-handler/onInput-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/event-handler/onMounted-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /activiti7-ui/src/constants/app.ts: -------------------------------------------------------------------------------- 1 | import { getValueByKeys } from "@/utils/utils"; 2 | import appPack from "../../package.json"; 3 | /** 4 | * app系统配置 5 | */ 6 | export default { 7 | /** 8 | * 系统版本号,自动读取package.json中的version字段 9 | */ 10 | version: appPack.version, 11 | 12 | /** 13 | * 系统默认语言 14 | */ 15 | defaultLang: "zh-CN", 16 | 17 | /** 18 | * api请求地址,这里读取env环境变量中的VITE_APP_API,优先使用全局变量window.SITE_CONFIG.apiURL钩子,支持在index.html中配置 19 | */ 20 | api: getValueByKeys(window, "SITE_CONFIG.apiURL") || import.meta.env.VITE_APP_API, 21 | 22 | /** 23 | * 启用logo图标,logo尺寸32*32,存放路径@/assets/images/logo.png 24 | */ 25 | enabledLogo: false, 26 | 27 | /** 28 | * 开启页面缓存 29 | */ 30 | enabledKeepAlive: true, 31 | 32 | /** 33 | * 网络请求超时时间,单位毫秒 34 | */ 35 | requestTimeout: 30000, 36 | 37 | /** 38 | * 全屏渲染的页面 39 | */ 40 | fullscreenPages: ["/login"] 41 | }; 42 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/field-date-range/date-range-defaultValue-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /document/bpmnDataTable.md: -------------------------------------------------------------------------------- 1 | # 介绍 2 | 3 | > 工作流项目不会依赖任何业务,都是通过表单和数据库表结构动态绑定的 4 | 5 | #### 一.绑定已有的表 6 | 7 | ##### 1.表结构 8 | 9 | > 要求:字段必须有主键,并且类型是varchar(40) 10 | 11 | ![](images/bdt_1.png) 12 | 13 | ##### 2.在流程管理 >> 流程定义 >> 新建 14 | 15 | ![](images/bdt_2.png) 16 | 17 | ##### 3.绑定成功后,在任意一个节点表单(甚至主表单)点击设计,可以和动态表单的字段进行绑定,一个节点表单被绑定后,另一个节点表单也可以再次绑定,`注意`:(后面表单的值会覆盖前面表单的值从而影响数据库中的绑定值) 18 | 19 | ![](images/bdt_4.png) 20 | 21 | ​ ![](images/bdt_5.png) 22 | 23 | #### 二.绑定创建数据库表 24 | 25 | ##### 1.在流程管理 >> 流程定义 >> 新建 26 | 27 | ![](images/bdt_6.png) 28 | 29 | ##### 2.和绑定已有的表地第3步一致,唯一不同的是表字段从选择变成输入,输入的值将作为表字段,标签将作为字段备注 30 | 31 | ![](images/bdt_7.png) 32 | 33 | ##### 3.设计完成后,保存流程系统将会自动创建表结构 34 | 35 | ![](images/bdt_8.png) 36 | 37 | 38 | 39 | #### 三.关于表单字段和数据库对应关系扩展 40 | 41 | > 需要扩展字段或者数据库需要修改或新增 类 `DbConfig` 和 文件`resources` 下的 `widgetDataType` 42 | 43 | ![](images/bdt_9.png) 44 | 45 | ![](images/bdt_10.png) 46 | 47 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/BpmnJs/bpmn-icons/bpmn-icon-send-task.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/svg/el/move-down.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /activiti7-java/src/main/java/com/activiti/modules/service/ProcessTodoService.java: -------------------------------------------------------------------------------- 1 | package com.activiti.modules.service; 2 | 3 | 4 | import com.activiti.modules.entity.dto.workflow.TodoCompleteDto; 5 | import com.activiti.modules.entity.dto.workflow.TodoListDto; 6 | import com.activiti.utils.page.TableDataInfo; 7 | 8 | import java.util.Map; 9 | 10 | /** 11 | * 代办任务 12 | * 13 | * @author liuguofeng 14 | * @date 2023/11/04 19:14 15 | **/ 16 | public interface ProcessTodoService { 17 | 18 | /** 19 | * 查看我代办的流程 20 | * 21 | * @param dto 参数 22 | */ 23 | TableDataInfo queryPage(TodoListDto dto); 24 | 25 | /** 26 | * 获取节点表单 27 | * @param taskId 任务id 28 | * @return 表单数据 29 | */ 30 | Map getNodeForm(String taskId); 31 | 32 | /** 33 | * 节点审批 34 | * 35 | * @param dto 参数 36 | */ 37 | void complete(TodoCompleteDto dto); 38 | 39 | } 40 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/BpmnJs/bpmn-icons/bpmn-icon-collaboration.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/event-handler/onFileRemove.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/event-handler/onRemoteQuery-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/form-render/refMixin.js: -------------------------------------------------------------------------------- 1 | export default { 2 | methods: { 3 | initRefList() { 4 | if (this.refList !== null && !!this.widget.options.name) { 5 | this.refList[this.widget.options.name] = this; 6 | } 7 | }, 8 | 9 | getWidgetRef(widgetName, showError) { 10 | let foundRef = this.refList[widgetName]; 11 | if (!foundRef && !!showError) { 12 | this.$message.error(this.i18nt("render.hint.refNotFound") + widgetName); 13 | } 14 | return foundRef; 15 | }, 16 | 17 | getFormRef() { 18 | /* 获取VFrom引用,必须在VForm组件created之后方可调用 */ 19 | return this.refList["v_form_ref"]; 20 | }, 21 | 22 | getComponentByContainer(con) { 23 | if (con.type === "grid") { 24 | //grid-item跟VueGridLayout全局注册组件重名,故特殊处理!! 25 | return "vf-grid-item"; 26 | } 27 | 28 | return con.type + "-item"; 29 | } 30 | } 31 | }; 32 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/event-handler/onBeforeUpload-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/svg/slot-component.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/event-handler/onValidate-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /activiti7-ui/src/utils/cache.ts: -------------------------------------------------------------------------------- 1 | import { CacheToken } from "@/constants/cacheKey"; 2 | 3 | /** 4 | * 取缓存值 5 | * @param {*} key 6 | * @param {*} options 7 | */ 8 | export const getCache = (key: string): any => { 9 | const data = localStorage.getItem(key); 10 | if (!data) { 11 | return {}; 12 | } 13 | return JSON.parse(data); 14 | }; 15 | 16 | /** 17 | * 设置缓存值 18 | * @param {*} key 19 | * @param {*} value 20 | */ 21 | export const setCache = ( 22 | key: string, 23 | value: string | Record | Array[] 24 | ): void => { 25 | localStorage.setItem(key, typeof value === "object" ? JSON.stringify(value) : value); 26 | }; 27 | 28 | /** 29 | * 清除缓存 30 | * @param key 31 | * @param isSessionStorage 32 | */ 33 | export const removeCache = (key: string): void => { 34 | localStorage.removeItem(key); 35 | }; 36 | 37 | export const getToken = (): string => { 38 | return getCache(CacheToken)["userId"]; 39 | }; 40 | -------------------------------------------------------------------------------- /activiti7-java/src/main/java/com/activiti/modules/service/SysDeployService.java: -------------------------------------------------------------------------------- 1 | package com.activiti.modules.service; 2 | 3 | import com.activiti.modules.entity.SysDeployEntity; 4 | import com.activiti.modules.entity.SysDeployNodeEntity; 5 | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 6 | import com.baomidou.mybatisplus.extension.service.IService; 7 | 8 | import java.util.Map; 9 | 10 | /** 11 | * 流程部署详情 12 | * 13 | * @author liuguofeng 14 | * @email liuguofeng-java@qq.com 15 | * @date 2023-12-15 11:48:02 16 | */ 17 | public interface SysDeployService extends IService { 18 | /** 19 | * 插入数据到绑定数据库表中 20 | * 21 | * @param instanceId 实例id 22 | * @param deployId 部署id 23 | * @param activityId 流程定义节点唯一标识 24 | * @param variables 流程变量 25 | */ 26 | void saveData(String instanceId, String deployId, String activityId, Map variables); 27 | 28 | } 29 | 30 | -------------------------------------------------------------------------------- /activiti7-java/src/main/java/com/activiti/modules/service/impl/SysUserServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.activiti.modules.service.impl; 2 | 3 | import com.activiti.modules.dao.SysUserDao; 4 | import com.activiti.modules.entity.SysUserEntity; 5 | import com.activiti.modules.entity.dto.SysUserListDto; 6 | import com.activiti.modules.service.SysUserService; 7 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 8 | import org.springframework.stereotype.Service; 9 | 10 | import java.util.List; 11 | 12 | 13 | /** 14 | * 系统用户 15 | */ 16 | @Service("sysUserService") 17 | public class SysUserServiceImpl extends ServiceImpl implements SysUserService { 18 | 19 | /** 20 | * 系统用户分页列表 21 | * 22 | * @param dto 分页参数 23 | * @return 列表 24 | */ 25 | @Override 26 | public List queryPage(SysUserListDto dto) { 27 | return this.baseMapper.queryPage(dto); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/event-handler/onAppendButtonClick-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/event-handler/onChange-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/labelIconPosition-editor.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/svg/textarea-field.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /activiti7-java/src/main/java/com/activiti/modules/service/impl/SysListenerServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.activiti.modules.service.impl; 2 | 3 | import com.activiti.modules.dao.SysListenerDao; 4 | import com.activiti.modules.entity.SysListenerEntity; 5 | import com.activiti.modules.entity.dto.SysListenerListDto; 6 | import com.activiti.modules.service.SysListenerService; 7 | import org.springframework.stereotype.Service; 8 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 9 | 10 | import java.util.List; 11 | 12 | 13 | @Service("sysListenerService") 14 | public class SysListenerServiceImpl extends ServiceImpl implements SysListenerService { 15 | 16 | /** 17 | * 执行监听器分页列表 18 | * 19 | * @param dto 分页参数 20 | * @return 列表 21 | */ 22 | @Override 23 | public List queryPage(SysListenerListDto dto) { 24 | return baseMapper.queryPage(dto); 25 | } 26 | } -------------------------------------------------------------------------------- /activiti7-ui/src/components/BpmnJs/styles/contextmenu.scss: -------------------------------------------------------------------------------- 1 | .bpmn-context-menu { 2 | display: flex; 3 | width: 400px; 4 | max-height: 360px; 5 | overflow: hidden; 6 | flex-direction: column; 7 | .context-menu_header { 8 | line-height: 40px; 9 | font-size: 16px; 10 | font-weight: bold; 11 | border-bottom: 1px solid rgb(239, 239, 245); 12 | } 13 | .context-menu_body { 14 | flex: 1; 15 | display: flex; 16 | flex-direction: column; 17 | overflow-x: hidden; 18 | overflow-y: auto; 19 | } 20 | .context-menu_item { 21 | width: 100%; 22 | height: 32px; 23 | font-size: 14px; 24 | cursor: pointer; 25 | border-radius: 4px; 26 | padding: 0 4px; 27 | display: flex; 28 | align-items: center; 29 | &:hover { 30 | background-color: rgb(241, 242, 244); 31 | } 32 | .context-menu_item_icon { 33 | font-size: 20px; 34 | margin-right: 8px; 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/event-handler/onUploadError-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/event-handler/onSubFormRowAdd-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/event-handler/onSubFormRowChange-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/event-handler/onUploadSuccess-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/type-editor.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/svg/el/move-up.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/svg/section.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/event-handler/onSubFormRowInsert-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /activiti7-java/src/main/java/com/activiti/modules/entity/SysDeployEntity.java: -------------------------------------------------------------------------------- 1 | package com.activiti.modules.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.TableId; 4 | import com.baomidou.mybatisplus.annotation.TableName; 5 | 6 | import java.io.Serializable; 7 | import java.util.Date; 8 | 9 | import lombok.Data; 10 | 11 | 12 | /** 13 | * 流程部署详情 14 | * 15 | * @author liuguofeng 16 | * @email liuguofeng-java@qq.com 17 | * @date 2023-12-15 11:48:02 18 | */ 19 | @Data 20 | @TableName("sys_deploy") 21 | public class SysDeployEntity implements Serializable { 22 | private static final long serialVersionUID = 1L; 23 | 24 | /** 25 | * 部署id 26 | */ 27 | @TableId 28 | private String deployId; 29 | /** 30 | * 绑定数据库表的名称 31 | */ 32 | private String tableName; 33 | /** 34 | * 绑定数据库表的备注 35 | */ 36 | private String tableComment; 37 | /** 38 | * 创建时间 39 | */ 40 | private Date createTime; 41 | 42 | } 43 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/event-handler/onSubFormRowDelete-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/field-date/date-type-editor.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/setting-panel/property-editor/max-editor.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/svg/html-text.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/svg/number-field.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/BpmnJs/bpmn-icons/bpmn-icon-gateway-eventbased.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/FormDesigner/svg/card.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /activiti7-ui/src/components/BpmnJs/utils/index.ts: -------------------------------------------------------------------------------- 1 | import EmptyXML from "@/components/BpmnJs/utils/EmptyXML"; 2 | import { EditorSettings } from "@/components/BpmnJs/types/editor/settings"; 3 | import modelerStore from "@/store/modeler"; 4 | 5 | export const createNewDiagram = async function (newXml?: string, settings?: EditorSettings) { 6 | try { 7 | const store = modelerStore(); 8 | const timestamp = Date.now(); 9 | const { processId, processName } = settings || {}; 10 | const newId: string = processId ? processId : `Process_${timestamp}`; 11 | const newName: string = processName || `新建流程_${timestamp}`; 12 | const xmlString = newXml || EmptyXML(newId, newName); 13 | const { warnings } = await store.getModeler.importXML(xmlString); 14 | store.getCanvas.zoom("fit-viewport", { x: 0, y: 0 }); 15 | console.log("bpmb warnings->", warnings); 16 | } catch (e) { 17 | console.error(`[Process Designer Warn]: ${typeof e === "string" ? e : (e as Error)?.message}`); 18 | } 19 | }; 20 | --------------------------------------------------------------------------------