├── workflow-idm-api ├── README.md ├── src │ └── main │ │ └── java │ │ └── com │ │ └── workflow │ │ └── process │ │ └── center │ │ └── api │ │ ├── LoginInfoService.java │ │ ├── AreaService.java │ │ ├── DeptService.java │ │ └── RoleService.java └── .gitignore ├── workflow-ui ├── public │ ├── robots.txt │ └── favicon.ico ├── src │ ├── components │ │ ├── ParentView │ │ │ └── index.vue │ │ ├── parser │ │ │ ├── index.js │ │ │ ├── README.md │ │ │ └── package.json │ │ ├── tinymce │ │ │ ├── README.md │ │ │ ├── index.js │ │ │ ├── example │ │ │ │ └── Index.vue │ │ │ ├── config.js │ │ │ └── package.json │ │ ├── package │ │ │ ├── theme │ │ │ │ └── index.scss │ │ │ ├── process-designer │ │ │ │ ├── plugins │ │ │ │ │ ├── extension-moddle │ │ │ │ │ │ ├── camunda │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ ├── activiti │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ └── flowable │ │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── content-pad │ │ │ │ │ │ └── index.js │ │ │ │ │ └── palette │ │ │ │ │ │ └── index.js │ │ │ │ └── index.js │ │ │ ├── refactor │ │ │ │ ├── index.js │ │ │ │ └── components │ │ │ │ │ └── expression │ │ │ │ │ └── dict.js │ │ │ └── index.js │ │ ├── render │ │ │ ├── slots │ │ │ │ ├── el-button.js │ │ │ │ ├── el-input.js │ │ │ │ ├── el-select.js │ │ │ │ ├── el-radio-group.js │ │ │ │ ├── el-checkbox-group.js │ │ │ │ └── el-upload.js │ │ │ └── package.json │ │ ├── Process │ │ │ ├── index.js │ │ │ ├── common │ │ │ │ ├── mixinXcrud.js │ │ │ │ ├── customTranslate.js │ │ │ │ └── mixinExecutionListener.js │ │ │ └── components │ │ │ │ └── custom │ │ │ │ └── customContextPad.vue │ │ ├── IconSelect │ │ │ └── requireIcons.js │ │ ├── workflow │ │ │ ├── Doc │ │ │ │ └── index.vue │ │ │ └── Git │ │ │ │ └── index.vue │ │ └── iFrame │ │ │ └── index.vue │ ├── assets │ │ ├── logo │ │ │ └── logo.png │ │ ├── images │ │ │ ├── back.jpg │ │ │ ├── back.png │ │ │ ├── profile.jpg │ │ │ └── login-background.jpg │ │ ├── 401_images │ │ │ └── 401.gif │ │ ├── 404_images │ │ │ ├── 404.png │ │ │ └── 404_cloud.png │ │ ├── icons │ │ │ ├── svg │ │ │ │ ├── chart.svg │ │ │ │ ├── size.svg │ │ │ │ ├── link.svg │ │ │ │ ├── guide.svg │ │ │ │ ├── money.svg │ │ │ │ ├── email.svg │ │ │ │ ├── drag.svg │ │ │ │ ├── documentation.svg │ │ │ │ ├── fullscreen.svg │ │ │ │ ├── user.svg │ │ │ │ ├── lock.svg │ │ │ │ ├── excel.svg │ │ │ │ ├── example.svg │ │ │ │ ├── slider.svg │ │ │ │ ├── star.svg │ │ │ │ ├── search.svg │ │ │ │ ├── table.svg │ │ │ │ ├── education.svg │ │ │ │ ├── tab.svg │ │ │ │ ├── message.svg │ │ │ │ ├── switch.svg │ │ │ │ ├── theme.svg │ │ │ │ ├── druid.svg │ │ │ │ ├── code.svg │ │ │ │ ├── peoples.svg │ │ │ │ ├── input.svg │ │ │ │ ├── server.svg │ │ │ │ ├── textarea.svg │ │ │ │ ├── time.svg │ │ │ │ ├── edit.svg │ │ │ │ ├── nested.svg │ │ │ │ ├── row.svg │ │ │ │ ├── monitor.svg │ │ │ │ ├── tree-table.svg │ │ │ │ ├── eye.svg │ │ │ │ └── build.svg │ │ │ ├── index.js │ │ │ └── svgo.yml │ │ └── styles │ │ │ └── element-variables.scss │ ├── utils │ │ ├── errorCode.js │ │ ├── auth.js │ │ ├── generator │ │ │ ├── ruleTrigger.js │ │ │ └── css.js │ │ ├── pluginsConfig.js │ │ ├── loadTinymce.js │ │ └── loadBeautifier.js │ ├── api │ │ ├── menu.js │ │ ├── monitor │ │ │ ├── server.js │ │ │ ├── cache.js │ │ │ ├── online.js │ │ │ ├── jobLog.js │ │ │ ├── operlog.js │ │ │ └── logininfor.js │ │ ├── dict.js │ │ ├── system │ │ │ └── notice.js │ │ └── workmenu │ │ │ └── handlecontent.js │ ├── plugins │ │ ├── extension-moddle │ │ │ ├── camunda │ │ │ │ └── index.js │ │ │ ├── activiti │ │ │ │ └── index.js │ │ │ └── flowable │ │ │ │ └── index.js │ │ ├── content-pad │ │ │ └── index.js │ │ └── highlight │ │ │ └── index.js │ ├── views │ │ ├── processCore │ │ │ ├── processService │ │ │ │ ├── processModelDesign │ │ │ │ │ └── custom-renderer │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ └── CustomRenderer.js │ │ │ │ ├── processSerivceCategory │ │ │ │ │ └── dict.js │ │ │ │ └── processExpression │ │ │ │ │ └── dict.js │ │ │ ├── processConfig │ │ │ │ ├── email │ │ │ │ │ └── dict.js │ │ │ │ └── processTenant │ │ │ │ │ └── dict.js │ │ │ └── processMeta │ │ │ │ ├── definition │ │ │ │ └── dict.js │ │ │ │ └── task │ │ │ │ └── record │ │ │ │ └── flow.vue │ │ ├── redirect.vue │ │ ├── components │ │ │ └── icons │ │ │ │ └── svg-icons.js │ │ ├── monitor │ │ │ └── druid │ │ │ │ └── index.vue │ │ ├── tool │ │ │ ├── swagger │ │ │ │ └── index.vue │ │ │ └── build │ │ │ │ ├── main.js │ │ │ │ └── App.vue │ │ └── workBench │ │ │ ├── homePage │ │ │ ├── LaunchMission │ │ │ │ └── LaunchMission.vue │ │ │ ├── DoneMission │ │ │ │ └── dict.js │ │ │ ├── GroupMission │ │ │ │ └── dict.js │ │ │ ├── SentMission │ │ │ │ └── dict.js │ │ │ └── PersonalMission │ │ │ │ └── dict.js │ │ │ ├── done │ │ │ └── dict.js │ │ │ ├── group │ │ │ └── dict.js │ │ │ ├── overTime │ │ │ └── dict.js │ │ │ ├── sent │ │ │ └── dict.js │ │ │ └── todo │ │ │ └── dict.js │ ├── layout │ │ └── components │ │ │ ├── index.js │ │ │ ├── Sidebar │ │ │ ├── Item.vue │ │ │ ├── FixiOSBug.js │ │ │ └── Link.vue │ │ │ └── InnerLink │ │ │ └── index.vue │ ├── icons │ │ ├── index.js │ │ └── svg │ │ │ ├── slider.svg │ │ │ ├── switch.svg │ │ │ ├── input.svg │ │ │ ├── textarea.svg │ │ │ ├── time.svg │ │ │ └── row.svg │ ├── App.vue │ ├── store │ │ ├── index.js │ │ └── getters.js │ ├── styles │ │ └── mixin.scss │ ├── directive │ │ ├── index.js │ │ └── permission │ │ │ ├── hasRole.js │ │ │ └── hasPermi.js │ └── settings.js ├── bin │ ├── build.bat │ ├── package.bat │ └── run-web.bat ├── .env.production ├── .env.staging ├── .eslintignore ├── .env.development ├── .gitignore ├── .editorconfig ├── README.md └── babel.config.js ├── workflow-admin └── src │ └── main │ ├── resources │ ├── META-INF │ │ └── spring-devtools.properties │ ├── spy.properties │ └── mybatis │ │ └── mybatis-config.xml │ └── java │ └── com │ └── workflow │ ├── WorkflowServletInitializer.java │ └── web │ ├── controller │ ├── tool │ │ └── SwaggerController.java │ ├── system │ │ └── SysIndexController.java │ └── monitor │ │ └── ServerController.java │ └── core │ └── config │ └── P6spySqlFormatConfig.java ├── workflow-form ├── src │ ├── main │ │ ├── resources │ │ │ ├── spy.properties │ │ │ └── mapper │ │ │ │ └── DictTypeMapper.xml │ │ └── java │ │ │ └── com │ │ │ └── workflow │ │ │ └── form │ │ │ └── center │ │ │ ├── mapper │ │ │ ├── DictDataMapper.java │ │ │ ├── DictTypeMapper.java │ │ │ ├── WorkFlowFormModelMapper.java │ │ │ ├── WorkFlowFormCategoryMapper.java │ │ │ └── WorkFlowFormModelInfoMapper.java │ │ │ └── service │ │ │ ├── DictDataService.java │ │ │ ├── DictTypeService.java │ │ │ ├── WorkFlowFormModelService.java │ │ │ ├── WorkFlowFormCategoryService.java │ │ │ ├── WorkFlowFormModelInfoService.java │ │ │ └── impl │ │ │ ├── DictDataServiceImpl.java │ │ │ ├── DictTypeServiceImpl.java │ │ │ ├── WorkFlowFormModelServiceImpl.java │ │ │ ├── WorkFlowFormCategoryServiceImpl.java │ │ │ └── WorkFlowFormModelInfoServiceImpl.java │ └── test │ │ └── java │ │ └── com │ │ └── cci │ │ └── formcenter │ │ └── FormCenterApplicationTests.java └── .gitignore ├── workflow-center ├── src │ └── main │ │ ├── java │ │ └── com │ │ │ └── workflow │ │ │ └── process │ │ │ └── center │ │ │ ├── domain │ │ │ ├── mongo │ │ │ │ ├── MongoBaseInfo.java │ │ │ │ └── MongoWorkFlowFormData.java │ │ │ └── dto │ │ │ │ ├── WorkFlowGroupUserDTO.java │ │ │ │ ├── WorkFlowGroupPageUserDTO.java │ │ │ │ ├── ServiceReProcessDefinitionDTO.java │ │ │ │ └── MigrationValidationProcessServiceDTO.java │ │ │ ├── controller │ │ │ └── BaseController.java │ │ │ ├── service │ │ │ ├── BussinessService.java │ │ │ ├── FileService.java │ │ │ ├── AuthService.java │ │ │ ├── cmd │ │ │ │ ├── jump │ │ │ │ │ └── JumpCmd.java │ │ │ │ └── rollback │ │ │ │ │ └── RollbackStrategyFactory.java │ │ │ ├── WorkFlowTenantService.java │ │ │ ├── WorkFlowButtonService.java │ │ │ ├── WorkFlowEmailService.java │ │ │ ├── WorkFlowVariableService.java │ │ │ ├── WorkFlowCategoryService.java │ │ │ ├── WorkFlowHiCommentService.java │ │ │ ├── WorkFlowExpressionService.java │ │ │ ├── WorkFlowListenerParamService.java │ │ │ ├── WorkFlowRoleService.java │ │ │ ├── WorkFlowServiceGuideService.java │ │ │ ├── WorkFlowServiceCollectService.java │ │ │ ├── IDynamDubbo.java │ │ │ ├── WorkFlowFormDataService.java │ │ │ ├── WorkFlowModelReFormService.java │ │ │ ├── WorkFlowModelInfoService.java │ │ │ ├── WorkFlowServiceRelCategoryService.java │ │ │ ├── WorkFlowModelReFormReActivityService.java │ │ │ ├── WorkFlowListenerService.java │ │ │ ├── WorkFlowModelService.java │ │ │ ├── dubbo │ │ │ │ └── BussinessServiceImpl.java │ │ │ ├── WorkFlowServiceService.java │ │ │ ├── WorkFlowDeptService.java │ │ │ ├── WorkFlowServiceCategoryService.java │ │ │ ├── WorkFlowAreaService.java │ │ │ ├── WorkFlowExtendHisprocinstService.java │ │ │ ├── impl │ │ │ │ ├── WorkFlowEmailServiceImpl.java │ │ │ │ ├── WorkFlowTenantServiceImpl.java │ │ │ │ ├── WorkFlowButtonServiceImpl.java │ │ │ │ ├── WorkFlowCategoryServiceImpl.java │ │ │ │ ├── WorkFlowVariableServiceImpl.java │ │ │ │ ├── WorkFlowHiCommentServiceImpl.java │ │ │ │ ├── WorkFlowExpressionServiceImpl.java │ │ │ │ ├── WorkFlowServiceGuideServiceImpl.java │ │ │ │ ├── WorkFlowListenerParamServiceImpl.java │ │ │ │ ├── WorkFlowServiceCollectServiceImpl.java │ │ │ │ ├── WorkFlowModelReFormServiceImpl.java │ │ │ │ ├── WorkFlowServiceRelCategoryServiceImpl.java │ │ │ │ └── WorkFlowModelReFormReActivityServiceImpl.java │ │ │ └── WorkFlowGroupService.java │ │ │ ├── config │ │ │ ├── flowable │ │ │ │ ├── listener │ │ │ │ │ └── task │ │ │ │ │ │ ├── idm │ │ │ │ │ │ └── IdmCommonTaskListenerService.java │ │ │ │ │ │ └── interaction │ │ │ │ │ │ └── TaskBusinessRabbitMqCallListener.java │ │ │ │ ├── behavior │ │ │ │ │ ├── mail │ │ │ │ │ │ └── CustomMailActivityBehavior.java │ │ │ │ │ ├── usertask │ │ │ │ │ │ ├── CustomParallelMultiInstanceBehavior.java │ │ │ │ │ │ └── CustomSequentialMultiInstanceBehavior.java │ │ │ │ │ └── CustomActivityBehaviorFactory.java │ │ │ │ └── converter │ │ │ │ │ └── CustomBpmnJsonConverter.java │ │ │ └── mybatis │ │ │ │ └── ProcessTenantLineHandler.java │ │ │ ├── mapper │ │ │ ├── WorkFlowButtonMapper.java │ │ │ ├── WorkFlowEmailMapper.java │ │ │ ├── WorkFlowModelMapper.java │ │ │ ├── WorkFlowTenantMapper.java │ │ │ ├── WorkFlowVariableMapper.java │ │ │ ├── WorkFlowCategoryMapper.java │ │ │ ├── CommonSqlMapper.java │ │ │ ├── WorkFlowHiCommentMapper.java │ │ │ ├── WorkFlowListenerMapper.java │ │ │ ├── WorkFlowModelInfoMapper.java │ │ │ ├── WorkFlowExpressionMapper.java │ │ │ ├── WorkFlowServiceGuideMapper.java │ │ │ ├── WorkFlowListenerParamMapper.java │ │ │ ├── WorkFlowServiceCollectMapper.java │ │ │ ├── WorkFlowModelReFormMapper.java │ │ │ ├── WorkFlowExtendHisprocinstMapper.java │ │ │ ├── WorkFlowServiceRelCategoryMapper.java │ │ │ ├── WorkFlowModelReFormReActivityMapper.java │ │ │ ├── WorkFlowServiceMapper.java │ │ │ └── WorkFlowServiceCategoryMapper.java │ │ │ ├── common │ │ │ ├── contant │ │ │ │ ├── ServiceNameConstants.java │ │ │ │ └── CacheConstants.java │ │ │ └── enums │ │ │ │ ├── entity │ │ │ │ └── CommonTypeEnum.java │ │ │ │ └── TaskPriorityEnum.java │ │ │ └── annotation │ │ │ └── DistributedLock.java │ │ └── resources │ │ ├── lua │ │ ├── releaseLock.lua │ │ └── distributedLock.lua │ │ └── mapper │ │ ├── WorkFlowCategoryMapper.xml │ │ └── WorkFlowServiceRelCategoryMapper.xml ├── .gitignore └── README.md ├── workflow-common └── src │ └── main │ └── java │ └── com │ └── workflow │ └── common │ ├── core │ └── domain │ │ └── model │ │ └── RegisterBody.java │ ├── enums │ ├── DataSourceType.java │ ├── BusinessStatus.java │ ├── LimitType.java │ ├── OperatorType.java │ ├── UserStatus.java │ ├── BusinessType.java │ └── HttpMethod.java │ ├── exception │ ├── DemoModeException.java │ ├── user │ │ ├── CaptchaException.java │ │ ├── CaptchaExpireException.java │ │ ├── UserPasswordNotMatchException.java │ │ └── UserException.java │ ├── file │ │ ├── FileException.java │ │ ├── FileSizeLimitExceededException.java │ │ └── FileNameLengthLimitExceededException.java │ ├── UtilException.java │ └── job │ │ └── TaskException.java │ ├── utils │ ├── LogUtils.java │ └── MessageUtils.java │ └── annotation │ ├── Excels.java │ ├── RepeatSubmit.java │ ├── DataScope.java │ └── DataSource.java ├── workflow-generator └── src │ └── main │ └── resources │ └── generator.yml ├── workflow-center-api └── src │ └── main │ └── java │ └── com │ └── workflow │ └── process │ └── center │ └── domain │ └── dto │ ├── task │ ├── RollbackTaskDTO.java │ ├── ClaimTaskDTO.java │ ├── CompleteTaskDTO.java │ ├── TurnTaskDTO.java │ ├── DelegateTaskDTO.java │ ├── BackTaskDTO.java │ ├── AddSignTaskDTO.java │ ├── SynergyTaskDTO.java │ └── UpdateCandidateTaskDTO.java │ ├── AssigneeDTO.java │ ├── CandidateGroupDTO.java │ └── FlowableNodeDTO.java ├── workflow-process-common ├── workflow-process-common-pojo │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── workflow │ │ └── process │ │ └── center │ │ └── domain │ │ └── dto │ │ └── BaseQueryDTO.java ├── workflow-process-idm-pojo │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── workflow │ │ └── process │ │ └── center │ │ └── api │ │ └── domain │ │ └── LoginDTO.java └── pom.xml ├── workflow-quartz └── src │ └── main │ └── java │ └── com │ └── workflow │ └── quartz │ ├── util │ ├── QuartzJobExecution.java │ └── QuartzDisallowConcurrentExecution.java │ └── task │ └── RyTask.java ├── .gitignore └── workflow-framework └── src └── main └── java └── com └── workflow └── framework └── datasource └── DynamicDataSource.java /workflow-idm-api/README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /workflow-ui/public/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Disallow: / -------------------------------------------------------------------------------- /workflow-ui/src/components/ParentView/index.vue: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /workflow-ui/bin/build.bat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tudouxian/workflow/HEAD/workflow-ui/bin/build.bat -------------------------------------------------------------------------------- /workflow-ui/bin/package.bat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tudouxian/workflow/HEAD/workflow-ui/bin/package.bat -------------------------------------------------------------------------------- /workflow-ui/bin/run-web.bat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tudouxian/workflow/HEAD/workflow-ui/bin/run-web.bat -------------------------------------------------------------------------------- /workflow-ui/src/components/parser/index.js: -------------------------------------------------------------------------------- 1 | import Parser from './Parser' 2 | 3 | export default Parser 4 | -------------------------------------------------------------------------------- /workflow-ui/src/components/tinymce/README.md: -------------------------------------------------------------------------------- 1 | ## 简介 2 | 富文本编辑器tinymce的一个vue版本封装。使用cdn动态脚本引入的方式加载。 3 | 4 | -------------------------------------------------------------------------------- /workflow-ui/src/components/tinymce/index.js: -------------------------------------------------------------------------------- 1 | import Index from './index.vue' 2 | 3 | export default Index 4 | -------------------------------------------------------------------------------- /workflow-admin/src/main/resources/META-INF/spring-devtools.properties: -------------------------------------------------------------------------------- 1 | restart.include.json=/com.alibaba.fastjson.*.jar -------------------------------------------------------------------------------- /workflow-ui/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tudouxian/workflow/HEAD/workflow-ui/public/favicon.ico -------------------------------------------------------------------------------- /workflow-ui/src/components/package/theme/index.scss: -------------------------------------------------------------------------------- 1 | @import "./process-designer.scss"; 2 | @import "./process-panel.scss"; -------------------------------------------------------------------------------- /workflow-ui/src/assets/logo/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tudouxian/workflow/HEAD/workflow-ui/src/assets/logo/logo.png -------------------------------------------------------------------------------- /workflow-ui/src/assets/images/back.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tudouxian/workflow/HEAD/workflow-ui/src/assets/images/back.jpg -------------------------------------------------------------------------------- /workflow-ui/src/assets/images/back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tudouxian/workflow/HEAD/workflow-ui/src/assets/images/back.png -------------------------------------------------------------------------------- /workflow-ui/src/assets/401_images/401.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tudouxian/workflow/HEAD/workflow-ui/src/assets/401_images/401.gif -------------------------------------------------------------------------------- /workflow-ui/src/assets/404_images/404.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tudouxian/workflow/HEAD/workflow-ui/src/assets/404_images/404.png -------------------------------------------------------------------------------- /workflow-ui/src/assets/images/profile.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tudouxian/workflow/HEAD/workflow-ui/src/assets/images/profile.jpg -------------------------------------------------------------------------------- /workflow-form/src/main/resources/spy.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tudouxian/workflow/HEAD/workflow-form/src/main/resources/spy.properties -------------------------------------------------------------------------------- /workflow-ui/src/assets/404_images/404_cloud.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tudouxian/workflow/HEAD/workflow-ui/src/assets/404_images/404_cloud.png -------------------------------------------------------------------------------- /workflow-admin/src/main/resources/spy.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tudouxian/workflow/HEAD/workflow-admin/src/main/resources/spy.properties -------------------------------------------------------------------------------- /workflow-ui/src/components/render/slots/el-button.js: -------------------------------------------------------------------------------- 1 | export default { 2 | default(h, conf, key) { 3 | return conf.__slot__[key] 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /workflow-ui/src/assets/images/login-background.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tudouxian/workflow/HEAD/workflow-ui/src/assets/images/login-background.jpg -------------------------------------------------------------------------------- /workflow-ui/.env.production: -------------------------------------------------------------------------------- 1 | # 页面标题 2 | VUE_APP_TITLE = 流程引擎管理系统 3 | 4 | # 生产环境配置 5 | ENV = 'production' 6 | 7 | # 流程引擎管理系统/生产环境 8 | VUE_APP_BASE_API = '/prod-api' 9 | -------------------------------------------------------------------------------- /workflow-ui/src/utils/errorCode.js: -------------------------------------------------------------------------------- 1 | export default { 2 | '401': '认证失败,无法访问系统资源', 3 | '403': '当前操作没有权限', 4 | '404': '访问资源不存在', 5 | 'default': '系统未知错误,请反馈给管理员' 6 | } 7 | -------------------------------------------------------------------------------- /workflow-ui/.env.staging: -------------------------------------------------------------------------------- 1 | # 页面标题 2 | VUE_APP_TITLE = 流程引擎管理系统 3 | 4 | NODE_ENV = production 5 | 6 | # 测试环境配置 7 | ENV = 'staging' 8 | 9 | # 流程引擎管理系统/测试环境 10 | VUE_APP_BASE_API = '/stage-api' 11 | -------------------------------------------------------------------------------- /workflow-ui/src/api/menu.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | // 获取路由 4 | export const getRouters = () => { 5 | return request({ 6 | url: '/getRouters', 7 | method: 'get' 8 | }) 9 | } -------------------------------------------------------------------------------- /workflow-ui/src/plugins/extension-moddle/camunda/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | module.exports = { 4 | __init__: ["camundaModdleExtension"], 5 | camundaModdleExtension: ["type", require("./extension")] 6 | }; 7 | -------------------------------------------------------------------------------- /workflow-ui/src/api/monitor/server.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | // 查询服务器详细 4 | export function getServer() { 5 | return request({ 6 | url: '/monitor/server', 7 | method: 'get' 8 | }) 9 | } -------------------------------------------------------------------------------- /workflow-ui/src/assets/icons/svg/chart.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/domain/mongo/MongoBaseInfo.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.domain.mongo; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class MongoBaseInfo { 7 | } 8 | -------------------------------------------------------------------------------- /workflow-ui/.eslintignore: -------------------------------------------------------------------------------- 1 | # 忽略build目录下类型为js的文件的语法检查 2 | build/*.js 3 | # 忽略src/assets目录下文件的语法检查 4 | src/assets 5 | # 忽略public目录下文件的语法检查 6 | public 7 | # 忽略当前目录下为js的文件的语法检查 8 | *.js 9 | # 忽略当前目录下为vue的文件的语法检查 10 | *.vue -------------------------------------------------------------------------------- /workflow-ui/src/api/monitor/cache.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | // 查询缓存详细 4 | export function getCache() { 5 | return request({ 6 | url: '/monitor/cache', 7 | method: 'get' 8 | }) 9 | } 10 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/domain/mongo/MongoWorkFlowFormData.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.domain.mongo; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class MongoWorkFlowFormData { 7 | } 8 | -------------------------------------------------------------------------------- /workflow-ui/.env.development: -------------------------------------------------------------------------------- 1 | # 页面标题 2 | VUE_APP_TITLE = 流程引擎管理系统 3 | 4 | # 开发环境配置 5 | ENV = 'development' 6 | 7 | # 流程引擎管理系统/开发环境 8 | VUE_APP_BASE_API = '/dev-api' 9 | 10 | # 路由懒加载 11 | VUE_CLI_BABEL_TRANSPILE_MODULES = true 12 | -------------------------------------------------------------------------------- /workflow-ui/src/plugins/content-pad/index.js: -------------------------------------------------------------------------------- 1 | import CustomContextPadProvider from "./contentPadProvider"; 2 | 3 | export default { 4 | __init__: ["contextPadProvider"], 5 | contextPadProvider: ["type", CustomContextPadProvider] 6 | }; 7 | -------------------------------------------------------------------------------- /workflow-ui/src/assets/icons/svg/size.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /workflow-ui/src/components/package/process-designer/plugins/extension-moddle/camunda/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | module.exports = { 4 | __init__: ["camundaModdleExtension"], 5 | camundaModdleExtension: ["type", require("./extension")] 6 | }; 7 | -------------------------------------------------------------------------------- /workflow-ui/src/components/Process/index.js: -------------------------------------------------------------------------------- 1 | import workflowBpmnModeler from './index.vue' 2 | 3 | workflowBpmnModeler.install = Vue => Vue.component(workflowBpmnModeler.name, workflowBpmnModeler) // 给组件配置install方法 4 | 5 | export default workflowBpmnModeler 6 | -------------------------------------------------------------------------------- /workflow-ui/src/views/processCore/processService/processModelDesign/custom-renderer/index.js: -------------------------------------------------------------------------------- 1 | import CustomRenderer from "./CustomRenderer"; 2 | 3 | export default { 4 | __init__: ["customRenderer"], 5 | customRenderer: ["type", CustomRenderer] 6 | }; 7 | -------------------------------------------------------------------------------- /workflow-ui/src/components/package/refactor/index.js: -------------------------------------------------------------------------------- 1 | import MyPropertiesPanel from "./PropertiesPanel.vue"; 2 | 3 | MyPropertiesPanel.install = function(Vue) { 4 | Vue.component(MyPropertiesPanel.name, MyPropertiesPanel); 5 | }; 6 | 7 | export default MyPropertiesPanel; 8 | -------------------------------------------------------------------------------- /workflow-common/src/main/java/com/workflow/common/core/domain/model/RegisterBody.java: -------------------------------------------------------------------------------- 1 | package com.workflow.common.core.domain.model; 2 | 3 | /** 4 | * 用户注册对象 5 | * 6 | * @author workflow 7 | */ 8 | public class RegisterBody extends LoginBody 9 | { 10 | 11 | } 12 | -------------------------------------------------------------------------------- /workflow-ui/src/components/package/process-designer/plugins/content-pad/index.js: -------------------------------------------------------------------------------- 1 | import CustomContextPadProvider from "./contentPadProvider"; 2 | 3 | export default { 4 | __init__: ["contextPadProvider"], 5 | contextPadProvider: ["type", CustomContextPadProvider] 6 | }; 7 | -------------------------------------------------------------------------------- /workflow-ui/src/components/package/process-designer/index.js: -------------------------------------------------------------------------------- 1 | import MyProcessDesigner from "./ProcessDesigner.vue"; 2 | 3 | MyProcessDesigner.install = function(Vue) { 4 | Vue.component(MyProcessDesigner.name, MyProcessDesigner); 5 | }; 6 | 7 | export default MyProcessDesigner; 8 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/controller/BaseController.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.controller; 2 | 3 | /** 4 | * @Author: 土豆仙 5 | * @Date: 2021/7/6 14:06 6 | * @Description: 通用接口 7 | */ 8 | public class BaseController { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /workflow-ui/src/components/render/slots/el-input.js: -------------------------------------------------------------------------------- 1 | export default { 2 | prepend(h, conf, key) { 3 | return 4 | }, 5 | append(h, conf, key) { 6 | return 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/service/BussinessService.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.service; 2 | 3 | import java.util.Map; 4 | 5 | public interface BussinessService { 6 | 7 | Map findByProcessInstanceId(String processInstanceId); 8 | } 9 | -------------------------------------------------------------------------------- /workflow-generator/src/main/resources/generator.yml: -------------------------------------------------------------------------------- 1 | # 代码生成 2 | gen: 3 | # 作者 4 | author: workflow 5 | # 默认生成包路径 system 需改成自己的模块名称 如 system monitor tool 6 | packageName: com.workflow.system 7 | # 自动去除表前缀,默认是false 8 | autoRemovePre: false 9 | # 表前缀(生成类名不会包含表前缀,多个用逗号分隔) 10 | tablePrefix: sys_ -------------------------------------------------------------------------------- /workflow-ui/src/layout/components/index.js: -------------------------------------------------------------------------------- 1 | export { default as AppMain } from './AppMain' 2 | export { default as Navbar } from './Navbar' 3 | export { default as Settings } from './Settings' 4 | export { default as Sidebar } from './Sidebar/index.vue' 5 | export { default as TagsView } from './TagsView/index.vue' 6 | -------------------------------------------------------------------------------- /workflow-ui/src/assets/icons/svg/link.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /workflow-ui/src/plugins/extension-moddle/activiti/index.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @author igdianov 3 | * address https://github.com/igdianov/activiti-bpmn-moddle 4 | * */ 5 | 6 | module.exports = { 7 | __init__: ["ActivitiModdleExtension"], 8 | ActivitiModdleExtension: ["type", require("./activitiExtension")] 9 | }; 10 | -------------------------------------------------------------------------------- /workflow-ui/src/plugins/extension-moddle/flowable/index.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @author igdianov 3 | * address https://github.com/igdianov/activiti-bpmn-moddle 4 | * */ 5 | 6 | module.exports = { 7 | __init__: ["FlowableModdleExtension"], 8 | FlowableModdleExtension: ["type", require("./flowableExtension")] 9 | }; 10 | -------------------------------------------------------------------------------- /workflow-ui/src/components/render/slots/el-select.js: -------------------------------------------------------------------------------- 1 | export default { 2 | options(h, conf, key) { 3 | const list = [] 4 | conf.__slot__.options.forEach(item => { 5 | list.push() 6 | }) 7 | return list 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /workflow-center/src/main/resources/lua/releaseLock.lua: -------------------------------------------------------------------------------- 1 | local key = KEYS[1] 2 | local value = ARGV[1] 3 | 4 | 5 | local val_ = redis.call("GET", key); 6 | 7 | if val_ == nil then 8 | return 1 9 | elseif val_ == value then 10 | if redis.call("DEL", key) then 11 | return 1 12 | end 13 | end 14 | return 0 15 | -------------------------------------------------------------------------------- /workflow-ui/src/views/redirect.vue: -------------------------------------------------------------------------------- 1 | 13 | -------------------------------------------------------------------------------- /workflow-common/src/main/java/com/workflow/common/enums/DataSourceType.java: -------------------------------------------------------------------------------- 1 | package com.workflow.common.enums; 2 | 3 | /** 4 | * 数据源 5 | * 6 | * @author workflow 7 | */ 8 | public enum DataSourceType 9 | { 10 | /** 11 | * 主库 12 | */ 13 | MASTER, 14 | 15 | /** 16 | * 从库 17 | */ 18 | SLAVE 19 | } 20 | -------------------------------------------------------------------------------- /workflow-common/src/main/java/com/workflow/common/enums/BusinessStatus.java: -------------------------------------------------------------------------------- 1 | package com.workflow.common.enums; 2 | 3 | /** 4 | * 操作状态 5 | * 6 | * @author workflow 7 | * 8 | */ 9 | public enum BusinessStatus 10 | { 11 | /** 12 | * 成功 13 | */ 14 | SUCCESS, 15 | 16 | /** 17 | * 失败 18 | */ 19 | FAIL, 20 | } 21 | -------------------------------------------------------------------------------- /workflow-common/src/main/java/com/workflow/common/enums/LimitType.java: -------------------------------------------------------------------------------- 1 | package com.workflow.common.enums; 2 | 3 | /** 4 | * 限流类型 5 | * 6 | * @author workflow 7 | */ 8 | 9 | public enum LimitType 10 | { 11 | /** 12 | * 默认策略全局限流 13 | */ 14 | DEFAULT, 15 | 16 | /** 17 | * 根据请求者IP进行限流 18 | */ 19 | IP 20 | } 21 | -------------------------------------------------------------------------------- /workflow-ui/src/assets/icons/svg/guide.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /workflow-ui/src/components/IconSelect/requireIcons.js: -------------------------------------------------------------------------------- 1 | 2 | const req = require.context('../../assets/icons/svg', false, /\.svg$/) 3 | const requireAll = requireContext => requireContext.keys() 4 | 5 | const re = /\.\/(.*)\.svg/ 6 | 7 | const icons = requireAll(req).map(i => { 8 | return i.match(re)[1] 9 | }) 10 | 11 | export default icons 12 | -------------------------------------------------------------------------------- /workflow-ui/src/components/package/process-designer/plugins/extension-moddle/activiti/index.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @author igdianov 3 | * address https://github.com/igdianov/activiti-bpmn-moddle 4 | * */ 5 | 6 | module.exports = { 7 | __init__: ["ActivitiModdleExtension"], 8 | ActivitiModdleExtension: ["type", require("./activitiExtension")] 9 | }; 10 | -------------------------------------------------------------------------------- /workflow-ui/src/components/package/process-designer/plugins/extension-moddle/flowable/index.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @author igdianov 3 | * address https://github.com/igdianov/activiti-bpmn-moddle 4 | * */ 5 | 6 | module.exports = { 7 | __init__: ["FlowableModdleExtension"], 8 | FlowableModdleExtension: ["type", require("./flowableExtension")] 9 | }; 10 | -------------------------------------------------------------------------------- /workflow-ui/src/views/components/icons/svg-icons.js: -------------------------------------------------------------------------------- 1 | const req = require.context('../../../assets/icons/svg', false, /\.svg$/) 2 | const requireAll = requireContext => requireContext.keys() 3 | 4 | const re = /\.\/(.*)\.svg/ 5 | 6 | const svgIcons = requireAll(req).map(i => { 7 | return i.match(re)[1] 8 | }) 9 | 10 | export default svgIcons 11 | -------------------------------------------------------------------------------- /workflow-form/src/test/java/com/cci/formcenter/FormCenterApplicationTests.java: -------------------------------------------------------------------------------- 1 | package com.cci.formcenter; 2 | 3 | import org.junit.jupiter.api.Test; 4 | import org.springframework.boot.test.context.SpringBootTest; 5 | 6 | @SpringBootTest 7 | class FormCenterApplicationTests { 8 | 9 | @Test 10 | void contextLoads() { 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /workflow-ui/src/icons/index.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import SvgIcon from '@/components/SvgIcon'// svg component 3 | 4 | // register globally 5 | Vue.component('svg-icon', SvgIcon) 6 | 7 | const req = require.context('./svg', false, /\.svg$/) 8 | const requireAll = requireContext => requireContext.keys().map(requireContext) 9 | requireAll(req) 10 | -------------------------------------------------------------------------------- /workflow-ui/src/assets/icons/index.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import SvgIcon from '@/components/SvgIcon'// svg component 3 | 4 | // register globally 5 | Vue.component('svg-icon', SvgIcon) 6 | 7 | const req = require.context('./svg', false, /\.svg$/) 8 | const requireAll = requireContext => requireContext.keys().map(requireContext) 9 | requireAll(req) 10 | -------------------------------------------------------------------------------- /workflow-ui/src/assets/icons/svg/money.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /workflow-ui/src/utils/auth.js: -------------------------------------------------------------------------------- 1 | import Cookies from 'js-cookie' 2 | 3 | const TokenKey = 'Admin-Token' 4 | 5 | export function getToken() { 6 | return Cookies.get(TokenKey) 7 | } 8 | 9 | export function setToken(token) { 10 | return Cookies.set(TokenKey, token) 11 | } 12 | 13 | export function removeToken() { 14 | return Cookies.remove(TokenKey) 15 | } 16 | -------------------------------------------------------------------------------- /workflow-ui/src/assets/icons/svg/email.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/config/flowable/listener/task/idm/IdmCommonTaskListenerService.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.config.flowable.listener.task.idm; 2 | 3 | import org.flowable.task.service.delegate.DelegateTask; 4 | 5 | public interface IdmCommonTaskListenerService { 6 | 7 | void setLastNodeAssignee(DelegateTask delegateTask); 8 | } 9 | -------------------------------------------------------------------------------- /workflow-common/src/main/java/com/workflow/common/exception/DemoModeException.java: -------------------------------------------------------------------------------- 1 | package com.workflow.common.exception; 2 | 3 | /** 4 | * 演示模式异常 5 | * 6 | * @author workflow 7 | */ 8 | public class DemoModeException extends RuntimeException 9 | { 10 | private static final long serialVersionUID = 1L; 11 | 12 | public DemoModeException() 13 | { 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /workflow-ui/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules/ 3 | dist/ 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | **/*.log 8 | 9 | tests/**/coverage/ 10 | tests/e2e/reports 11 | selenium-debug.log 12 | 13 | # Editor directories and files 14 | .idea 15 | .vscode 16 | *.suo 17 | *.ntvs* 18 | *.njsproj 19 | *.sln 20 | *.local 21 | 22 | package-lock.json 23 | yarn.lock 24 | -------------------------------------------------------------------------------- /workflow-ui/src/assets/icons/svg/drag.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /workflow-ui/src/assets/icons/svgo.yml: -------------------------------------------------------------------------------- 1 | # replace default config 2 | 3 | # multipass: true 4 | # full: true 5 | 6 | plugins: 7 | 8 | # - name 9 | # 10 | # or: 11 | # - name: false 12 | # - name: true 13 | # 14 | # or: 15 | # - name: 16 | # param1: 1 17 | # param2: 2 18 | 19 | - removeAttrs: 20 | attrs: 21 | - 'fill' 22 | - 'fill-rule' 23 | -------------------------------------------------------------------------------- /workflow-ui/src/views/monitor/druid/index.vue: -------------------------------------------------------------------------------- 1 | 4 | 16 | -------------------------------------------------------------------------------- /workflow-ui/src/views/tool/swagger/index.vue: -------------------------------------------------------------------------------- 1 | 4 | 16 | -------------------------------------------------------------------------------- /workflow-ui/src/views/processCore/processConfig/email/dict.js: -------------------------------------------------------------------------------- 1 | export default { 2 | computed: { 3 | dict() { 4 | return { 5 | tenant: this.$store.state.dict.tenant, 6 | } 7 | } 8 | }, 9 | methods: { 10 | formatterTenantId(row, column, cellValue) { 11 | return this.dict.tenant.find(item => item.value === cellValue).name 12 | }, 13 | }, 14 | } 15 | -------------------------------------------------------------------------------- /workflow-ui/src/views/processCore/processService/processSerivceCategory/dict.js: -------------------------------------------------------------------------------- 1 | export default { 2 | computed: { 3 | dict() { 4 | return { 5 | flag: this.$store.state.dict.flag, 6 | } 7 | } 8 | }, 9 | methods: { 10 | formatterFlag(row, column, cellValue) { 11 | return this.dict.flag.find(item => item.value === cellValue).name 12 | }, 13 | }, 14 | } -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/config/flowable/behavior/mail/CustomMailActivityBehavior.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.config.flowable.behavior.mail; 2 | 3 | import lombok.extern.slf4j.Slf4j; 4 | import org.flowable.engine.impl.bpmn.behavior.MailActivityBehavior; 5 | 6 | @Slf4j 7 | public class CustomMailActivityBehavior extends MailActivityBehavior { 8 | 9 | } 10 | -------------------------------------------------------------------------------- /workflow-center-api/src/main/java/com/workflow/process/center/domain/dto/task/RollbackTaskDTO.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.domain.dto.task; 2 | 3 | 4 | import io.swagger.annotations.ApiModel; 5 | import lombok.Data; 6 | import lombok.EqualsAndHashCode; 7 | 8 | @EqualsAndHashCode(callSuper = true) 9 | @Data 10 | @ApiModel("回撤任务") 11 | public class RollbackTaskDTO extends BaseTaskDTO { 12 | } 13 | -------------------------------------------------------------------------------- /workflow-common/src/main/java/com/workflow/common/enums/OperatorType.java: -------------------------------------------------------------------------------- 1 | package com.workflow.common.enums; 2 | 3 | /** 4 | * 操作人类别 5 | * 6 | * @author workflow 7 | */ 8 | public enum OperatorType 9 | { 10 | /** 11 | * 其它 12 | */ 13 | OTHER, 14 | 15 | /** 16 | * 后台用户 17 | */ 18 | MANAGE, 19 | 20 | /** 21 | * 手机端用户 22 | */ 23 | MOBILE 24 | } 25 | -------------------------------------------------------------------------------- /workflow-process-common/workflow-process-common-pojo/src/main/java/com/workflow/process/center/domain/dto/BaseQueryDTO.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.domain.dto; 2 | 3 | import lombok.Data; 4 | 5 | import java.io.Serializable; 6 | 7 | @Data 8 | public class BaseQueryDTO implements Serializable { 9 | 10 | private Integer pageIndex =1; 11 | 12 | private Integer pageSize =10; 13 | } 14 | -------------------------------------------------------------------------------- /workflow-ui/src/views/workBench/homePage/LaunchMission/LaunchMission.vue: -------------------------------------------------------------------------------- 1 | 6 | 22 | -------------------------------------------------------------------------------- /workflow-common/src/main/java/com/workflow/common/utils/LogUtils.java: -------------------------------------------------------------------------------- 1 | package com.workflow.common.utils; 2 | 3 | /** 4 | * 处理并记录日志文件 5 | * 6 | * @author workflow 7 | */ 8 | public class LogUtils 9 | { 10 | public static String getBlock(Object msg) 11 | { 12 | if (msg == null) 13 | { 14 | msg = ""; 15 | } 16 | return "[" + msg.toString() + "]"; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /workflow-center-api/src/main/java/com/workflow/process/center/domain/dto/AssigneeDTO.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.domain.dto; 2 | 3 | import lombok.Data; 4 | 5 | import java.io.Serializable; 6 | 7 | @Data 8 | public class AssigneeDTO implements Serializable { 9 | 10 | //用户id 11 | private String userId; 12 | //名称 13 | private String name; 14 | //电话 15 | private String mobile; 16 | } 17 | -------------------------------------------------------------------------------- /workflow-center/src/main/resources/lua/distributedLock.lua: -------------------------------------------------------------------------------- 1 | local key = KEYS[1] 2 | local value = ARGV[1] 3 | local expire = ARGV[2] 4 | 5 | if redis.call("SET", key, value, "NX", "EX", expire) then 6 | return 1 7 | --ttl当 key 存在但没有设置剩余生存时间时,返回 -1 8 | elseif redis.call("TTL", key) == -1 then 9 | --设置成功返回 1 。 当 key 不存在或者不能为 key 设置过期时间时返回 0 10 | redis.call("EXPIRE", key, expire) 11 | end 12 | return 0 13 | 14 | 15 | -------------------------------------------------------------------------------- /workflow-ui/src/api/monitor/online.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | // 查询在线用户列表 4 | export function list(query) { 5 | return request({ 6 | url: '/monitor/online/list', 7 | method: 'get', 8 | params: query 9 | }) 10 | } 11 | 12 | // 强退用户 13 | export function forceLogout(tokenId) { 14 | return request({ 15 | url: '/monitor/online/' + tokenId, 16 | method: 'delete' 17 | }) 18 | } 19 | -------------------------------------------------------------------------------- /workflow-ui/src/components/workflow/Doc/index.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 22 | -------------------------------------------------------------------------------- /workflow-common/src/main/java/com/workflow/common/exception/user/CaptchaException.java: -------------------------------------------------------------------------------- 1 | package com.workflow.common.exception.user; 2 | 3 | /** 4 | * 验证码错误异常类 5 | * 6 | * @author workflow 7 | */ 8 | public class CaptchaException extends UserException 9 | { 10 | private static final long serialVersionUID = 1L; 11 | 12 | public CaptchaException() 13 | { 14 | super("user.jcaptcha.error", null); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /workflow-form/src/main/java/com/workflow/form/center/mapper/DictDataMapper.java: -------------------------------------------------------------------------------- 1 | package com.workflow.form.center.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.workflow.form.center.domain.entity.DictData; 5 | 6 | /** 7 | * 字典数据表(DictData)表数据库访问层 8 | * 9 | * @author 土豆仙 10 | * @since 2021-08-10 14:35:42 11 | */ 12 | public interface DictDataMapper extends BaseMapper { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /workflow-form/src/main/java/com/workflow/form/center/mapper/DictTypeMapper.java: -------------------------------------------------------------------------------- 1 | package com.workflow.form.center.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.workflow.form.center.domain.entity.DictType; 5 | 6 | /** 7 | * 字典类型表(DictType)表数据库访问层 8 | * 9 | * @author 土豆仙 10 | * @since 2021-08-10 14:34:59 11 | */ 12 | public interface DictTypeMapper extends BaseMapper { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /workflow-form/src/main/java/com/workflow/form/center/service/DictDataService.java: -------------------------------------------------------------------------------- 1 | package com.workflow.form.center.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.workflow.form.center.domain.entity.DictData; 5 | 6 | /** 7 | * 字典数据表(DictData)表服务接口 8 | * 9 | * @author 土豆仙 10 | * @since 2021-08-10 14:35:42 11 | */ 12 | public interface DictDataService extends IService { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /workflow-form/src/main/java/com/workflow/form/center/service/DictTypeService.java: -------------------------------------------------------------------------------- 1 | package com.workflow.form.center.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.workflow.form.center.domain.entity.DictType; 5 | 6 | /** 7 | * 字典类型表(DictType)表服务接口 8 | * 9 | * @author 土豆仙 10 | * @since 2021-08-10 14:34:59 11 | */ 12 | public interface DictTypeService extends IService { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /workflow-ui/src/components/workflow/Git/index.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 22 | -------------------------------------------------------------------------------- /workflow-ui/src/assets/icons/svg/documentation.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /workflow-ui/src/assets/icons/svg/fullscreen.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/service/FileService.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.service; 2 | 3 | import org.springframework.web.multipart.MultipartFile; 4 | 5 | public interface FileService { 6 | 7 | /** 8 | * 文件上传接口 9 | * 10 | * @param file 上传的文件 11 | * @return 访问地址 12 | * @throws Exception 13 | */ 14 | public String uploadFile(MultipartFile file) throws Exception; 15 | } 16 | -------------------------------------------------------------------------------- /workflow-common/src/main/java/com/workflow/common/exception/user/CaptchaExpireException.java: -------------------------------------------------------------------------------- 1 | package com.workflow.common.exception.user; 2 | 3 | /** 4 | * 验证码失效异常类 5 | * 6 | * @author workflow 7 | */ 8 | public class CaptchaExpireException extends UserException 9 | { 10 | private static final long serialVersionUID = 1L; 11 | 12 | public CaptchaExpireException() 13 | { 14 | super("user.jcaptcha.expire", null); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/service/AuthService.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.service; 2 | 3 | import com.workflow.process.center.api.domain.LoginDTO; 4 | import com.workflow.process.center.domain.LoginUser; 5 | 6 | import java.util.Map; 7 | 8 | public interface AuthService { 9 | 10 | // Map createToken(LoginDTO loginDTO); 11 | 12 | //获取登录用户信息 13 | LoginUser getLoginUser(); 14 | 15 | } 16 | -------------------------------------------------------------------------------- /workflow-ui/src/utils/generator/ruleTrigger.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 用于生成表单校验,指定正则规则的触发方式。 3 | * 未在此处声明无触发方式的组件将不生成rule!! 4 | */ 5 | export default { 6 | 'el-input': 'blur', 7 | 'el-input-number': 'blur', 8 | 'el-select': 'change', 9 | 'el-radio-group': 'change', 10 | 'el-checkbox-group': 'change', 11 | 'el-cascader': 'change', 12 | 'el-time-picker': 'change', 13 | 'el-date-picker': 'change', 14 | 'el-rate': 'change', 15 | tinymce: 'blur' 16 | } 17 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/service/cmd/jump/JumpCmd.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.service.cmd.jump; 2 | 3 | import org.flowable.common.engine.impl.interceptor.Command; 4 | import org.flowable.common.engine.impl.interceptor.CommandContext; 5 | 6 | public class JumpCmd implements Command { 7 | 8 | @Override 9 | public Void execute(CommandContext commandContext) { 10 | return null; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /workflow-ui/src/assets/icons/svg/user.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /workflow-ui/src/components/parser/README.md: -------------------------------------------------------------------------------- 1 | ## form-generator JSON 解析器 2 | >用于将form-generator导出的JSON解析成一个表单。 3 | 4 | ### 安装组件 5 | ``` 6 | npm i form-gen-parser 7 | ``` 8 | 或者 9 | ``` 10 | yarn add form-gen-parser 11 | ``` 12 | 13 | ### 使用示例 14 | > [查看在线示例](https://mrhj.gitee.io/form-generator/#/parser) 15 | 16 | 示例代码: 17 | > [src\components\parser\example\Index.vue](https://github.com/JakHuang/form-generator/blob/dev/src/components/parser/example/Index.vue) 18 | -------------------------------------------------------------------------------- /workflow-ui/src/assets/icons/svg/lock.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /workflow-center-api/src/main/java/com/workflow/process/center/domain/dto/CandidateGroupDTO.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.domain.dto; 2 | 3 | import io.swagger.annotations.ApiModel; 4 | import lombok.Data; 5 | 6 | import java.io.Serializable; 7 | 8 | @Data 9 | @ApiModel("修改候选组") 10 | public class CandidateGroupDTO implements Serializable { 11 | 12 | private String areaKey; 13 | 14 | private String deptKey; 15 | 16 | private String roleKey; 17 | } 18 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/mapper/WorkFlowButtonMapper.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.workflow.process.center.domain.entity.WorkFlowButton; 5 | 6 | /** 7 | * 流程按钮(WorkFlowButton)表数据库访问层 8 | * 9 | * @author 土豆仙 10 | * @since 2021-06-21 16:39:38 11 | */ 12 | public interface WorkFlowButtonMapper extends BaseMapper { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/mapper/WorkFlowEmailMapper.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.workflow.process.center.domain.entity.WorkFlowEmail; 5 | 6 | /** 7 | * 租户邮箱服务配置(WorkFlowEmail)表数据库访问层 8 | * 9 | * @author 土豆仙 10 | * @since 2021-09-06 10:58:03 11 | */ 12 | public interface WorkFlowEmailMapper extends BaseMapper { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/mapper/WorkFlowModelMapper.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.workflow.process.center.domain.entity.WorkFlowModel; 5 | 6 | /** 7 | * 流程模型信息(WorkFlowModel)表数据库访问层 8 | * 9 | * @author 土豆仙 10 | * @since 2021-08-26 14:17:52 11 | */ 12 | public interface WorkFlowModelMapper extends BaseMapper { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/mapper/WorkFlowTenantMapper.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.workflow.process.center.domain.entity.WorkFlowTenant; 5 | 6 | /** 7 | * (WorkFlowTenant)表数据库访问层 8 | * 9 | * @author 土豆仙 10 | * @since 2021-06-30 10:45:00 11 | */ 12 | public interface WorkFlowTenantMapper extends BaseMapper { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/service/WorkFlowTenantService.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.workflow.process.center.domain.entity.WorkFlowTenant; 5 | 6 | /** 7 | * (WorkFlowTenant)表服务接口 8 | * 9 | * @author 土豆仙 10 | * @since 2021-06-30 10:45:03 11 | */ 12 | public interface WorkFlowTenantService extends IService { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /workflow-ui/.editorconfig: -------------------------------------------------------------------------------- 1 | # 告诉EditorConfig插件,这是根文件,不用继续往上查找 2 | root = true 3 | 4 | # 匹配全部文件 5 | [*] 6 | # 设置字符集 7 | charset = utf-8 8 | # 缩进风格,可选space、tab 9 | indent_style = space 10 | # 缩进的空格数 11 | indent_size = 2 12 | # 结尾换行符,可选lf、cr、crlf 13 | end_of_line = lf 14 | # 在文件结尾插入新行 15 | insert_final_newline = true 16 | # 删除一行中的前后空格 17 | trim_trailing_whitespace = true 18 | 19 | # 匹配md结尾的文件 20 | [*.md] 21 | insert_final_newline = false 22 | trim_trailing_whitespace = false 23 | -------------------------------------------------------------------------------- /workflow-ui/src/views/tool/build/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import App from './App.vue' 3 | import router from '@/router' 4 | import '@/styles/index.scss' 5 | import '@/icons' 6 | import axios from 'axios' 7 | import Tinymce from '@/components/tinymce/index.vue' 8 | 9 | Vue.component('tinymce', Tinymce) 10 | 11 | Vue.config.productionTip = false 12 | Vue.prototype.$axios = axios 13 | 14 | new Vue({ 15 | router, 16 | render: h => h(App) 17 | }).$mount('#app') 18 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/mapper/WorkFlowVariableMapper.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.workflow.process.center.domain.entity.WorkFlowVariable; 5 | 6 | /** 7 | * (ActRuVariable)表数据库访问层 8 | * 9 | * @author 土豆仙 10 | * @since 2021-09-17 13:54:42 11 | */ 12 | public interface WorkFlowVariableMapper extends BaseMapper { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/service/WorkFlowButtonService.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.workflow.process.center.domain.entity.WorkFlowButton; 5 | 6 | /** 7 | * 流程按钮(WorkFlowButton)表服务接口 8 | * 9 | * @author 土豆仙 10 | * @since 2021-06-21 16:39:38 11 | */ 12 | public interface WorkFlowButtonService extends IService { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/service/WorkFlowEmailService.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.workflow.process.center.domain.entity.WorkFlowEmail; 5 | 6 | /** 7 | * 租户邮箱服务配置(WorkFlowEmail)表服务接口 8 | * 9 | * @author 土豆仙 10 | * @since 2021-09-06 10:58:03 11 | */ 12 | public interface WorkFlowEmailService extends IService { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/mapper/WorkFlowCategoryMapper.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.workflow.process.center.domain.entity.WorkFlowCategory; 5 | 6 | /** 7 | * 流程分类(WorkFlowCategory)表数据库访问层 8 | * 9 | * @author 土豆仙 10 | * @since 2021-06-21 15:59:40 11 | */ 12 | public interface WorkFlowCategoryMapper extends BaseMapper { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/service/WorkFlowVariableService.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.workflow.process.center.domain.entity.WorkFlowVariable; 5 | 6 | /** 7 | * (ActRuVariable)表服务接口 8 | * 9 | * @author 土豆仙 10 | * @since 2021-09-17 13:54:42 11 | */ 12 | public interface WorkFlowVariableService extends IService { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /workflow-common/src/main/java/com/workflow/common/exception/user/UserPasswordNotMatchException.java: -------------------------------------------------------------------------------- 1 | package com.workflow.common.exception.user; 2 | 3 | /** 4 | * 用户密码不正确或不符合规范异常类 5 | * 6 | * @author workflow 7 | */ 8 | public class UserPasswordNotMatchException extends UserException 9 | { 10 | private static final long serialVersionUID = 1L; 11 | 12 | public UserPasswordNotMatchException() 13 | { 14 | super("user.password.not.match", null); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /workflow-form/src/main/java/com/workflow/form/center/mapper/WorkFlowFormModelMapper.java: -------------------------------------------------------------------------------- 1 | package com.workflow.form.center.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.workflow.form.center.domain.entity.WorkFlowFormModel; 5 | 6 | /** 7 | * 自定义表单模型表(WorkFlowFormModel)表数据库访问层 8 | * 9 | * @author 土豆仙 10 | * @since 2021-07-29 10:54:57 11 | */ 12 | public interface WorkFlowFormModelMapper extends BaseMapper { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /workflow-ui/src/assets/icons/svg/excel.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /workflow-center-api/src/main/java/com/workflow/process/center/domain/dto/task/ClaimTaskDTO.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.domain.dto.task; 2 | 3 | import io.swagger.annotations.ApiModel; 4 | import lombok.Data; 5 | import lombok.EqualsAndHashCode; 6 | 7 | /** 8 | * @Author: 土豆仙 9 | * @Date: 2021/6/28 17:54 10 | * @Description: 签收 11 | */ 12 | @EqualsAndHashCode(callSuper = true) 13 | @Data 14 | @ApiModel("签收参数") 15 | public class ClaimTaskDTO extends BaseTaskDTO { 16 | } 17 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/mapper/CommonSqlMapper.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.mapper; 2 | 3 | 4 | import org.apache.ibatis.annotations.Mapper; 5 | 6 | import java.util.List; 7 | import java.util.Map; 8 | 9 | @Mapper 10 | public interface CommonSqlMapper { 11 | 12 | List> queryColumns(String tableName); 13 | 14 | int insertOrUpadteMap(Map columnMap, String databaseName, String tableName); 15 | } 16 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/mapper/WorkFlowHiCommentMapper.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.workflow.process.center.domain.entity.WorkFlowHiComment; 5 | 6 | /** 7 | * (WorkFlowHiComment)表数据库访问层 8 | * 9 | * @author 土豆仙 10 | * @since 2021-07-20 15:54:09 11 | */ 12 | public interface WorkFlowHiCommentMapper extends BaseMapper { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/mapper/WorkFlowListenerMapper.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.workflow.process.center.domain.entity.WorkFlowListener; 5 | 6 | /** 7 | * 流程监听器(WorkFlowListener)表数据库访问层 8 | * 9 | * @author 土豆仙 10 | * @since 2021-08-23 15:15:26 11 | */ 12 | public interface WorkFlowListenerMapper extends BaseMapper { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/mapper/WorkFlowModelInfoMapper.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.workflow.process.center.domain.entity.WorkFlowModelInfo; 5 | 6 | /** 7 | * (WorkFlowModelInfo)表数据库访问层 8 | * 9 | * @author 土豆仙 10 | * @since 2021-06-26 22:25:20 11 | */ 12 | public interface WorkFlowModelInfoMapper extends BaseMapper { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/service/WorkFlowCategoryService.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.workflow.process.center.domain.entity.WorkFlowCategory; 5 | 6 | /** 7 | * 流程分类(WorkFlowCategory)表服务接口 8 | * 9 | * @author 土豆仙 10 | * @since 2021-06-21 15:59:47 11 | */ 12 | public interface WorkFlowCategoryService extends IService { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/service/WorkFlowHiCommentService.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.workflow.process.center.domain.entity.WorkFlowHiComment; 5 | 6 | /** 7 | * (WorkFlowHiComment)表服务接口 8 | * 9 | * @author 土豆仙 10 | * @since 2021-07-20 15:54:09 11 | */ 12 | public interface WorkFlowHiCommentService extends IService { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /workflow-form/src/main/java/com/workflow/form/center/service/WorkFlowFormModelService.java: -------------------------------------------------------------------------------- 1 | package com.workflow.form.center.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.workflow.form.center.domain.entity.WorkFlowFormModel; 5 | 6 | /** 7 | * 自定义表单模型表(WorkFlowFormModel)表服务接口 8 | * 9 | * @author 土豆仙 10 | * @since 2021-07-29 10:54:57 11 | */ 12 | public interface WorkFlowFormModelService extends IService { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /workflow-form/src/main/java/com/workflow/form/center/mapper/WorkFlowFormCategoryMapper.java: -------------------------------------------------------------------------------- 1 | package com.workflow.form.center.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.workflow.form.center.domain.entity.WorkFlowFormCategory; 5 | 6 | /** 7 | * 表单分类表(WorkFlowFormCategory)表数据库访问层 8 | * 9 | * @author 土豆仙 10 | * @since 2021-07-29 10:54:24 11 | */ 12 | public interface WorkFlowFormCategoryMapper extends BaseMapper { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /workflow-idm-api/src/main/java/com/workflow/process/center/api/LoginInfoService.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.api; 2 | 3 | import com.workflow.process.center.api.domain.LoginDTO; 4 | import com.workflow.process.center.domain.LoginUser; 5 | 6 | import java.util.Map; 7 | 8 | public interface LoginInfoService { 9 | 10 | //授权token放在变量access_token中 11 | //Map createToken(LoginDTO loginDTO); 12 | 13 | public LoginUser getLoginUser(String token); 14 | } 15 | -------------------------------------------------------------------------------- /workflow-ui/src/views/processCore/processMeta/definition/dict.js: -------------------------------------------------------------------------------- 1 | export default { 2 | computed: { 3 | dict() { 4 | return { 5 | category: this.$store.state.dict.category, 6 | } 7 | } 8 | }, 9 | methods: { 10 | formatterCategoryId(row, column, cellValue) { 11 | console.log(cellValue); 12 | const findDict = this.dict.category.find(item => item.value == cellValue) 13 | return findDict ? findDict.name : "未找到字典项" 14 | } 15 | }, 16 | } 17 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/mapper/WorkFlowExpressionMapper.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.workflow.process.center.domain.entity.WorkFlowExpression; 5 | 6 | /** 7 | * 流程表达式(WorkFlowExpression)表数据库访问层 8 | * 9 | * @author 土豆仙 10 | * @since 2021-08-23 16:24:55 11 | */ 12 | public interface WorkFlowExpressionMapper extends BaseMapper { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/service/WorkFlowExpressionService.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.workflow.process.center.domain.entity.WorkFlowExpression; 5 | 6 | /** 7 | * 流程表达式(WorkFlowExpression)表服务接口 8 | * 9 | * @author 土豆仙 10 | * @since 2021-08-23 16:24:55 11 | */ 12 | public interface WorkFlowExpressionService extends IService { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /workflow-form/src/main/java/com/workflow/form/center/service/WorkFlowFormCategoryService.java: -------------------------------------------------------------------------------- 1 | package com.workflow.form.center.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.workflow.form.center.domain.entity.WorkFlowFormCategory; 5 | 6 | /** 7 | * 表单分类表(WorkFlowFormCategory)表服务接口 8 | * 9 | * @author 土豆仙 10 | * @since 2021-07-29 10:54:24 11 | */ 12 | public interface WorkFlowFormCategoryService extends IService { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /workflow-ui/src/components/render/slots/el-radio-group.js: -------------------------------------------------------------------------------- 1 | export default { 2 | options(h, conf, key) { 3 | const list = [] 4 | conf.__slot__.options.forEach(item => { 5 | if (conf.__config__.optionType === 'button') { 6 | list.push({item.label}) 7 | } else { 8 | list.push({item.label}) 9 | } 10 | }) 11 | return list 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/common/contant/ServiceNameConstants.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.common.contant; 2 | 3 | /** 4 | * @Author: 土豆仙 5 | * @Date: 2021/6/23 15:38 6 | * @Description: 服务名称 7 | */ 8 | public class ServiceNameConstants 9 | { 10 | 11 | /** 12 | * 系统模块的serviceid 13 | */ 14 | public static final String SYSTEM_SERVICE = "process-system"; 15 | 16 | public static final String AUTH_SERVICE = "process-auth"; 17 | 18 | } 19 | -------------------------------------------------------------------------------- /workflow-form/src/main/java/com/workflow/form/center/mapper/WorkFlowFormModelInfoMapper.java: -------------------------------------------------------------------------------- 1 | package com.workflow.form.center.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.workflow.form.center.domain.entity.WorkFlowFormModelInfo; 5 | 6 | /** 7 | * 表单模型信息表(WorkFlowFormModelInfo)表数据库访问层 8 | * 9 | * @author 土豆仙 10 | * @since 2021-07-29 10:55:18 11 | */ 12 | public interface WorkFlowFormModelInfoMapper extends BaseMapper { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /workflow-ui/src/components/Process/common/mixinXcrud.js: -------------------------------------------------------------------------------- 1 | import xcrud from 'xcrud' 2 | import golbalConfig from 'xcrud/package/common/config' 3 | golbalConfig.set({ 4 | input: { 5 | // size: 'mini' 6 | }, 7 | select: { 8 | // size: 'mini' 9 | }, 10 | colorPicker: { 11 | showAlpha: true 12 | }, 13 | xform: { 14 | form: { 15 | labelWidth: 'auto' 16 | // size: 'mini' 17 | } 18 | } 19 | }) 20 | export default { 21 | components: { xForm: xcrud.xForm } 22 | } 23 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/mapper/WorkFlowServiceGuideMapper.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.workflow.process.center.domain.entity.WorkFlowServiceGuide; 5 | 6 | /** 7 | * 服务指南配置(WorkFlowServiceGuide)表数据库访问层 8 | * 9 | * @author 土豆仙 10 | * @since 2021-07-03 09:34:58 11 | */ 12 | public interface WorkFlowServiceGuideMapper extends BaseMapper { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /workflow-form/src/main/java/com/workflow/form/center/service/WorkFlowFormModelInfoService.java: -------------------------------------------------------------------------------- 1 | package com.workflow.form.center.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.workflow.form.center.domain.entity.WorkFlowFormModelInfo; 5 | 6 | /** 7 | * 表单模型信息表(WorkFlowFormModelInfo)表服务接口 8 | * 9 | * @author 土豆仙 10 | * @since 2021-07-29 10:55:18 11 | */ 12 | public interface WorkFlowFormModelInfoService extends IService { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /workflow-ui/README.md: -------------------------------------------------------------------------------- 1 | ## 开发 2 | 3 | ```bash 4 | # 克隆项目 5 | git clone https://gitee.com/y_project/workflow-Vue 6 | 7 | # 进入项目目录 8 | cd workflow-ui 9 | 10 | # 安装依赖 11 | npm install 12 | 13 | # 建议不要直接使用 cnpm 安装依赖,会有各种诡异的 bug。可以通过如下操作解决 npm 下载速度慢的问题 14 | npm install --registry=https://registry.npm.taobao.org 15 | 16 | # 启动服务 17 | npm run dev 18 | ``` 19 | 20 | 浏览器访问 http://localhost:80 21 | 22 | ## 发布 23 | 24 | ```bash 25 | # 构建测试环境 26 | npm run build:stage 27 | 28 | # 构建生产环境 29 | npm run build:prod 30 | ``` -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/mapper/WorkFlowListenerParamMapper.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.workflow.process.center.domain.entity.WorkFlowListenerParam; 5 | 6 | /** 7 | * 流程监听器(WorkFlowListenerParam)表数据库访问层 8 | * 9 | * @author 土豆仙 10 | * @since 2021-08-23 15:16:00 11 | */ 12 | public interface WorkFlowListenerParamMapper extends BaseMapper { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/service/WorkFlowListenerParamService.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.workflow.process.center.domain.entity.WorkFlowListenerParam; 5 | 6 | /** 7 | * 流程监听器(WorkFlowListenerParam)表服务接口 8 | * 9 | * @author 土豆仙 10 | * @since 2021-08-23 15:16:00 11 | */ 12 | public interface WorkFlowListenerParamService extends IService { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/service/WorkFlowRoleService.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.service; 2 | 3 | import com.workflow.process.center.api.domain.WorkFlowDeptDTO; 4 | import com.workflow.process.center.api.domain.WorkFlowRoleDTO; 5 | import com.workflow.process.center.common.ResultBean; 6 | 7 | import java.util.List; 8 | 9 | public interface WorkFlowRoleService { 10 | 11 | ResultBean> listRoles(WorkFlowRoleDTO workFlowRoleDTO); 12 | 13 | } 14 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/service/WorkFlowServiceGuideService.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.workflow.process.center.domain.entity.WorkFlowServiceGuide; 5 | 6 | /** 7 | * 服务指南配置(WorkFlowServiceGuide)表服务接口 8 | * 9 | * @author 土豆仙 10 | * @since 2021-07-03 09:34:58 11 | */ 12 | public interface WorkFlowServiceGuideService extends IService { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /workflow-common/src/main/java/com/workflow/common/annotation/Excels.java: -------------------------------------------------------------------------------- 1 | package com.workflow.common.annotation; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | /** 9 | * Excel注解集 10 | * 11 | * @author workflow 12 | */ 13 | @Target(ElementType.FIELD) 14 | @Retention(RetentionPolicy.RUNTIME) 15 | public @interface Excels 16 | { 17 | public Excel[] value(); 18 | } 19 | -------------------------------------------------------------------------------- /workflow-common/src/main/java/com/workflow/common/exception/user/UserException.java: -------------------------------------------------------------------------------- 1 | package com.workflow.common.exception.user; 2 | 3 | import com.workflow.common.exception.base.BaseException; 4 | 5 | /** 6 | * 用户信息异常类 7 | * 8 | * @author workflow 9 | */ 10 | public class UserException extends BaseException 11 | { 12 | private static final long serialVersionUID = 1L; 13 | 14 | public UserException(String code, Object[] args) 15 | { 16 | super("user", code, args, null); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /workflow-process-common/workflow-process-idm-pojo/src/main/java/com/workflow/process/center/api/domain/LoginDTO.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.api.domain; 2 | 3 | import lombok.Data; 4 | 5 | import javax.validation.constraints.NotBlank; 6 | import java.io.Serializable; 7 | 8 | @Data 9 | public class LoginDTO implements Serializable { 10 | 11 | @NotBlank(message = "账号不能为空!") 12 | private String username; 13 | 14 | @NotBlank(message = "密码不能为空!") 15 | private String password; 16 | } 17 | -------------------------------------------------------------------------------- /workflow-ui/src/components/render/slots/el-checkbox-group.js: -------------------------------------------------------------------------------- 1 | export default { 2 | options(h, conf, key) { 3 | const list = [] 4 | conf.__slot__.options.forEach(item => { 5 | if (conf.__config__.optionType === 'button') { 6 | list.push({item.label}) 7 | } else { 8 | list.push({item.label}) 9 | } 10 | }) 11 | return list 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/mapper/WorkFlowServiceCollectMapper.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.workflow.process.center.domain.entity.WorkFlowServiceCollect; 5 | 6 | /** 7 | * 服务收藏表(WorkFlowServiceCollect)表数据库访问层 8 | * 9 | * @author 土豆仙 10 | * @since 2021-07-03 09:34:31 11 | */ 12 | public interface WorkFlowServiceCollectMapper extends BaseMapper { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/service/WorkFlowServiceCollectService.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.workflow.process.center.domain.entity.WorkFlowServiceCollect; 5 | 6 | /** 7 | * 服务收藏表(WorkFlowServiceCollect)表服务接口 8 | * 9 | * @author 土豆仙 10 | * @since 2021-07-03 09:34:31 11 | */ 12 | public interface WorkFlowServiceCollectService extends IService { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/service/IDynamDubbo.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.service; 2 | 3 | import java.util.Map; 4 | 5 | public interface IDynamDubbo { 6 | 7 | public Object invoke(String clazzName, String method, String version, String parameter); 8 | 9 | public Object invoke(String clazzName, String method, String version, Map parameter); 10 | 11 | public Object invoke(String clazzName, String method, String version, String[] parameters); 12 | } 13 | -------------------------------------------------------------------------------- /workflow-common/src/main/java/com/workflow/common/exception/file/FileException.java: -------------------------------------------------------------------------------- 1 | package com.workflow.common.exception.file; 2 | 3 | import com.workflow.common.exception.base.BaseException; 4 | 5 | /** 6 | * 文件信息异常类 7 | * 8 | * @author workflow 9 | */ 10 | public class FileException extends BaseException 11 | { 12 | private static final long serialVersionUID = 1L; 13 | 14 | public FileException(String code, Object[] args) 15 | { 16 | super("file", code, args, null); 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /workflow-ui/src/App.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | -------------------------------------------------------------------------------- /workflow-ui/src/assets/icons/svg/example.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /workflow-common/src/main/java/com/workflow/common/exception/file/FileSizeLimitExceededException.java: -------------------------------------------------------------------------------- 1 | package com.workflow.common.exception.file; 2 | 3 | /** 4 | * 文件名大小限制异常类 5 | * 6 | * @author workflow 7 | */ 8 | public class FileSizeLimitExceededException extends FileException 9 | { 10 | private static final long serialVersionUID = 1L; 11 | 12 | public FileSizeLimitExceededException(long defaultMaxSize) 13 | { 14 | super("upload.exceed.maxSize", new Object[] { defaultMaxSize }); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/mapper/WorkFlowModelReFormMapper.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.workflow.process.center.domain.entity.WorkFlowModelReForm; 5 | 6 | /** 7 | * 流程模型关联表单(先只控制到表级读写权限=》后期再扩展到表内字段的读写权限)(WorkFlowModelReForm)表数据库访问层 8 | * 9 | * @author 土豆仙 10 | * @since 2021-07-29 09:59:10 11 | */ 12 | public interface WorkFlowModelReFormMapper extends BaseMapper { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/service/WorkFlowFormDataService.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.service; 2 | 3 | import com.workflow.process.center.domain.mongo.MongoWorkFlowFormData; 4 | 5 | import java.util.Map; 6 | 7 | public interface WorkFlowFormDataService { 8 | 9 | MongoWorkFlowFormData getStartFormData(String processDefId); 10 | 11 | MongoWorkFlowFormData getTaskFormData(String taskId); 12 | 13 | MongoWorkFlowFormData getCompletedTaskFormData(String taskId); 14 | 15 | } 16 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/service/WorkFlowModelReFormService.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.workflow.process.center.domain.entity.WorkFlowModelReForm; 5 | 6 | /** 7 | * 流程模型关联表单(先只控制到表级读写权限=》后期再扩展到表内字段的读写权限)(WorkFlowModelReForm)表服务接口 8 | * 9 | * @author 土豆仙 10 | * @since 2021-07-29 09:59:11 11 | */ 12 | public interface WorkFlowModelReFormService extends IService { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /workflow-ui/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | // https://github.com/vuejs/vue-cli/tree/master/packages/@vue/babel-preset-app 4 | '@vue/cli-plugin-babel/preset' 5 | ], 6 | 'env': { 7 | 'development': { 8 | // babel-plugin-dynamic-import-node plugin only does one thing by converting all import() to require(). 9 | // This plugin can significantly increase the speed of hot updates, when you have a large number of pages. 10 | 'plugins': ['dynamic-import-node'] 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /workflow-ui/src/components/package/index.js: -------------------------------------------------------------------------------- 1 | import MyProcessDesigner from "./process-designer"; 2 | import MyProcessPenal from "./refactor"; 3 | 4 | const components = [MyProcessDesigner, MyProcessPenal]; 5 | 6 | const install = function(Vue) { 7 | components.forEach(component => { 8 | Vue.component(component.name, component); 9 | }); 10 | }; 11 | 12 | if (typeof window !== "undefined" && window.Vue) { 13 | install(window.Vue); 14 | } 15 | 16 | export default { 17 | version: "0.0.1", 18 | install, 19 | ...components 20 | }; 21 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/mapper/WorkFlowExtendHisprocinstMapper.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.workflow.process.center.domain.entity.WorkFlowExtendHisprocinst; 5 | 6 | /** 7 | * 流程引擎扩展表-主要记录流程实例运行状态(WorkFlowExtendHisprocinst)表数据库访问层 8 | * 9 | * @author 土豆仙 10 | * @since 2021-07-12 14:07:37 11 | */ 12 | public interface WorkFlowExtendHisprocinstMapper extends BaseMapper { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/mapper/WorkFlowServiceRelCategoryMapper.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.workflow.process.center.domain.entity.WorkFlowServiceRelCategory; 5 | 6 | /** 7 | * 服务与服务分类关联表-服务可以配置在多个分类下(WorkFlowServiceRelCategory)表数据库访问层 8 | * 9 | * @author 土豆仙 10 | * @since 2021-07-03 09:35:23 11 | */ 12 | public interface WorkFlowServiceRelCategoryMapper extends BaseMapper { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /workflow-quartz/src/main/java/com/workflow/quartz/util/QuartzJobExecution.java: -------------------------------------------------------------------------------- 1 | package com.workflow.quartz.util; 2 | 3 | import org.quartz.JobExecutionContext; 4 | import com.workflow.quartz.domain.entity.SysJob; 5 | 6 | /** 7 | * 定时任务处理(允许并发执行) 8 | * 9 | * @author workflow 10 | * 11 | */ 12 | public class QuartzJobExecution extends AbstractQuartzJob 13 | { 14 | @Override 15 | protected void doExecute(JobExecutionContext context, SysJob sysJob) throws Exception 16 | { 17 | JobInvokeUtil.invokeMethod(sysJob); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/service/WorkFlowModelInfoService.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.workflow.process.center.domain.entity.WorkFlowModelInfo; 5 | 6 | /** 7 | * (WorkFlowModelInfo)表服务接口 8 | * 9 | * @author 土豆仙 10 | * @since 2021-06-26 22:25:20 11 | */ 12 | public interface WorkFlowModelInfoService extends IService { 13 | 14 | void insertOrUpdate(WorkFlowModelInfo workFlowModelInfo); 15 | } 16 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/service/WorkFlowServiceRelCategoryService.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.workflow.process.center.domain.entity.WorkFlowServiceRelCategory; 5 | 6 | /** 7 | * 服务与服务分类关联表-服务可以配置在多个分类下(WorkFlowServiceRelCategory)表服务接口 8 | * 9 | * @author 土豆仙 10 | * @since 2021-07-03 09:35:24 11 | */ 12 | public interface WorkFlowServiceRelCategoryService extends IService { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/mapper/WorkFlowModelReFormReActivityMapper.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.workflow.process.center.domain.entity.WorkFlowModelReFormReActivity; 5 | 6 | /** 7 | * 节点对流程模型关联的表单的权限(WorkFlowModelReFormReActivity)表数据库访问层 8 | * 9 | * @author 土豆仙 10 | * @since 2021-07-29 09:59:36 11 | */ 12 | public interface WorkFlowModelReFormReActivityMapper extends BaseMapper { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/service/WorkFlowModelReFormReActivityService.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.workflow.process.center.domain.entity.WorkFlowModelReFormReActivity; 5 | 6 | /** 7 | * 节点对流程模型关联的表单的权限(WorkFlowModelReFormReActivity)表服务接口 8 | * 9 | * @author 土豆仙 10 | * @since 2021-07-29 09:59:36 11 | */ 12 | public interface WorkFlowModelReFormReActivityService extends IService { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /workflow-common/src/main/java/com/workflow/common/exception/file/FileNameLengthLimitExceededException.java: -------------------------------------------------------------------------------- 1 | package com.workflow.common.exception.file; 2 | 3 | /** 4 | * 文件名称超长限制异常类 5 | * 6 | * @author workflow 7 | */ 8 | public class FileNameLengthLimitExceededException extends FileException 9 | { 10 | private static final long serialVersionUID = 1L; 11 | 12 | public FileNameLengthLimitExceededException(int defaultFileNameLength) 13 | { 14 | super("upload.filename.exceed.length", new Object[] { defaultFileNameLength }); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /workflow-ui/src/views/tool/build/App.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 23 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/service/WorkFlowListenerService.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.workflow.process.center.domain.entity.WorkFlowListener; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * 流程监听器(WorkFlowListener)表服务接口 10 | * 11 | * @author 土豆仙 12 | * @since 2021-08-23 15:15:26 13 | */ 14 | public interface WorkFlowListenerService extends IService { 15 | 16 | boolean deleteByIds(List idList); 17 | } 18 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/annotation/DistributedLock.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.annotation; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | @Retention(RetentionPolicy.RUNTIME) 9 | @Target(ElementType.METHOD) 10 | public @interface DistributedLock { 11 | 12 | /** 13 | * 当前锁的:自动过期时间 (单位:秒)默认值:1s 14 | * 15 | * @return 16 | */ 17 | long releaseTime() default 5; 18 | } 19 | -------------------------------------------------------------------------------- /workflow-ui/src/icons/svg/slider.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/domain/dto/WorkFlowGroupUserDTO.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.domain.dto; 2 | 3 | import com.workflow.process.center.api.domain.WorkFlowUserDTO; 4 | import lombok.Data; 5 | 6 | import java.util.List; 7 | 8 | @Data 9 | public class WorkFlowGroupUserDTO { 10 | 11 | //组类型=》角色、部门、区域 12 | private String groupType; 13 | 14 | //组名称 15 | private String groupName; 16 | 17 | //组key 18 | private String groupKey; 19 | 20 | //对应用户集合 21 | private List workFlowUserDTOS; 22 | } 23 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/mapper/WorkFlowServiceMapper.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.workflow.process.center.domain.entity.WorkFlowService; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * 服务表(WorkFlowService)表数据库访问层 10 | * 11 | * @author 土豆仙 12 | * @since 2021-07-03 09:18:06 13 | */ 14 | public interface WorkFlowServiceMapper extends BaseMapper { 15 | 16 | List listAll(WorkFlowService workFlowService); 17 | } 18 | -------------------------------------------------------------------------------- /workflow-ui/src/assets/icons/svg/slider.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /workflow-ui/src/assets/icons/svg/star.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /workflow-ui/src/utils/generator/css.js: -------------------------------------------------------------------------------- 1 | const styles = { 2 | 'el-rate': '.el-rate{display: inline-block; vertical-align: text-top;}', 3 | 'el-upload': '.el-upload__tip{line-height: 1.2;}' 4 | } 5 | 6 | function addCss(cssList, el) { 7 | const css = styles[el.tag] 8 | css && cssList.indexOf(css) === -1 && cssList.push(css) 9 | if (el.children) { 10 | el.children.forEach(el2 => addCss(cssList, el2)) 11 | } 12 | } 13 | 14 | export function makeUpCss(conf) { 15 | const cssList = [] 16 | conf.fields.forEach(el => addCss(cssList, el)) 17 | return cssList.join('\n') 18 | } 19 | -------------------------------------------------------------------------------- /workflow-idm-api/src/main/java/com/workflow/process/center/api/AreaService.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.api; 2 | 3 | import com.workflow.process.center.api.domain.WorkFlowAreaDTO; 4 | import com.workflow.process.center.common.ResultBean; 5 | 6 | import java.util.List; 7 | 8 | public interface AreaService { 9 | 10 | /** 11 | * 获取区域列表 12 | */ 13 | public ResultBean> listAreas(WorkFlowAreaDTO workFlowAreaDTO); 14 | 15 | /** 16 | * 根据区域key获取部门信息 17 | */ 18 | ResultBean queryGroupByKey(String areaKey); 19 | } 20 | -------------------------------------------------------------------------------- /workflow-idm-api/src/main/java/com/workflow/process/center/api/DeptService.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.api; 2 | 3 | import com.workflow.process.center.api.domain.WorkFlowDeptDTO; 4 | import com.workflow.process.center.common.ResultBean; 5 | 6 | import java.util.List; 7 | 8 | public interface DeptService { 9 | 10 | /** 11 | * 获取部门列表 12 | */ 13 | public ResultBean> listDepts(WorkFlowDeptDTO workFlowDeptDTO); 14 | 15 | /** 16 | * 根据部门key获取部门信息 17 | */ 18 | ResultBean queryGroupByKey(String deptKey); 19 | } 20 | -------------------------------------------------------------------------------- /workflow-admin/src/main/java/com/workflow/WorkflowServletInitializer.java: -------------------------------------------------------------------------------- 1 | package com.workflow; 2 | 3 | import org.springframework.boot.builder.SpringApplicationBuilder; 4 | import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; 5 | 6 | /** 7 | * web容器中进行部署 8 | * 9 | * @author workflow 10 | */ 11 | public class WorkflowServletInitializer extends SpringBootServletInitializer { 12 | @Override 13 | protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { 14 | return application.sources(WorkflowApplication.class); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /workflow-idm-api/src/main/java/com/workflow/process/center/api/RoleService.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.api; 2 | 3 | import com.workflow.process.center.api.domain.WorkFlowRoleDTO; 4 | import com.workflow.process.center.common.ResultBean; 5 | 6 | import java.util.List; 7 | 8 | public interface RoleService { 9 | 10 | /** 11 | * 获取角色列表 12 | */ 13 | public ResultBean> listRoles(WorkFlowRoleDTO workFlowRoleDTO); 14 | 15 | /** 16 | * 根据角色key获取角色名 17 | */ 18 | public ResultBean queryGroupByKey(String roleKey); 19 | 20 | } 21 | -------------------------------------------------------------------------------- /workflow-ui/src/views/processCore/processConfig/processTenant/dict.js: -------------------------------------------------------------------------------- 1 | export default { 2 | computed: { 3 | dict() { 4 | return { 5 | // 是否上线 6 | systemListener: [ 7 | { 8 | label: '上线', 9 | value: 0 10 | }, 11 | { 12 | label: '下线', 13 | value: 1 14 | } 15 | ], 16 | } 17 | } 18 | }, 19 | methods: { 20 | 21 | formatterStatus(row, column, cellValue) { 22 | return this.dict.systemListener.find(item => item.value === cellValue)?.label ?? '' 23 | }, 24 | }, 25 | } 26 | -------------------------------------------------------------------------------- /workflow-ui/src/assets/icons/svg/search.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /workflow-ui/src/assets/icons/svg/table.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /workflow-ui/src/components/render/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "form-gen-render", 3 | "version": "1.0.4", 4 | "description": "表单核心render", 5 | "main": "lib/form-gen-render.umd.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "repository": { 10 | "type": "git", 11 | "url": "git+https://github.com/JakHuang/form-generator.git" 12 | }, 13 | "author": "jakhuang", 14 | "license": "MIT", 15 | "bugs": { 16 | "url": "https://github.com/JakHuang/form-generator/issues" 17 | }, 18 | "homepage": "https://github.com/JakHuang/form-generator#readme" 19 | } 20 | -------------------------------------------------------------------------------- /workflow-center-api/src/main/java/com/workflow/process/center/domain/dto/task/CompleteTaskDTO.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.domain.dto.task; 2 | 3 | import io.swagger.annotations.ApiModel; 4 | import lombok.Data; 5 | import lombok.EqualsAndHashCode; 6 | 7 | import java.util.Map; 8 | 9 | /** 10 | * @Author: 土豆仙 11 | * @Date: 2021/6/28 17:49 12 | * @Description: 审批完成 13 | */ 14 | @EqualsAndHashCode(callSuper = true) 15 | @Data 16 | @ApiModel("审批完成参数") 17 | public class CompleteTaskDTO extends BaseTaskDTO { 18 | /** 19 | * 任务参数 选填 20 | */ 21 | private Map variables; 22 | } 23 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/service/WorkFlowModelService.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.workflow.process.center.domain.entity.WorkFlowModel; 5 | import org.flowable.bpmn.model.BpmnModel; 6 | import org.flowable.engine.repository.Model; 7 | 8 | /** 9 | * 流程模型信息(WorkFlowModel)表服务接口 10 | * 11 | * @author 土豆仙 12 | * @since 2021-08-26 14:17:52 13 | */ 14 | public interface WorkFlowModelService extends IService { 15 | 16 | 17 | BpmnModel getBpmnModel(String modelId); 18 | } 19 | -------------------------------------------------------------------------------- /workflow-form/.gitignore: -------------------------------------------------------------------------------- 1 | README.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 | 32 | ### VS Code ### 33 | .vscode/ 34 | 35 | mvnw.cmd 36 | .mvn 37 | 38 | logs 39 | mvn 40 | 41 | -------------------------------------------------------------------------------- /workflow-ui/src/views/workBench/done/dict.js: -------------------------------------------------------------------------------- 1 | export default { 2 | computed: { 3 | dict() { 4 | return { 5 | tenant: this.$store.state.dict.tenant, 6 | category: this.$store.state.dict.category, 7 | todoUsers: this.$store.state.dict.todoUsers 8 | } 9 | } 10 | }, 11 | methods: { 12 | formatterFlowStatus(row, column, cellValue) { 13 | return this.dict.flowStatus.find(item => item.value === cellValue).name 14 | }, 15 | formatterTenant(row, column, cellValue) { 16 | return this.dict.tenant.find(item => item.value === cellValue).name 17 | }, 18 | }, 19 | } -------------------------------------------------------------------------------- /workflow-ui/src/views/workBench/group/dict.js: -------------------------------------------------------------------------------- 1 | export default { 2 | computed: { 3 | dict() { 4 | return { 5 | tenant: this.$store.state.dict.tenant, 6 | category: this.$store.state.dict.category, 7 | todoUsers: this.$store.state.dict.todoUsers 8 | } 9 | } 10 | }, 11 | methods: { 12 | formatterFlowStatus(row, column, cellValue) { 13 | return this.dict.flowStatus.find(item => item.value === cellValue).name 14 | }, 15 | formatterTenant(row, column, cellValue) { 16 | return this.dict.tenant.find(item => item.value === cellValue).name 17 | }, 18 | }, 19 | } -------------------------------------------------------------------------------- /workflow-ui/src/views/workBench/overTime/dict.js: -------------------------------------------------------------------------------- 1 | export default { 2 | computed: { 3 | dict() { 4 | return { 5 | tenant: this.$store.state.dict.tenant, 6 | category: this.$store.state.dict.category, 7 | todoUsers: this.$store.state.dict.todoUsers 8 | } 9 | } 10 | }, 11 | methods: { 12 | formatterFlowStatus(row, column, cellValue) { 13 | return this.dict.flowStatus.find(item => item.value === cellValue).name 14 | }, 15 | formatterTenant(row, column, cellValue) { 16 | return this.dict.tenant.find(item => item.value === cellValue).name 17 | }, 18 | }, 19 | } -------------------------------------------------------------------------------- /workflow-ui/src/views/workBench/sent/dict.js: -------------------------------------------------------------------------------- 1 | export default { 2 | computed: { 3 | dict() { 4 | return { 5 | tenant: this.$store.state.dict.tenant, 6 | category: this.$store.state.dict.category, 7 | todoUsers: this.$store.state.dict.todoUsers 8 | } 9 | } 10 | }, 11 | methods: { 12 | formatterFlowStatus(row, column, cellValue) { 13 | return this.dict.flowStatus.find(item => item.value === cellValue).name 14 | }, 15 | formatterTenant(row, column, cellValue) { 16 | return this.dict.tenant.find(item => item.value === cellValue).name 17 | }, 18 | }, 19 | } -------------------------------------------------------------------------------- /workflow-ui/src/views/workBench/todo/dict.js: -------------------------------------------------------------------------------- 1 | export default { 2 | computed: { 3 | dict() { 4 | return { 5 | tenant: this.$store.state.dict.tenant, 6 | category: this.$store.state.dict.category, 7 | todoUsers: this.$store.state.dict.todoUsers 8 | } 9 | } 10 | }, 11 | methods: { 12 | formatterFlowStatus(row, column, cellValue) { 13 | return this.dict.flowStatus.find(item => item.value === cellValue).name 14 | }, 15 | formatterTenant(row, column, cellValue) { 16 | return this.dict.tenant.find(item => item.value === cellValue).name 17 | }, 18 | }, 19 | } -------------------------------------------------------------------------------- /workflow-common/src/main/java/com/workflow/common/annotation/RepeatSubmit.java: -------------------------------------------------------------------------------- 1 | package com.workflow.common.annotation; 2 | 3 | import java.lang.annotation.Documented; 4 | import java.lang.annotation.ElementType; 5 | import java.lang.annotation.Inherited; 6 | import java.lang.annotation.Retention; 7 | import java.lang.annotation.RetentionPolicy; 8 | import java.lang.annotation.Target; 9 | 10 | /** 11 | * 自定义注解防止表单重复提交 12 | * 13 | * @author workflow 14 | * 15 | */ 16 | @Inherited 17 | @Target(ElementType.METHOD) 18 | @Retention(RetentionPolicy.RUNTIME) 19 | @Documented 20 | public @interface RepeatSubmit 21 | { 22 | 23 | } 24 | -------------------------------------------------------------------------------- /workflow-center/.gitignore: -------------------------------------------------------------------------------- 1 | target/ 2 | !.mvn/wrapper/maven-wrapper.jar 3 | !**/src/main/**/target/ 4 | !**/src/test/**/target/ 5 | 6 | ### STS ### 7 | .apt_generated 8 | .classpath 9 | .factorypath 10 | .project 11 | .settings 12 | .springBeans 13 | .sts4-cache 14 | 15 | ### IntelliJ IDEA ### 16 | .idea 17 | *.iws 18 | *.iml 19 | *.ipr 20 | *.mvnw 21 | *.mvnw.cmd 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 | 32 | ### VS Code ### 33 | .vscode/ 34 | 35 | 36 | *.mvnw 37 | *.mvnw.cmd 38 | 39 | ###日志 40 | logs/ -------------------------------------------------------------------------------- /workflow-idm-api/.gitignore: -------------------------------------------------------------------------------- 1 | target/ 2 | !.mvn/wrapper/maven-wrapper.jar 3 | !**/src/main/**/target/ 4 | !**/src/test/**/target/ 5 | 6 | ### STS ### 7 | .apt_generated 8 | .classpath 9 | .factorypath 10 | .project 11 | .settings 12 | .springBeans 13 | .sts4-cache 14 | 15 | ### IntelliJ IDEA ### 16 | .idea 17 | *.iws 18 | *.iml 19 | *.ipr 20 | *.mvnw 21 | *.mvnw.cmd 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 | 32 | ### VS Code ### 33 | .vscode/ 34 | 35 | 36 | *.mvnw 37 | *.mvnw.cmd 38 | 39 | ###日志 40 | logs/ -------------------------------------------------------------------------------- /workflow-ui/src/components/render/slots/el-upload.js: -------------------------------------------------------------------------------- 1 | export default { 2 | 'list-type': (h, conf, key) => { 3 | const list = [] 4 | const config = conf.__config__ 5 | if (conf['list-type'] === 'picture-card') { 6 | list.push() 7 | } else { 8 | list.push({config.buttonText}) 9 | } 10 | if (config.showTip) { 11 | list.push( 12 |
只能上传不超过 {config.fileSize}{config.sizeUnit} 的{conf.accept}文件
13 | ) 14 | } 15 | return list 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /workflow-ui/src/views/workBench/homePage/DoneMission/dict.js: -------------------------------------------------------------------------------- 1 | export default { 2 | computed: { 3 | dict() { 4 | return { 5 | tenant: this.$store.state.dict.tenant, 6 | category: this.$store.state.dict.category, 7 | todoUsers: this.$store.state.dict.todoUsers 8 | } 9 | } 10 | }, 11 | methods: { 12 | formatterFlowStatus(row, column, cellValue) { 13 | return this.dict.flowStatus.find(item => item.value === cellValue).name 14 | }, 15 | formatterTenant(row, column, cellValue) { 16 | return this.dict.tenant.find(item => item.value === cellValue).name 17 | }, 18 | }, 19 | } -------------------------------------------------------------------------------- /workflow-ui/src/views/workBench/homePage/GroupMission/dict.js: -------------------------------------------------------------------------------- 1 | export default { 2 | computed: { 3 | dict() { 4 | return { 5 | tenant: this.$store.state.dict.tenant, 6 | category: this.$store.state.dict.category, 7 | todoUsers: this.$store.state.dict.todoUsers 8 | } 9 | } 10 | }, 11 | methods: { 12 | formatterFlowStatus(row, column, cellValue) { 13 | return this.dict.flowStatus.find(item => item.value === cellValue).name 14 | }, 15 | formatterTenant(row, column, cellValue) { 16 | return this.dict.tenant.find(item => item.value === cellValue).name 17 | }, 18 | }, 19 | } -------------------------------------------------------------------------------- /workflow-ui/src/views/workBench/homePage/SentMission/dict.js: -------------------------------------------------------------------------------- 1 | export default { 2 | computed: { 3 | dict() { 4 | return { 5 | tenant: this.$store.state.dict.tenant, 6 | category: this.$store.state.dict.category, 7 | todoUsers: this.$store.state.dict.todoUsers 8 | } 9 | } 10 | }, 11 | methods: { 12 | formatterFlowStatus(row, column, cellValue) { 13 | return this.dict.flowStatus.find(item => item.value === cellValue).name 14 | }, 15 | formatterTenant(row, column, cellValue) { 16 | return this.dict.tenant.find(item => item.value === cellValue).name 17 | }, 18 | }, 19 | } -------------------------------------------------------------------------------- /workflow-ui/src/layout/components/Sidebar/Item.vue: -------------------------------------------------------------------------------- 1 | 30 | -------------------------------------------------------------------------------- /workflow-ui/src/views/workBench/homePage/PersonalMission/dict.js: -------------------------------------------------------------------------------- 1 | export default { 2 | computed: { 3 | dict() { 4 | return { 5 | tenant: this.$store.state.dict.tenant, 6 | category: this.$store.state.dict.category, 7 | todoUsers: this.$store.state.dict.todoUsers 8 | } 9 | } 10 | }, 11 | methods: { 12 | formatterFlowStatus(row, column, cellValue) { 13 | return this.dict.flowStatus.find(item => item.value === cellValue).name 14 | }, 15 | formatterTenant(row, column, cellValue) { 16 | return this.dict.tenant.find(item => item.value === cellValue).name 17 | }, 18 | }, 19 | } -------------------------------------------------------------------------------- /workflow-ui/src/assets/icons/svg/education.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /workflow-ui/src/components/tinymce/example/Index.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 39 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/domain/dto/WorkFlowGroupPageUserDTO.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.domain.dto; 2 | 3 | import com.workflow.process.center.api.domain.WorkFlowUserDTO; 4 | import com.workflow.process.center.common.ResultBean; 5 | import lombok.Data; 6 | 7 | import java.util.List; 8 | 9 | @Data 10 | public class WorkFlowGroupPageUserDTO { 11 | 12 | //组类型=》角色、部门、区域 13 | private String groupType; 14 | 15 | //组名称 16 | private String groupName; 17 | 18 | //组key 19 | private String groupKey; 20 | 21 | //对应用户集合 22 | private ResultBean> resultBean; 23 | } 24 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/service/dubbo/BussinessServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.service.dubbo; 2 | 3 | import com.workflow.process.center.service.BussinessService; 4 | import org.springframework.stereotype.Component; 5 | 6 | import java.util.HashMap; 7 | import java.util.Map; 8 | 9 | @Component 10 | public class BussinessServiceImpl implements BussinessService { 11 | @Override 12 | public Map findByProcessInstanceId(String processInstanceId) { 13 | HashMap map = new HashMap<>(); 14 | map.put("days", 3); 15 | return map; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /workflow-common/src/main/java/com/workflow/common/enums/UserStatus.java: -------------------------------------------------------------------------------- 1 | package com.workflow.common.enums; 2 | 3 | /** 4 | * 用户状态 5 | * 6 | * @author workflow 7 | */ 8 | public enum UserStatus 9 | { 10 | OK("0", "正常"), DISABLE("1", "停用"), DELETED("2", "删除"); 11 | 12 | private final String code; 13 | private final String info; 14 | 15 | UserStatus(String code, String info) 16 | { 17 | this.code = code; 18 | this.info = info; 19 | } 20 | 21 | public String getCode() 22 | { 23 | return code; 24 | } 25 | 26 | public String getInfo() 27 | { 28 | return info; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /workflow-ui/src/components/Process/common/customTranslate.js: -------------------------------------------------------------------------------- 1 | import translations from '../lang/zh' 2 | 3 | export default function customTranslate(template, replacements) { 4 | replacements = replacements || {} 5 | 6 | // Translate 7 | template = translations[template] || template 8 | 9 | // Replace 10 | return template.replace(/{([^}]+)}/g, function(_, key) { 11 | var str = replacements[key] 12 | if ( 13 | translations[replacements[key]] !== null && 14 | translations[replacements[key]] !== 'undefined' 15 | ) { 16 | str = translations[replacements[key]] 17 | } 18 | return str || '{' + key + '}' 19 | }) 20 | } 21 | -------------------------------------------------------------------------------- /workflow-center-api/src/main/java/com/workflow/process/center/domain/dto/task/TurnTaskDTO.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.domain.dto.task; 2 | 3 | import io.swagger.annotations.ApiModel; 4 | import lombok.Data; 5 | import lombok.EqualsAndHashCode; 6 | 7 | import javax.validation.constraints.NotBlank; 8 | 9 | /** 10 | * @Author: 土豆仙 11 | * @Date: 2021/6/28 17:49 12 | * @Description: 转办 13 | */ 14 | @EqualsAndHashCode(callSuper = true) 15 | @Data 16 | @ApiModel("转办参数") 17 | public class TurnTaskDTO extends BaseTaskDTO { 18 | /** 19 | * 被转办人工号 必填 20 | */ 21 | @NotBlank(message = "请指明向谁转办!") 22 | private String turnToUserId; 23 | } 24 | -------------------------------------------------------------------------------- /workflow-common/src/main/java/com/workflow/common/exception/UtilException.java: -------------------------------------------------------------------------------- 1 | package com.workflow.common.exception; 2 | 3 | /** 4 | * 工具类异常 5 | * 6 | * @author workflow 7 | */ 8 | public class UtilException extends RuntimeException 9 | { 10 | private static final long serialVersionUID = 8247610319171014183L; 11 | 12 | public UtilException(Throwable e) 13 | { 14 | super(e.getMessage(), e); 15 | } 16 | 17 | public UtilException(String message) 18 | { 19 | super(message); 20 | } 21 | 22 | public UtilException(String message, Throwable throwable) 23 | { 24 | super(message, throwable); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /workflow-quartz/src/main/java/com/workflow/quartz/util/QuartzDisallowConcurrentExecution.java: -------------------------------------------------------------------------------- 1 | package com.workflow.quartz.util; 2 | 3 | import org.quartz.DisallowConcurrentExecution; 4 | import org.quartz.JobExecutionContext; 5 | import com.workflow.quartz.domain.entity.SysJob; 6 | 7 | /** 8 | * 定时任务处理(禁止并发执行) 9 | * 10 | * @author workflow 11 | * 12 | */ 13 | @DisallowConcurrentExecution 14 | public class QuartzDisallowConcurrentExecution extends AbstractQuartzJob 15 | { 16 | @Override 17 | protected void doExecute(JobExecutionContext context, SysJob sysJob) throws Exception 18 | { 19 | JobInvokeUtil.invokeMethod(sysJob); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /workflow-center-api/src/main/java/com/workflow/process/center/domain/dto/task/DelegateTaskDTO.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.domain.dto.task; 2 | 3 | import io.swagger.annotations.ApiModel; 4 | import lombok.Data; 5 | import lombok.EqualsAndHashCode; 6 | 7 | import javax.validation.constraints.NotBlank; 8 | 9 | /** 10 | * @Author: 土豆仙 11 | * @Date: 2021/6/28 17:53 12 | * @Description: 委派 13 | */ 14 | @EqualsAndHashCode(callSuper = true) 15 | @Data 16 | @ApiModel("委派参数") 17 | public class DelegateTaskDTO extends BaseTaskDTO{ 18 | /** 19 | * 委派人 20 | */ 21 | @NotBlank(message = "委派人Id不能为空!") 22 | private String delegateUserId; 23 | } 24 | -------------------------------------------------------------------------------- /workflow-ui/src/assets/icons/svg/tab.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /workflow-ui/src/plugins/highlight/index.js: -------------------------------------------------------------------------------- 1 | const hljs = require("highlight.js/lib/core"); 2 | hljs.registerLanguage("xml", require("highlight.js/lib/languages/xml")); 3 | hljs.registerLanguage("json", require("highlight.js/lib/languages/json")); 4 | hljs.registerLanguage("java", require("highlight.js/lib/languages/java")); 5 | hljs.registerLanguage("html", require("highlight.js/lib/languages/xml")); 6 | hljs.registerLanguage("vue", require("highlight.js/lib/languages/xml")); 7 | hljs.registerLanguage("javascript", require("highlight.js/lib/languages/javascript")); 8 | hljs.registerLanguage("sql", require("highlight.js/lib/languages/sql")); 9 | 10 | module.exports = hljs; 11 | -------------------------------------------------------------------------------- /workflow-ui/src/views/processCore/processMeta/task/record/flow.vue: -------------------------------------------------------------------------------- 1 | 11 | 33 | -------------------------------------------------------------------------------- /workflow-ui/src/utils/pluginsConfig.js: -------------------------------------------------------------------------------- 1 | const CDN = 'https://lib.baomitu.com/' // CDN Homepage: https://cdn.baomitu.com/ 2 | const publicPath = process.env.BASE_URL 3 | 4 | function splicingPluginUrl(PluginName, version, fileName) { 5 | return `${CDN}${PluginName}/${version}/${fileName}` 6 | } 7 | 8 | export default { 9 | beautifierUrl: splicingPluginUrl('js-beautify', '1.13.5', 'beautifier.min.js'), 10 | // monacoEditorUrl: splicingPluginUrl('monaco-editor', '0.19.3', 'min/vs'), // 使用 monaco-editor CDN 链接 11 | monacoEditorUrl: `${publicPath}libs/monaco-editor/vs`, // 使用 monaco-editor 本地代码 12 | tinymceUrl: splicingPluginUrl('tinymce', '5.7.0', 'tinymce.min.js') 13 | } 14 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/service/WorkFlowServiceService.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.workflow.process.center.domain.entity.WorkFlowService; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * 服务表(WorkFlowService)表服务接口 10 | * 11 | * @author 土豆仙 12 | * @since 2021-07-03 09:18:06 13 | */ 14 | public interface WorkFlowServiceService extends IService { 15 | 16 | List listAllServiceUnderCategory(WorkFlowService workFlowService); 17 | 18 | List listAll(WorkFlowService workFlowService); 19 | } 20 | -------------------------------------------------------------------------------- /workflow-center-api/src/main/java/com/workflow/process/center/domain/dto/task/BackTaskDTO.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.domain.dto.task; 2 | 3 | import io.swagger.annotations.ApiModel; 4 | import lombok.Data; 5 | import lombok.EqualsAndHashCode; 6 | 7 | import javax.validation.constraints.NotBlank; 8 | 9 | /** 10 | * @Author: 土豆仙 11 | * @Date: 2021/6/28 17:55 12 | * @Description: 指定驳回 13 | */ 14 | @EqualsAndHashCode(callSuper = true) 15 | @Data 16 | @ApiModel("指定驳回参数") 17 | public class BackTaskDTO extends BaseTaskDTO { 18 | 19 | /** 20 | * 需要驳回的节点id 必填 21 | */ 22 | @NotBlank(message = "需要驳回的节点id不能为空!") 23 | private String distFlowElementId; 24 | } 25 | -------------------------------------------------------------------------------- /workflow-ui/src/assets/icons/svg/message.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /workflow-ui/src/store/index.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import Vuex from 'vuex' 3 | import app from './modules/app' 4 | import user from './modules/user' 5 | import dict from './modules/dict' 6 | import tagsView from './modules/tagsView' 7 | import permission from './modules/permission' 8 | import settings from './modules/settings' 9 | import getters from './getters' 10 | import modelSelect from './modules/modelSelect' 11 | 12 | Vue.use(Vuex) 13 | 14 | const store = new Vuex.Store({ 15 | modules: { 16 | app, 17 | user, 18 | tagsView, 19 | dict, 20 | permission, 21 | settings, 22 | modelSelect 23 | }, 24 | getters 25 | }) 26 | 27 | export default store 28 | -------------------------------------------------------------------------------- /workflow-ui/src/icons/svg/switch.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /workflow-ui/src/assets/icons/svg/switch.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /workflow-center-api/src/main/java/com/workflow/process/center/domain/dto/FlowableNodeDTO.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.domain.dto; 2 | 3 | import lombok.Data; 4 | 5 | import java.io.Serializable; 6 | import java.util.Date; 7 | 8 | @Data 9 | public class FlowableNodeDTO implements Serializable { 10 | /** 11 | * 节点id 12 | */ 13 | private String nodeId; 14 | /** 15 | * 节点名称 16 | */ 17 | private String nodeName; 18 | /** 19 | * 执行人的code 20 | */ 21 | private String userCode; 22 | /** 23 | * 执行人姓名 24 | */ 25 | private String userName; 26 | 27 | /** 28 | * 任务节点结束时间 29 | */ 30 | private Date endTime; 31 | } 32 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/config/flowable/behavior/usertask/CustomParallelMultiInstanceBehavior.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.config.flowable.behavior.usertask; 2 | 3 | import org.flowable.bpmn.model.Activity; 4 | import org.flowable.engine.impl.bpmn.behavior.AbstractBpmnActivityBehavior; 5 | import org.flowable.engine.impl.bpmn.behavior.ParallelMultiInstanceBehavior; 6 | 7 | public class CustomParallelMultiInstanceBehavior extends ParallelMultiInstanceBehavior { 8 | public CustomParallelMultiInstanceBehavior(Activity activity, AbstractBpmnActivityBehavior originalActivityBehavior) { 9 | super(activity, originalActivityBehavior); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /workflow-center-api/src/main/java/com/workflow/process/center/domain/dto/task/AddSignTaskDTO.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.domain.dto.task; 2 | 3 | import io.swagger.annotations.ApiModel; 4 | import lombok.Data; 5 | import lombok.EqualsAndHashCode; 6 | 7 | import javax.validation.constraints.NotEmpty; 8 | import java.util.List; 9 | 10 | /** 11 | * @Author: 土豆仙 12 | * @Date: 2021/6/28 17:56 13 | * @Description: 加签 14 | */ 15 | @EqualsAndHashCode(callSuper = true) 16 | @Data 17 | @ApiModel("加签参数") 18 | public class AddSignTaskDTO extends BaseTaskDTO { 19 | 20 | /** 21 | * 被加签人 22 | */ 23 | @NotEmpty(message = "请指明向谁加签!!") 24 | private List signUserIds; 25 | } 26 | -------------------------------------------------------------------------------- /workflow-center-api/src/main/java/com/workflow/process/center/domain/dto/task/SynergyTaskDTO.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.domain.dto.task; 2 | 3 | import io.swagger.annotations.ApiModel; 4 | import lombok.Data; 5 | import lombok.EqualsAndHashCode; 6 | 7 | import javax.validation.constraints.NotEmpty; 8 | import java.util.List; 9 | 10 | /** 11 | * @Author: 土豆仙 12 | * @Date: 2021/6/28 17:56 13 | * @Description: 协同 14 | */ 15 | @EqualsAndHashCode(callSuper = true) 16 | @Data 17 | @ApiModel("协同参数") 18 | public class SynergyTaskDTO extends BaseTaskDTO{ 19 | 20 | /** 21 | * 协同人 22 | */ 23 | @NotEmpty(message = "请指明和谁协同办理!!") 24 | private List synergyUserIds; 25 | } 26 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/config/flowable/behavior/usertask/CustomSequentialMultiInstanceBehavior.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.config.flowable.behavior.usertask; 2 | 3 | import org.flowable.bpmn.model.Activity; 4 | import org.flowable.engine.impl.bpmn.behavior.AbstractBpmnActivityBehavior; 5 | import org.flowable.engine.impl.bpmn.behavior.SequentialMultiInstanceBehavior; 6 | 7 | public class CustomSequentialMultiInstanceBehavior extends SequentialMultiInstanceBehavior { 8 | public CustomSequentialMultiInstanceBehavior(Activity activity, AbstractBpmnActivityBehavior innerActivityBehavior) { 9 | super(activity, innerActivityBehavior); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /workflow-ui/src/assets/icons/svg/theme.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /workflow-ui/src/layout/components/InnerLink/index.vue: -------------------------------------------------------------------------------- 1 | 28 | -------------------------------------------------------------------------------- /workflow-ui/src/views/processCore/processService/processModelDesign/custom-renderer/CustomRenderer.js: -------------------------------------------------------------------------------- 1 | import BpmnRenderer from "bpmn-js/lib/draw/BpmnRenderer"; 2 | 3 | export default function CustomRenderer(config, eventBus, styles, pathMap, canvas, textRenderer) { 4 | BpmnRenderer.call(this, config, eventBus, styles, pathMap, canvas, textRenderer, 2000); 5 | 6 | this.handlers["label"] = function() { 7 | return null; 8 | }; 9 | } 10 | 11 | const F = function() {}; // 核心,利用空对象作为中介; 12 | F.prototype = BpmnRenderer.prototype; // 核心,将父类的原型赋值给空对象F; 13 | CustomRenderer.prototype = new F(); // 核心,将 F的实例赋值给子类; 14 | CustomRenderer.prototype.constructor = CustomRenderer; // 修复子类CustomRenderer的构造器指向,防止原型链的混乱; 15 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/mapper/WorkFlowServiceCategoryMapper.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.workflow.process.center.domain.entity.WorkFlowServiceCategory; 5 | import org.apache.ibatis.annotations.Param; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * 服务分类表(WorkFlowServiceCategory)表数据库访问层 11 | * 12 | * @author 土豆仙 13 | * @since 2021-07-03 09:34:00 14 | */ 15 | public interface WorkFlowServiceCategoryMapper extends BaseMapper { 16 | 17 | List listAllCategoryUnderCategoryId(@Param("serviceCategoryId") Integer serviceCategoryId); 18 | } 19 | -------------------------------------------------------------------------------- /workflow-ui/src/layout/components/Sidebar/FixiOSBug.js: -------------------------------------------------------------------------------- 1 | export default { 2 | computed: { 3 | device() { 4 | return this.$store.state.app.device 5 | } 6 | }, 7 | mounted() { 8 | // In order to fix the click on menu on the ios device will trigger the mouseleave bug 9 | this.fixBugIniOS() 10 | }, 11 | methods: { 12 | fixBugIniOS() { 13 | const $subMenu = this.$refs.subMenu 14 | if ($subMenu) { 15 | const handleMouseleave = $subMenu.handleMouseleave 16 | $subMenu.handleMouseleave = (e) => { 17 | if (this.device === 'mobile') { 18 | return 19 | } 20 | handleMouseleave(e) 21 | } 22 | } 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /workflow-ui/src/components/tinymce/config.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable max-len */ 2 | 3 | export const plugins = [ 4 | 'advlist anchor autolink autosave code codesample directionality emoticons fullscreen hr image imagetools insertdatetime link lists media nonbreaking noneditable pagebreak paste preview print save searchreplace spellchecker tabfocus table template textpattern visualblocks visualchars wordcount' 5 | ] 6 | export const toolbar = [ 7 | 'code searchreplace bold italic underline strikethrough alignleft aligncenter alignright outdent indent blockquote removeformat subscript superscript codesample hr bullist numlist link image charmap preview anchor pagebreak insertdatetime media table emoticons forecolor backcolor fullscreen' 8 | ] 9 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/domain/dto/ServiceReProcessDefinitionDTO.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.domain.dto; 2 | 3 | 4 | import io.swagger.annotations.ApiModel; 5 | import io.swagger.annotations.ApiModelProperty; 6 | import lombok.Data; 7 | 8 | @Data 9 | @ApiModel("服务配置关联流程定义") 10 | public class ServiceReProcessDefinitionDTO { 11 | 12 | @ApiModelProperty("流程分类") 13 | private String category; 14 | 15 | @ApiModelProperty("流程key") 16 | private String key; 17 | 18 | @ApiModelProperty("流程名称") 19 | private String name; 20 | 21 | @ApiModelProperty("版本") 22 | private int version; 23 | 24 | @ApiModelProperty("流程定义id") 25 | private String id; 26 | 27 | } 28 | -------------------------------------------------------------------------------- /workflow-common/src/main/java/com/workflow/common/annotation/DataScope.java: -------------------------------------------------------------------------------- 1 | package com.workflow.common.annotation; 2 | 3 | import java.lang.annotation.Documented; 4 | import java.lang.annotation.ElementType; 5 | import java.lang.annotation.Retention; 6 | import java.lang.annotation.RetentionPolicy; 7 | import java.lang.annotation.Target; 8 | 9 | /** 10 | * 数据权限过滤注解 11 | * 12 | * @author workflow 13 | */ 14 | @Target(ElementType.METHOD) 15 | @Retention(RetentionPolicy.RUNTIME) 16 | @Documented 17 | public @interface DataScope 18 | { 19 | /** 20 | * 部门表的别名 21 | */ 22 | public String deptAlias() default ""; 23 | 24 | /** 25 | * 用户表的别名 26 | */ 27 | public String userAlias() default ""; 28 | } 29 | -------------------------------------------------------------------------------- /workflow-admin/src/main/resources/mybatis/mybatis-config.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /workflow-ui/src/styles/mixin.scss: -------------------------------------------------------------------------------- 1 | @mixin action-bar { 2 | .action-bar { 3 | height: 33px; 4 | background: #f2fafb; 5 | padding: 0 15px; 6 | box-sizing: border-box; 7 | 8 | .bar-btn { 9 | display: inline-block; 10 | padding: 0 6px; 11 | line-height: 32px; 12 | color: #8285f5; 13 | cursor: pointer; 14 | font-size: 14px; 15 | user-select: none; 16 | & i { 17 | font-size: 20px; 18 | } 19 | &:hover { 20 | color: #4348d4; 21 | } 22 | } 23 | .bar-btn + .bar-btn { 24 | margin-left: 8px; 25 | } 26 | .delete-btn { 27 | color: #f56c6c; 28 | &:hover { 29 | color: #ea0b30; 30 | } 31 | } 32 | } 33 | } -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/config/flowable/converter/CustomBpmnJsonConverter.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.config.flowable.converter; 2 | 3 | import org.flowable.editor.language.json.converter.BpmnJsonConverter; 4 | 5 | /** 6 | * @Author: 土豆仙 7 | * @Date: 2021/6/27 0:27 8 | * @Description: 扩展配置 9 | */ 10 | public class CustomBpmnJsonConverter extends BpmnJsonConverter { 11 | static { 12 | MyUserTaskJsonConverter.customFillTypes(convertersToBpmnMap, convertersToJsonMap); 13 | MyCallActivityJsonConverter.customFillTypes(convertersToBpmnMap, convertersToJsonMap); 14 | MySubProcessJsonConverter.customFillTypes(convertersToBpmnMap, convertersToJsonMap); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/config/mybatis/ProcessTenantLineHandler.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.config.mybatis; 2 | 3 | import com.baomidou.mybatisplus.extension.plugins.handler.TenantLineHandler; 4 | import lombok.extern.slf4j.Slf4j; 5 | import net.sf.jsqlparser.expression.Expression; 6 | 7 | @Slf4j 8 | public class ProcessTenantLineHandler implements TenantLineHandler { 9 | @Override 10 | public Expression getTenantId() { 11 | return null; 12 | } 13 | 14 | @Override 15 | public String getTenantIdColumn() { 16 | return null; 17 | } 18 | 19 | @Override 20 | public boolean ignoreTable(String tableName) { 21 | return false; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /workflow-form/src/main/java/com/workflow/form/center/service/impl/DictDataServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.workflow.form.center.service.impl; 2 | 3 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 4 | import com.workflow.form.center.domain.entity.DictData; 5 | import com.workflow.form.center.mapper.DictDataMapper; 6 | import com.workflow.form.center.service.DictDataService; 7 | import lombok.extern.slf4j.Slf4j; 8 | import org.springframework.stereotype.Service; 9 | 10 | /** 11 | * 字典数据表(DictData)表服务实现类 12 | * 13 | * @author 土豆仙 14 | * @since 2021-08-10 14:35:42 15 | */ 16 | @Slf4j 17 | @Service 18 | public class DictDataServiceImpl extends ServiceImpl implements DictDataService { 19 | 20 | } 21 | -------------------------------------------------------------------------------- /workflow-form/src/main/java/com/workflow/form/center/service/impl/DictTypeServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.workflow.form.center.service.impl; 2 | 3 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 4 | import com.workflow.form.center.domain.entity.DictType; 5 | import com.workflow.form.center.mapper.DictTypeMapper; 6 | import com.workflow.form.center.service.DictTypeService; 7 | import lombok.extern.slf4j.Slf4j; 8 | import org.springframework.stereotype.Service; 9 | 10 | /** 11 | * 字典类型表(DictType)表服务实现类 12 | * 13 | * @author 土豆仙 14 | * @since 2021-08-10 14:34:59 15 | */ 16 | @Slf4j 17 | @Service 18 | public class DictTypeServiceImpl extends ServiceImpl implements DictTypeService { 19 | 20 | } 21 | -------------------------------------------------------------------------------- /workflow-ui/src/assets/icons/svg/druid.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /workflow-ui/src/assets/icons/svg/code.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /workflow-ui/src/assets/icons/svg/peoples.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /workflow-ui/src/directive/index.js: -------------------------------------------------------------------------------- 1 | import hasRole from './permission/hasRole' 2 | import hasPermi from './permission/hasPermi' 3 | import dialogDrag from './dialog/drag' 4 | import dialogDragWidth from './dialog/dragWidth' 5 | import dialogDragHeight from './dialog/dragHeight' 6 | 7 | const install = function(Vue) { 8 | Vue.directive('hasRole', hasRole) 9 | Vue.directive('hasPermi', hasPermi) 10 | Vue.directive('dialogDrag', dialogDrag) 11 | Vue.directive('dialogDragWidth', dialogDragWidth) 12 | Vue.directive('dialogDragHeight', dialogDragHeight) 13 | } 14 | 15 | if (window.Vue) { 16 | window['hasRole'] = hasRole 17 | window['hasPermi'] = hasPermi 18 | Vue.use(install); // eslint-disable-line 19 | } 20 | 21 | export default install 22 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/domain/dto/MigrationValidationProcessServiceDTO.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.domain.dto; 2 | 3 | import io.swagger.annotations.ApiModelProperty; 4 | import lombok.Data; 5 | 6 | import javax.validation.constraints.NotBlank; 7 | 8 | @Data 9 | public class MigrationValidationProcessServiceDTO { 10 | 11 | /** 12 | * 流程实例ID 必填 13 | */ 14 | @ApiModelProperty(value = "流程实例ID", required = true) 15 | @NotBlank(message = "流程实例ID不能为空!") 16 | private String procInsId; 17 | 18 | /** 19 | * 新版本流程定义ID 必填 20 | */ 21 | @ApiModelProperty(value = "新版本流程定义ID", required = true) 22 | @NotBlank(message = "流程定义ID不能为空!") 23 | private String procDefId; 24 | } 25 | -------------------------------------------------------------------------------- /workflow-ui/src/icons/svg/input.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/service/cmd/rollback/RollbackStrategyFactory.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.service.cmd.rollback; 2 | 3 | import org.flowable.task.api.history.HistoricTaskInstance; 4 | 5 | /** 6 | * @Author: 土豆仙 7 | * @Date: 2021/7/16 19:25 8 | * @Description: 回撤工厂类-考虑流程当前运行状态不同,撤回逻辑不同=》使用策略+模板模式 9 | */ 10 | public interface RollbackStrategyFactory { 11 | /** 12 | * 创建回滚策略 13 | * @param hisTask 14 | * @return 15 | */ 16 | RollbackOperateStrategy createStrategy(HistoricTaskInstance hisTask); 17 | 18 | /** 19 | * 当前任务未完成判定 20 | * @param template 21 | * @return 22 | */ 23 | boolean currentMultiInstanceTaskUnfinished(RollbackParams template); 24 | } 25 | -------------------------------------------------------------------------------- /workflow-ui/src/assets/icons/svg/input.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /workflow-ui/src/components/Process/common/mixinExecutionListener.js: -------------------------------------------------------------------------------- 1 | 2 | import executionListenerDialog from '../components/nodePanel/property/executionListener' 3 | export default { 4 | components: { 5 | executionListenerDialog 6 | }, 7 | data() { 8 | return { 9 | executionListenerLength: 0, 10 | dialogName: null 11 | } 12 | }, 13 | methods: { 14 | computedExecutionListenerLength() { 15 | this.executionListenerLength = this.element.businessObject.extensionElements?.values?.length ?? 0 16 | }, 17 | finishExecutionListener() { 18 | if (this.dialogName === 'executionListenerDialog') { 19 | this.computedExecutionListenerLength() 20 | } 21 | this.dialogName = '' 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /workflow-ui/src/components/Process/components/custom/customContextPad.vue: -------------------------------------------------------------------------------- 1 | export default class CustomContextPad { 2 | constructor(config, contextPad, create, elementFactory, injector, translate) { 3 | this.create = create; 4 | this.elementFactory = elementFactory; 5 | this.translate = translate; 6 | 7 | if (config.autoPlace !== false) { 8 | this.autoPlace = injector.get('autoPlace', false); 9 | } 10 | 11 | contextPad.registerProvider(this); // 定义这是一个contextPad 12 | } 13 | 14 | getContextPadEntries(element) {} 15 | } 16 | 17 | CustomContextPad.$inject = [ 18 | 'config', 19 | 'contextPad', 20 | 'create', 21 | 'elementFactory', 22 | 'injector', 23 | 'translate' 24 | ]; 25 | -------------------------------------------------------------------------------- /workflow-ui/src/utils/loadTinymce.js: -------------------------------------------------------------------------------- 1 | import loadScript from './loadScript' 2 | import ELEMENT from 'element-ui' 3 | import pluginsConfig from './pluginsConfig' 4 | 5 | let tinymceObj 6 | 7 | export default function loadTinymce(cb) { 8 | const { tinymceUrl } = pluginsConfig 9 | 10 | if (tinymceObj) { 11 | cb(tinymceObj) 12 | return 13 | } 14 | 15 | const loading = ELEMENT.Loading.service({ 16 | fullscreen: true, 17 | lock: true, 18 | text: '富文本资源加载中...', 19 | spinner: 'el-icon-loading', 20 | background: 'rgba(255, 255, 255, 0.5)' 21 | }) 22 | 23 | loadScript(tinymceUrl, () => { 24 | loading.close() 25 | // eslint-disable-next-line no-undef 26 | tinymceObj = tinymce 27 | cb(tinymceObj) 28 | }) 29 | } 30 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/service/WorkFlowDeptService.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.service; 2 | 3 | import com.workflow.process.center.api.domain.WorkFlowDeptDTO; 4 | import com.workflow.process.center.common.ResultBean; 5 | 6 | import java.util.List; 7 | 8 | public interface WorkFlowDeptService { 9 | 10 | ResultBean> listDepts(WorkFlowDeptDTO workFlowDeptDTO); 11 | 12 | List deptTree(WorkFlowDeptDTO workFlowDeptDTO); 13 | 14 | /** 15 | * 根据部门key获取部门信息 16 | */ 17 | WorkFlowDeptDTO queryDeptByDeptKey(String deptKey); 18 | 19 | /** 20 | * 根据部门key获取上N级部门信息 21 | */ 22 | WorkFlowDeptDTO queryUpDept(String deptId, Integer stepSize); 23 | } 24 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/service/WorkFlowServiceCategoryService.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.workflow.process.center.domain.entity.WorkFlowServiceCategory; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * 服务分类表(WorkFlowServiceCategory)表服务接口 10 | * 11 | * @author 土豆仙 12 | * @since 2021-07-03 09:34:00 13 | */ 14 | public interface WorkFlowServiceCategoryService extends IService { 15 | 16 | List treeByCateGroyName(WorkFlowServiceCategory workFlowServiceCategory); 17 | 18 | List listAllCategoryUnderCategoryId(Integer serviceCategoryId); 19 | } 20 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/service/WorkFlowAreaService.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.service; 2 | 3 | import com.workflow.process.center.api.domain.WorkFlowAreaDTO; 4 | import com.workflow.process.center.common.ResultBean; 5 | 6 | import java.util.List; 7 | 8 | public interface WorkFlowAreaService { 9 | 10 | ResultBean> listAreas(WorkFlowAreaDTO workFlowAreaDTO); 11 | 12 | List deptTree(WorkFlowAreaDTO workFlowAreaDTO); 13 | 14 | /** 15 | * 根据区域key获取区域信息 16 | */ 17 | WorkFlowAreaDTO queryAreaByAreaKey(String areaKey); 18 | 19 | /** 20 | * 根据区域key获取上N级区域信息 21 | */ 22 | WorkFlowAreaDTO queryUpArea(String areaId, Integer stepSize); 23 | 24 | } 25 | -------------------------------------------------------------------------------- /workflow-ui/src/api/monitor/jobLog.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | // 查询调度日志列表 4 | export function listJobLog(query) { 5 | return request({ 6 | url: '/monitor/jobLog/list', 7 | method: 'get', 8 | params: query 9 | }) 10 | } 11 | 12 | // 删除调度日志 13 | export function delJobLog(jobLogId) { 14 | return request({ 15 | url: '/monitor/jobLog/' + jobLogId, 16 | method: 'delete' 17 | }) 18 | } 19 | 20 | // 清空调度日志 21 | export function cleanJobLog() { 22 | return request({ 23 | url: '/monitor/jobLog/clean', 24 | method: 'delete' 25 | }) 26 | } 27 | 28 | // 导出调度日志 29 | export function exportJobLog(query) { 30 | return request({ 31 | url: '/monitor/jobLog/export', 32 | method: 'get', 33 | params: query 34 | }) 35 | } -------------------------------------------------------------------------------- /workflow-ui/src/api/monitor/operlog.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | // 查询操作日志列表 4 | export function list(query) { 5 | return request({ 6 | url: '/monitor/operlog/list', 7 | method: 'get', 8 | params: query 9 | }) 10 | } 11 | 12 | // 删除操作日志 13 | export function delOperlog(operId) { 14 | return request({ 15 | url: '/monitor/operlog/' + operId, 16 | method: 'delete' 17 | }) 18 | } 19 | 20 | // 清空操作日志 21 | export function cleanOperlog() { 22 | return request({ 23 | url: '/monitor/operlog/clean', 24 | method: 'delete' 25 | }) 26 | } 27 | 28 | // 导出操作日志 29 | export function exportOperlog(query) { 30 | return request({ 31 | url: '/monitor/operlog/export', 32 | method: 'get', 33 | params: query 34 | }) 35 | } -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/service/WorkFlowExtendHisprocinstService.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.workflow.process.center.domain.entity.WorkFlowExtendHisprocinst; 5 | 6 | /** 7 | * 流程引擎扩展表-主要记录流程实例运行状态(WorkFlowExtendHisprocinst)表服务接口 8 | * 9 | * @author 土豆仙 10 | * @since 2021-07-12 14:07:37 11 | */ 12 | public interface WorkFlowExtendHisprocinstService extends IService { 13 | 14 | /** 15 | * 通过流程实例获取历史时的扩展信息 16 | * 17 | * @param processInstanceId 流程实例id 18 | * @return 19 | */ 20 | WorkFlowExtendHisprocinst findExtendHisprocinstByProcessInstanceId(String processInstanceId); 21 | } 22 | -------------------------------------------------------------------------------- /workflow-process-common/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | workflow 7 | com.workflow 8 | 3.6.0 9 | 10 | 4.0.0 11 | 12 | workflow-process-common 13 | pom 14 | 15 | workflow-process-common-pojo 16 | workflow-process-idm-pojo 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /workflow-ui/src/assets/icons/svg/server.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /workflow-ui/src/components/parser/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "form-gen-parser", 3 | "version": "1.0.3", 4 | "description": "表单json解析器", 5 | "main": "lib/form-gen-parser.umd.js", 6 | "directories": { 7 | "example": "example" 8 | }, 9 | "scripts": { 10 | "test": "echo \"Error: no test specified\" && exit 1" 11 | }, 12 | "repository": { 13 | "type": "git", 14 | "url": "git+https://github.com/JakHuang/form-generator.git" 15 | }, 16 | "dependencies": { 17 | "form-gen-render": "^1.0.0" 18 | }, 19 | "author": "jakHuang", 20 | "license": "MIT", 21 | "bugs": { 22 | "url": "https://github.com/JakHuang/form-generator/issues" 23 | }, 24 | "homepage": "https://github.com/JakHuang/form-generator/blob/dev/src/components/parser" 25 | } 26 | -------------------------------------------------------------------------------- /workflow-ui/src/directive/permission/hasRole.js: -------------------------------------------------------------------------------- 1 | /** 2 | * v-hasRole 角色权限处理 3 | * Copyright (c) 2019 workflow 4 | */ 5 | 6 | import store from '@/store' 7 | 8 | export default { 9 | inserted(el, binding, vnode) { 10 | const { value } = binding 11 | const super_admin = "admin"; 12 | const roles = store.getters && store.getters.roles 13 | 14 | if (value && value instanceof Array && value.length > 0) { 15 | const roleFlag = value 16 | 17 | const hasRole = roles.some(role => { 18 | return super_admin === role || roleFlag.includes(role) 19 | }) 20 | 21 | if (!hasRole) { 22 | el.parentNode && el.parentNode.removeChild(el) 23 | } 24 | } else { 25 | throw new Error(`请设置角色权限标签值"`) 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/config/flowable/behavior/CustomActivityBehaviorFactory.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.config.flowable.behavior; 2 | 3 | import com.workflow.process.center.config.flowable.behavior.usertask.CustomUserTaskActivityBehavior; 4 | import org.flowable.bpmn.model.UserTask; 5 | import org.flowable.engine.impl.bpmn.behavior.UserTaskActivityBehavior; 6 | import org.flowable.engine.impl.bpmn.parser.factory.DefaultActivityBehaviorFactory; 7 | 8 | public class CustomActivityBehaviorFactory extends DefaultActivityBehaviorFactory { 9 | 10 | @Override 11 | public UserTaskActivityBehavior createUserTaskActivityBehavior(UserTask userTask) { 12 | return new CustomUserTaskActivityBehavior(userTask); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /workflow-ui/src/utils/loadBeautifier.js: -------------------------------------------------------------------------------- 1 | import loadScript from './loadScript' 2 | import ELEMENT from 'element-ui' 3 | import pluginsConfig from './pluginsConfig' 4 | 5 | let beautifierObj 6 | 7 | export default function loadBeautifier(cb) { 8 | const { beautifierUrl } = pluginsConfig 9 | if (beautifierObj) { 10 | cb(beautifierObj) 11 | return 12 | } 13 | 14 | const loading = ELEMENT.Loading.service({ 15 | fullscreen: true, 16 | lock: true, 17 | text: '格式化资源加载中...', 18 | spinner: 'el-icon-loading', 19 | background: 'rgba(255, 255, 255, 0.5)' 20 | }) 21 | 22 | loadScript(beautifierUrl, () => { 23 | loading.close() 24 | // eslint-disable-next-line no-undef 25 | beautifierObj = beautifier 26 | cb(beautifierObj) 27 | }) 28 | } 29 | -------------------------------------------------------------------------------- /workflow-quartz/src/main/java/com/workflow/quartz/task/RyTask.java: -------------------------------------------------------------------------------- 1 | package com.workflow.quartz.task; 2 | 3 | import org.springframework.stereotype.Component; 4 | import com.workflow.common.utils.StringUtils; 5 | 6 | /** 7 | * 定时任务调度测试 8 | * 9 | * @author workflow 10 | */ 11 | @Component("ryTask") 12 | public class RyTask 13 | { 14 | public void ryMultipleParams(String s, Boolean b, Long l, Double d, Integer i) 15 | { 16 | System.out.println(StringUtils.format("执行多参方法: 字符串类型{},布尔类型{},长整型{},浮点型{},整形{}", s, b, l, d, i)); 17 | } 18 | 19 | public void ryParams(String params) 20 | { 21 | System.out.println("执行有参方法:" + params); 22 | } 23 | 24 | public void ryNoParams() 25 | { 26 | System.out.println("执行无参方法"); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /workflow-ui/src/api/monitor/logininfor.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | // 查询登录日志列表 4 | export function list(query) { 5 | return request({ 6 | url: '/monitor/logininfor/list', 7 | method: 'get', 8 | params: query 9 | }) 10 | } 11 | 12 | // 删除登录日志 13 | export function delLogininfor(infoId) { 14 | return request({ 15 | url: '/monitor/logininfor/' + infoId, 16 | method: 'delete' 17 | }) 18 | } 19 | 20 | // 清空登录日志 21 | export function cleanLogininfor() { 22 | return request({ 23 | url: '/monitor/logininfor/clean', 24 | method: 'delete' 25 | }) 26 | } 27 | 28 | // 导出登录日志 29 | export function exportLogininfor(query) { 30 | return request({ 31 | url: '/monitor/logininfor/export', 32 | method: 'get', 33 | params: query 34 | }) 35 | } -------------------------------------------------------------------------------- /workflow-ui/src/icons/svg/textarea.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/service/impl/WorkFlowEmailServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.service.impl; 2 | 3 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 4 | import com.workflow.process.center.domain.entity.WorkFlowEmail; 5 | import com.workflow.process.center.mapper.WorkFlowEmailMapper; 6 | import com.workflow.process.center.service.WorkFlowEmailService; 7 | import lombok.extern.slf4j.Slf4j; 8 | import org.springframework.stereotype.Service; 9 | 10 | /** 11 | * 租户邮箱服务配置(WorkFlowEmail)表服务实现类 12 | * 13 | * @author 土豆仙 14 | * @since 2021-09-06 10:58:04 15 | */ 16 | @Slf4j 17 | @Service 18 | public class WorkFlowEmailServiceImpl extends ServiceImpl implements WorkFlowEmailService { 19 | 20 | } 21 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/service/impl/WorkFlowTenantServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.service.impl; 2 | 3 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 4 | import com.workflow.process.center.domain.entity.WorkFlowTenant; 5 | import com.workflow.process.center.mapper.WorkFlowTenantMapper; 6 | import com.workflow.process.center.service.WorkFlowTenantService; 7 | import lombok.extern.slf4j.Slf4j; 8 | import org.springframework.stereotype.Service; 9 | 10 | /** 11 | * (WorkFlowTenant)表服务实现类 12 | * 13 | * @author 土豆仙 14 | * @since 2021-06-30 10:45:03 15 | */ 16 | @Slf4j 17 | @Service 18 | public class WorkFlowTenantServiceImpl extends ServiceImpl implements WorkFlowTenantService { 19 | 20 | } 21 | -------------------------------------------------------------------------------- /workflow-ui/src/assets/icons/svg/textarea.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/service/impl/WorkFlowButtonServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.service.impl; 2 | 3 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 4 | import com.workflow.process.center.domain.entity.WorkFlowButton; 5 | import com.workflow.process.center.mapper.WorkFlowButtonMapper; 6 | import com.workflow.process.center.service.WorkFlowButtonService; 7 | import lombok.extern.slf4j.Slf4j; 8 | import org.springframework.stereotype.Service; 9 | 10 | /** 11 | * 流程按钮(WorkFlowButton)表服务实现类 12 | * 13 | * @author 土豆仙 14 | * @since 2021-06-21 16:39:38 15 | */ 16 | @Slf4j 17 | @Service 18 | public class WorkFlowButtonServiceImpl extends ServiceImpl implements WorkFlowButtonService { 19 | 20 | } 21 | -------------------------------------------------------------------------------- /workflow-ui/src/icons/svg/time.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /workflow-center-api/src/main/java/com/workflow/process/center/domain/dto/task/UpdateCandidateTaskDTO.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.domain.dto.task; 2 | 3 | import com.workflow.process.center.domain.dto.CandidateGroupDTO; 4 | import io.swagger.annotations.ApiModel; 5 | import io.swagger.annotations.ApiModelProperty; 6 | import lombok.Data; 7 | import lombok.EqualsAndHashCode; 8 | 9 | import javax.validation.constraints.NotBlank; 10 | import javax.validation.constraints.NotEmpty; 11 | import java.util.List; 12 | 13 | @EqualsAndHashCode(callSuper = true) 14 | @Data 15 | @ApiModel("修改候选组") 16 | public class UpdateCandidateTaskDTO extends BaseTaskDTO{ 17 | 18 | @NotEmpty(message = "候选组不能为空!") 19 | @ApiModelProperty(value = "候选组") 20 | private List candidateGroupDTOS; 21 | 22 | } 23 | -------------------------------------------------------------------------------- /workflow-ui/src/assets/icons/svg/time.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /workflow-admin/src/main/java/com/workflow/web/controller/tool/SwaggerController.java: -------------------------------------------------------------------------------- 1 | package com.workflow.web.controller.tool; 2 | 3 | import org.springframework.security.access.prepost.PreAuthorize; 4 | import org.springframework.stereotype.Controller; 5 | import org.springframework.web.bind.annotation.GetMapping; 6 | import org.springframework.web.bind.annotation.RequestMapping; 7 | import com.workflow.common.core.controller.BaseController; 8 | 9 | /** 10 | * swagger 接口 11 | * 12 | * @author workflow 13 | */ 14 | @Controller 15 | @RequestMapping("/tool/swagger") 16 | public class SwaggerController extends BaseController 17 | { 18 | @PreAuthorize("@ss.hasPermi('tool:swagger:view')") 19 | @GetMapping() 20 | public String index() 21 | { 22 | return redirect("/swagger-ui.html"); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/service/impl/WorkFlowCategoryServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.service.impl; 2 | 3 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 4 | import com.workflow.process.center.domain.entity.WorkFlowCategory; 5 | import com.workflow.process.center.mapper.WorkFlowCategoryMapper; 6 | import com.workflow.process.center.service.WorkFlowCategoryService; 7 | import lombok.extern.slf4j.Slf4j; 8 | import org.springframework.stereotype.Service; 9 | 10 | /** 11 | * 流程分类(WorkFlowCategory)表服务实现类 12 | * 13 | * @author 土豆仙 14 | * @since 2021-06-21 15:59:48 15 | */ 16 | @Slf4j 17 | @Service 18 | public class WorkFlowCategoryServiceImpl extends ServiceImpl implements WorkFlowCategoryService { 19 | 20 | } 21 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/service/impl/WorkFlowVariableServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.service.impl; 2 | 3 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 4 | import com.workflow.process.center.domain.entity.WorkFlowVariable; 5 | import com.workflow.process.center.mapper.WorkFlowVariableMapper; 6 | import com.workflow.process.center.service.WorkFlowVariableService; 7 | import lombok.extern.slf4j.Slf4j; 8 | import org.springframework.stereotype.Service; 9 | 10 | /** 11 | * (WorkFlowVariableDTO)表服务实现类 12 | * 13 | * @author 土豆仙 14 | * @since 2021-09-17 13:54:42 15 | */ 16 | @Slf4j 17 | @Service 18 | public class WorkFlowVariableServiceImpl extends ServiceImpl implements WorkFlowVariableService { 19 | 20 | } 21 | -------------------------------------------------------------------------------- /workflow-form/src/main/java/com/workflow/form/center/service/impl/WorkFlowFormModelServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.workflow.form.center.service.impl; 2 | 3 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 4 | import com.workflow.form.center.domain.entity.WorkFlowFormModel; 5 | import com.workflow.form.center.mapper.WorkFlowFormModelMapper; 6 | import com.workflow.form.center.service.WorkFlowFormModelService; 7 | import lombok.extern.slf4j.Slf4j; 8 | import org.springframework.stereotype.Service; 9 | 10 | /** 11 | * 自定义表单模型表(WorkFlowFormModel)表服务实现类 12 | * 13 | * @author 土豆仙 14 | * @since 2021-07-29 10:54:57 15 | */ 16 | @Slf4j 17 | @Service 18 | public class WorkFlowFormModelServiceImpl extends ServiceImpl implements WorkFlowFormModelService { 19 | 20 | } 21 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/service/impl/WorkFlowHiCommentServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.service.impl; 2 | 3 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 4 | import com.workflow.process.center.domain.entity.WorkFlowHiComment; 5 | import com.workflow.process.center.mapper.WorkFlowHiCommentMapper; 6 | import com.workflow.process.center.service.WorkFlowHiCommentService; 7 | import lombok.extern.slf4j.Slf4j; 8 | import org.springframework.stereotype.Service; 9 | 10 | /** 11 | * (WorkFlowHiComment)表服务实现类 12 | * 13 | * @author 土豆仙 14 | * @since 2021-07-20 15:54:09 15 | */ 16 | @Slf4j 17 | @Service 18 | public class WorkFlowHiCommentServiceImpl extends ServiceImpl implements WorkFlowHiCommentService { 19 | 20 | } 21 | -------------------------------------------------------------------------------- /workflow-common/src/main/java/com/workflow/common/utils/MessageUtils.java: -------------------------------------------------------------------------------- 1 | package com.workflow.common.utils; 2 | 3 | import org.springframework.context.MessageSource; 4 | import org.springframework.context.i18n.LocaleContextHolder; 5 | import com.workflow.common.utils.spring.SpringUtils; 6 | 7 | /** 8 | * 获取i18n资源文件 9 | * 10 | * @author workflow 11 | */ 12 | public class MessageUtils 13 | { 14 | /** 15 | * 根据消息键和参数 获取消息 委托给spring messageSource 16 | * 17 | * @param code 消息键 18 | * @param args 参数 19 | * @return 获取国际化翻译值 20 | */ 21 | public static String message(String code, Object... args) 22 | { 23 | MessageSource messageSource = SpringUtils.getBean(MessageSource.class); 24 | return messageSource.getMessage(code, args, LocaleContextHolder.getLocale()); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ###################################################################### 2 | # Build Tools 3 | 4 | .gradle 5 | /build/ 6 | !gradle/wrapper/gradle-wrapper.jar 7 | 8 | target/ 9 | !.mvn/wrapper/maven-wrapper.jar 10 | 11 | ###################################################################### 12 | # IDE 13 | 14 | ### STS ### 15 | .apt_generated 16 | .classpath 17 | .factorypath 18 | .project 19 | .settings 20 | .springBeans 21 | 22 | ### IntelliJ IDEA ### 23 | .idea 24 | *.iws 25 | *.iml 26 | *.ipr 27 | 28 | ### NetBeans ### 29 | nbproject/private/ 30 | build/* 31 | nbbuild/ 32 | dist/ 33 | nbdist/ 34 | .nb-gradle/ 35 | 36 | ###################################################################### 37 | # Others 38 | *.log 39 | *.xml.versionsBackup 40 | *.swp 41 | 42 | !*/build/*.java 43 | !*/build/*.html 44 | !*/build/*.xml 45 | -------------------------------------------------------------------------------- /workflow-ui/src/assets/icons/svg/edit.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /workflow-ui/src/assets/icons/svg/nested.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/service/impl/WorkFlowExpressionServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.service.impl; 2 | 3 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 4 | import com.workflow.process.center.domain.entity.WorkFlowExpression; 5 | import com.workflow.process.center.mapper.WorkFlowExpressionMapper; 6 | import com.workflow.process.center.service.WorkFlowExpressionService; 7 | import lombok.extern.slf4j.Slf4j; 8 | import org.springframework.stereotype.Service; 9 | 10 | /** 11 | * 流程表达式(WorkFlowExpression)表服务实现类 12 | * 13 | * @author 土豆仙 14 | * @since 2021-08-23 16:24:55 15 | */ 16 | @Slf4j 17 | @Service 18 | public class WorkFlowExpressionServiceImpl extends ServiceImpl implements WorkFlowExpressionService { 19 | 20 | } 21 | -------------------------------------------------------------------------------- /workflow-common/src/main/java/com/workflow/common/enums/BusinessType.java: -------------------------------------------------------------------------------- 1 | package com.workflow.common.enums; 2 | 3 | /** 4 | * 业务操作类型 5 | * 6 | * @author workflow 7 | */ 8 | public enum BusinessType 9 | { 10 | /** 11 | * 其它 12 | */ 13 | OTHER, 14 | 15 | /** 16 | * 新增 17 | */ 18 | INSERT, 19 | 20 | /** 21 | * 修改 22 | */ 23 | UPDATE, 24 | 25 | /** 26 | * 删除 27 | */ 28 | DELETE, 29 | 30 | /** 31 | * 授权 32 | */ 33 | GRANT, 34 | 35 | /** 36 | * 导出 37 | */ 38 | EXPORT, 39 | 40 | /** 41 | * 导入 42 | */ 43 | IMPORT, 44 | 45 | /** 46 | * 强退 47 | */ 48 | FORCE, 49 | 50 | /** 51 | * 生成代码 52 | */ 53 | GENCODE, 54 | 55 | /** 56 | * 清空数据 57 | */ 58 | CLEAN, 59 | } 60 | -------------------------------------------------------------------------------- /workflow-form/src/main/java/com/workflow/form/center/service/impl/WorkFlowFormCategoryServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.workflow.form.center.service.impl; 2 | 3 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 4 | import com.workflow.form.center.domain.entity.WorkFlowFormCategory; 5 | import com.workflow.form.center.mapper.WorkFlowFormCategoryMapper; 6 | import com.workflow.form.center.service.WorkFlowFormCategoryService; 7 | import lombok.extern.slf4j.Slf4j; 8 | import org.springframework.stereotype.Service; 9 | 10 | /** 11 | * 表单分类表(WorkFlowFormCategory)表服务实现类 12 | * 13 | * @author 土豆仙 14 | * @since 2021-07-29 10:54:25 15 | */ 16 | @Slf4j 17 | @Service 18 | public class WorkFlowFormCategoryServiceImpl extends ServiceImpl implements WorkFlowFormCategoryService { 19 | 20 | } 21 | -------------------------------------------------------------------------------- /workflow-ui/src/directive/permission/hasPermi.js: -------------------------------------------------------------------------------- 1 | /** 2 | * v-hasPermi 操作权限处理 3 | * Copyright (c) 2019 workflow 4 | */ 5 | 6 | import store from '@/store' 7 | 8 | export default { 9 | inserted(el, binding, vnode) { 10 | const { value } = binding 11 | const all_permission = "*:*:*"; 12 | const permissions = store.getters && store.getters.permissions 13 | 14 | if (value && value instanceof Array && value.length > 0) { 15 | const permissionFlag = value 16 | 17 | const hasPermissions = permissions.some(permission => { 18 | return all_permission === permission || permissionFlag.includes(permission) 19 | }) 20 | 21 | if (!hasPermissions) { 22 | el.parentNode && el.parentNode.removeChild(el) 23 | } 24 | } else { 25 | throw new Error(`请设置操作权限标签值`) 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /workflow-ui/src/components/package/process-designer/plugins/palette/index.js: -------------------------------------------------------------------------------- 1 | import PaletteModule from "diagram-js/lib/features/palette"; 2 | import CreateModule from "diagram-js/lib/features/create"; 3 | import SpaceToolModule from "diagram-js/lib/features/space-tool"; 4 | import LassoToolModule from "diagram-js/lib/features/lasso-tool"; 5 | import HandToolModule from "diagram-js/lib/features/hand-tool"; 6 | import GlobalConnectModule from "diagram-js/lib/features/global-connect"; 7 | import translate from "diagram-js/lib/i18n/translate"; 8 | 9 | import PaletteProvider from "./paletteProvider"; 10 | 11 | export default { 12 | __depends__: [PaletteModule, CreateModule, SpaceToolModule, LassoToolModule, HandToolModule, GlobalConnectModule, translate], 13 | __init__: ["paletteProvider"], 14 | paletteProvider: ["type", PaletteProvider] 15 | }; 16 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/config/flowable/listener/task/interaction/TaskBusinessRabbitMqCallListener.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.config.flowable.listener.task.interaction; 2 | 3 | import lombok.extern.slf4j.Slf4j; 4 | import org.flowable.engine.ProcessEngine; 5 | import org.flowable.engine.delegate.TaskListener; 6 | import org.flowable.task.service.delegate.DelegateTask; 7 | import org.springframework.beans.factory.annotation.Autowired; 8 | import org.springframework.stereotype.Component; 9 | 10 | @Component(value = "taskBusinessRabbitMqCallListener") 11 | @Slf4j 12 | public class TaskBusinessRabbitMqCallListener implements TaskListener { 13 | 14 | @Autowired 15 | private ProcessEngine processEngine; 16 | 17 | @Override 18 | public void notify(DelegateTask delegateTask) { 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /workflow-common/src/main/java/com/workflow/common/annotation/DataSource.java: -------------------------------------------------------------------------------- 1 | package com.workflow.common.annotation; 2 | 3 | import java.lang.annotation.Documented; 4 | import java.lang.annotation.ElementType; 5 | import java.lang.annotation.Inherited; 6 | import java.lang.annotation.Retention; 7 | import java.lang.annotation.RetentionPolicy; 8 | import java.lang.annotation.Target; 9 | import com.workflow.common.enums.DataSourceType; 10 | 11 | /** 12 | * 自定义多数据源切换注解 13 | * 14 | * 优先级:先方法,后类,如果方法覆盖了类上的数据源类型,以方法的为准,否则以类上的为准 15 | * 16 | * @author workflow 17 | */ 18 | @Target({ ElementType.METHOD, ElementType.TYPE }) 19 | @Retention(RetentionPolicy.RUNTIME) 20 | @Documented 21 | @Inherited 22 | public @interface DataSource 23 | { 24 | /** 25 | * 切换数据源名称 26 | */ 27 | public DataSourceType value() default DataSourceType.MASTER; 28 | } 29 | -------------------------------------------------------------------------------- /workflow-common/src/main/java/com/workflow/common/exception/job/TaskException.java: -------------------------------------------------------------------------------- 1 | package com.workflow.common.exception.job; 2 | 3 | /** 4 | * 计划策略异常 5 | * 6 | * @author workflow 7 | */ 8 | public class TaskException extends Exception 9 | { 10 | private static final long serialVersionUID = 1L; 11 | 12 | private Code code; 13 | 14 | public TaskException(String msg, Code code) 15 | { 16 | this(msg, code, null); 17 | } 18 | 19 | public TaskException(String msg, Code code, Exception nestedEx) 20 | { 21 | super(msg, nestedEx); 22 | this.code = code; 23 | } 24 | 25 | public Code getCode() 26 | { 27 | return code; 28 | } 29 | 30 | public enum Code 31 | { 32 | TASK_EXISTS, NO_TASK_EXISTS, TASK_ALREADY_STARTED, UNKNOWN, CONFIG_ERROR, TASK_NODE_NOT_AVAILABLE 33 | } 34 | } -------------------------------------------------------------------------------- /workflow-form/src/main/java/com/workflow/form/center/service/impl/WorkFlowFormModelInfoServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.workflow.form.center.service.impl; 2 | 3 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 4 | import com.workflow.form.center.domain.entity.WorkFlowFormModelInfo; 5 | import com.workflow.form.center.mapper.WorkFlowFormModelInfoMapper; 6 | import com.workflow.form.center.service.WorkFlowFormModelInfoService; 7 | import lombok.extern.slf4j.Slf4j; 8 | import org.springframework.stereotype.Service; 9 | 10 | /** 11 | * 表单模型信息表(WorkFlowFormModelInfo)表服务实现类 12 | * 13 | * @author 土豆仙 14 | * @since 2021-07-29 10:55:18 15 | */ 16 | @Slf4j 17 | @Service 18 | public class WorkFlowFormModelInfoServiceImpl extends ServiceImpl implements WorkFlowFormModelInfoService { 19 | 20 | } 21 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/service/impl/WorkFlowServiceGuideServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.service.impl; 2 | 3 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 4 | import com.workflow.process.center.domain.entity.WorkFlowServiceGuide; 5 | import com.workflow.process.center.mapper.WorkFlowServiceGuideMapper; 6 | import com.workflow.process.center.service.WorkFlowServiceGuideService; 7 | import lombok.extern.slf4j.Slf4j; 8 | import org.springframework.stereotype.Service; 9 | 10 | /** 11 | * 服务指南配置(WorkFlowServiceGuide)表服务实现类 12 | * 13 | * @author 土豆仙 14 | * @since 2021-07-03 09:34:58 15 | */ 16 | @Slf4j 17 | @Service 18 | public class WorkFlowServiceGuideServiceImpl extends ServiceImpl implements WorkFlowServiceGuideService { 19 | 20 | } 21 | -------------------------------------------------------------------------------- /workflow-ui/src/components/tinymce/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "form-gen-tinymce", 3 | "version": "1.0.0", 4 | "description": "富文本编辑器tinymce的一个vue版本封装。使用cdn动态脚本引入的方式加载。", 5 | "main": "lib/form-gen-tinymce.umd.js", 6 | "directories": { 7 | "example": "example" 8 | }, 9 | "scripts": { 10 | "test": "echo \"Error: no test specified\" && exit 1" 11 | }, 12 | "repository": { 13 | "type": "git", 14 | "url": "git+https://github.com/JakHuang/form-generator.git" 15 | }, 16 | "keywords": [ 17 | "tinymce-vue" 18 | ], 19 | "dependencies": { 20 | "throttle-debounce": "^2.1.0" 21 | }, 22 | "author": "jakHuang", 23 | "license": "MIT", 24 | "bugs": { 25 | "url": "https://github.com/JakHuang/form-generator/issues" 26 | }, 27 | "homepage": "https://github.com/JakHuang/form-generator/blob/dev/src/components/tinymce" 28 | } 29 | -------------------------------------------------------------------------------- /workflow-ui/src/api/dict.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | // 字典项-分类 3 | export function getCategoryDict() { 4 | return request({ 5 | url: '/workFlowCategory/list', 6 | method: 'get' 7 | }) 8 | } 9 | 10 | // 字典项-部门 11 | export function getDeptDict() { 12 | return request({ 13 | url: '/workFlowDepts/selectAll', 14 | method: 'get' 15 | }) 16 | } 17 | 18 | // 字典项-租户 19 | export function getTenantDict() { 20 | return request({ 21 | url: '/workFlowTenant/list', 22 | method: 'get' 23 | }) 24 | } 25 | 26 | // 字典项-待办人列表 27 | export const getToDoUsers = () => { 28 | return request({ 29 | url: '/flowable/workBench/findToDoUsers', 30 | method: 'get' 31 | }) 32 | } 33 | 34 | export function getFormCategoryDict() { 35 | return request({ 36 | url: '/workFlowFormCategory/list', 37 | method: 'get' 38 | }) 39 | } 40 | -------------------------------------------------------------------------------- /workflow-ui/src/store/getters.js: -------------------------------------------------------------------------------- 1 | const getters = { 2 | sidebar: state => state.app.sidebar, 3 | size: state => state.app.size, 4 | device: state => state.app.device, 5 | visitedViews: state => state.tagsView.visitedViews, 6 | cachedViews: state => state.tagsView.cachedViews, 7 | token: state => state.user.token, 8 | avatar: state => state.user.avatar, 9 | name: state => state.user.name, 10 | introduction: state => state.user.introduction, 11 | roles: state => state.user.roles, 12 | permissions: state => state.user.permissions, 13 | permission_routes: state => state.permission.routes, 14 | topbarRouters:state => state.permission.topbarRouters, 15 | defaultRoutes:state => state.permission.defaultRoutes, 16 | sidebarRouters:state => state.permission.sidebarRouters, 17 | modelSelect: state => state.modelSelect 18 | } 19 | export default getters 20 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/service/impl/WorkFlowListenerParamServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.service.impl; 2 | 3 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 4 | import com.workflow.process.center.domain.entity.WorkFlowListenerParam; 5 | import com.workflow.process.center.mapper.WorkFlowListenerParamMapper; 6 | import com.workflow.process.center.service.WorkFlowListenerParamService; 7 | import lombok.extern.slf4j.Slf4j; 8 | import org.springframework.stereotype.Service; 9 | 10 | /** 11 | * 流程监听器(WorkFlowListenerParam)表服务实现类 12 | * 13 | * @author 土豆仙 14 | * @since 2021-08-23 15:16:00 15 | */ 16 | @Slf4j 17 | @Service 18 | public class WorkFlowListenerParamServiceImpl extends ServiceImpl implements WorkFlowListenerParamService { 19 | 20 | } 21 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/service/impl/WorkFlowServiceCollectServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.service.impl; 2 | 3 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 4 | import com.workflow.process.center.domain.entity.WorkFlowServiceCollect; 5 | import com.workflow.process.center.mapper.WorkFlowServiceCollectMapper; 6 | import com.workflow.process.center.service.WorkFlowServiceCollectService; 7 | import lombok.extern.slf4j.Slf4j; 8 | import org.springframework.stereotype.Service; 9 | 10 | /** 11 | * 服务收藏表(WorkFlowServiceCollect)表服务实现类 12 | * 13 | * @author 土豆仙 14 | * @since 2021-07-03 09:34:31 15 | */ 16 | @Slf4j 17 | @Service 18 | public class WorkFlowServiceCollectServiceImpl extends ServiceImpl implements WorkFlowServiceCollectService { 19 | 20 | } 21 | -------------------------------------------------------------------------------- /workflow-ui/src/icons/svg/row.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /workflow-ui/src/assets/icons/svg/row.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /workflow-ui/src/components/package/refactor/components/expression/dict.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @Author: xueyan 3 | * @Date: 2021-09-01 14:32:17 4 | * @LastEditTime: 2021-09-01 14:35:23 5 | * @LastEditors: Please set LastEditors 6 | * @Description: 流程表达式字典 7 | * @FilePath: /flow-template-front/src/views/processManagement/processExpression/dict.js 8 | */ 9 | 10 | export default { 11 | computed: { 12 | dict() { 13 | return { 14 | systemExpression: [ 15 | { 16 | label: '是', 17 | value: 0 18 | }, 19 | { 20 | label: '否', 21 | value: 1 22 | } 23 | ] 24 | } 25 | } 26 | }, 27 | methods: { 28 | formatterSystemExpression(row, column, cellValue) { 29 | return this.dict.systemExpression.find(item => item.value === cellValue)?.label ?? '' 30 | }, 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /workflow-ui/src/views/processCore/processService/processExpression/dict.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @Author: xueyan 3 | * @Date: 2021-09-01 14:32:17 4 | * @LastEditTime: 2021-09-01 14:35:23 5 | * @LastEditors: Please set LastEditors 6 | * @Description: 流程表达式字典 7 | * @FilePath: /flow-template-front/src/views/processManagement/processExpression/dict.js 8 | */ 9 | 10 | export default { 11 | computed: { 12 | dict() { 13 | return { 14 | systemExpression: [ 15 | { 16 | label: '是', 17 | value: 0 18 | }, 19 | { 20 | label: '否', 21 | value: 1 22 | } 23 | ] 24 | } 25 | } 26 | }, 27 | methods: { 28 | formatterSystemExpression(row, column, cellValue) { 29 | return this.dict.systemExpression.find(item => item.value === cellValue)?.label ?? '' 30 | }, 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /workflow-center/src/main/java/com/workflow/process/center/service/impl/WorkFlowModelReFormServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.workflow.process.center.service.impl; 2 | 3 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 4 | import com.workflow.process.center.domain.entity.WorkFlowModelReForm; 5 | import com.workflow.process.center.mapper.WorkFlowModelReFormMapper; 6 | import com.workflow.process.center.service.WorkFlowModelReFormService; 7 | import lombok.extern.slf4j.Slf4j; 8 | import org.springframework.stereotype.Service; 9 | 10 | /** 11 | * 流程模型关联表单(先只控制到表级读写权限=》后期再扩展到表内字段的读写权限)(WorkFlowModelReForm)表服务实现类 12 | * 13 | * @author 土豆仙 14 | * @since 2021-07-29 09:59:11 15 | */ 16 | @Slf4j 17 | @Service 18 | public class WorkFlowModelReFormServiceImpl extends ServiceImpl implements WorkFlowModelReFormService { 19 | 20 | } 21 | -------------------------------------------------------------------------------- /workflow-framework/src/main/java/com/workflow/framework/datasource/DynamicDataSource.java: -------------------------------------------------------------------------------- 1 | package com.workflow.framework.datasource; 2 | 3 | import java.util.Map; 4 | import javax.sql.DataSource; 5 | import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource; 6 | 7 | /** 8 | * 动态数据源 9 | * 10 | * @author workflow 11 | */ 12 | public class DynamicDataSource extends AbstractRoutingDataSource 13 | { 14 | public DynamicDataSource(DataSource defaultTargetDataSource, Map targetDataSources) 15 | { 16 | super.setDefaultTargetDataSource(defaultTargetDataSource); 17 | super.setTargetDataSources(targetDataSources); 18 | super.afterPropertiesSet(); 19 | } 20 | 21 | @Override 22 | protected Object determineCurrentLookupKey() 23 | { 24 | return DynamicDataSourceContextHolder.getDataSourceType(); 25 | } 26 | } -------------------------------------------------------------------------------- /workflow-ui/src/assets/icons/svg/monitor.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /workflow-ui/src/components/iFrame/index.vue: -------------------------------------------------------------------------------- 1 |