{
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 |
2 |
3 |
4 |
5 |
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 |
2 |
3 |
9 |
10 |
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