Browse Source

使用feign调用flowable接口

lizhenhao 2 năm trước cách đây
mục cha
commit
708825c406

+ 34 - 0
jeeplus-api/jeeplus-system-api/src/main/java/com/jeeplus/flowable/factory/FlowableApiFallbackFactory.java

@@ -0,0 +1,34 @@
+package com.jeeplus.flowable.factory;
+
+import com.jeeplus.flowable.feign.IFlowableApi;
+import com.jeeplus.mail.feign.IMailApi;
+import com.jeeplus.sys.service.dto.UserDTO;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.cloud.openfeign.FallbackFactory;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * 流程服务降级处理
+ */
+@Slf4j
+@Component
+public class FlowableApiFallbackFactory implements FallbackFactory <IFlowableApi> {
+
+    @Override
+    public IFlowableApi create(Throwable throwable) {
+        log.error ( "流程服务调用失败:{}", throwable.getMessage ( ) );
+        return new IFlowableApi() {
+            @Override
+            public List<String> getTaskAuditUsers(String taskId) {
+                return null;
+            }
+
+            @Override
+            public String getCurrentTaskName(String processInstanceId) {
+                return null;
+            }
+        };
+    }
+}

+ 32 - 0
jeeplus-api/jeeplus-system-api/src/main/java/com/jeeplus/flowable/feign/IFlowableApi.java

@@ -0,0 +1,32 @@
+package com.jeeplus.flowable.feign;
+
+import com.jeeplus.common.constant.AppNameConstants;
+import com.jeeplus.flowable.factory.FlowableApiFallbackFactory;
+import com.jeeplus.sys.factory.DictApiFallbackFactory;
+import com.jeeplus.sys.service.dto.UserDTO;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.List;
+
+
+@FeignClient(contextId = "flowableApi", name = AppNameConstants.APP_FLOWABLE_SERVICE, fallbackFactory = FlowableApiFallbackFactory.class)
+public interface IFlowableApi {
+    /**
+     * 获取当前节点审核人
+     * @param taskId
+     * @return
+     */
+    @GetMapping(value = "/flowable/task/getTaskAuditUsers")
+    List <String> getTaskAuditUsers(@RequestParam(value = "taskId") String taskId);
+
+    /**
+     * 获取当前节点名称
+     * @param processInstanceId
+     * @return
+     */
+    @GetMapping(value = "/flowable/task/getCurrentTaskName")
+    String getCurrentTaskName(@RequestParam(value = "processInstanceId") String processInstanceId);
+
+}

+ 4 - 0
jeeplus-common/jeeplus-common-core/src/main/java/com/jeeplus/common/constant/AppNameConstants.java

@@ -13,4 +13,8 @@ public interface AppNameConstants {
      * 文件服务
      */
     String APP_FILE_SERVICE = "jeeplus-file";
+    /**
+     * 流程服务
+     */
+    String APP_FLOWABLE_SERVICE = "jeeplus-flowable";
 }

+ 10 - 0
jeeplus-modules/jeeplus-flowable/src/main/java/com/jeeplus/flowable/controller/FlowableTaskController.java

@@ -365,5 +365,15 @@ public class FlowableTaskController {
         return ResponseEntity.ok ( "催办成功!" );
     }
 
+    @GetMapping("getTaskAuditUsers")
+    public List<String> getTaskAuditUsers(String taskId) {
+        return flowTaskService.getTaskAuditUsers(taskId);
+    }
+
+    @GetMapping("getCurrentTaskName")
+    public String getCurrentTaskName(String processInstanceId) {
+        return flowTaskService.getCurrentTaskName(processInstanceId);
+    }
+
 
 }

+ 50 - 0
jeeplus-modules/jeeplus-flowable/src/main/java/com/jeeplus/flowable/service/FlowTaskService.java

@@ -807,4 +807,54 @@ public class FlowTaskService {
         return task;
     }
 
+    /**
+     * 获取当前节点审核人id信息集合
+     * @param taskId
+     * @return
+     */
+    public List<String> getTaskAuditUsers(String taskId) {
+        List<String> assignList = Lists.newArrayList ();
+        //获取当前节点审核人id信息集合
+        taskService.getIdentityLinksForTask ( taskId ).forEach ( identityLink -> {
+            assignList.add ( identityLink.getUserId () );
+        } );
+        return assignList;
+    }
+
+    /**
+     * 获取当前节点信息
+     * @param processInstanceId
+     * @return
+     */
+    public FlowNode getCurrentTask(String processInstanceId){
+        //当前任务信息
+        Task task =taskService.createTaskQuery().processInstanceId(processInstanceId).active().singleResult();
+
+        if(task!=null) {
+            //获取流程发布Id信息
+            String definitionId = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult().getProcessDefinitionId();
+            //获取bpm对象
+            BpmnModel bpmnModel = SpringUtil.getBean (RepositoryService.class).getBpmnModel(definitionId);
+            //传节点定义key 获取当前节点
+            FlowNode flowNode = (FlowNode) bpmnModel.getFlowElement(task.getTaskDefinitionKey());
+            return flowNode;
+        }else{
+            return null;
+        }
+
+    }
+
+    /**
+     * 获取当前节点名称
+     * @param processInstanceId
+     * @return
+     */
+    public String getCurrentTaskName(String processInstanceId){
+        FlowNode currentTask = getCurrentTask(processInstanceId);
+        if (Objects.nonNull(currentTask)) {
+            return currentTask.getName();
+        }
+        return "";
+    }
+
 }