double.huang 5 年之前
父節點
當前提交
f8b16e6a9f
共有 5 個文件被更改,包括 82 次插入3 次删除
  1. 6 0
      controllers/gen/SysWfController_gen.go
  2. 24 1
      controllers/partial/SysWfController.go
  3. 7 0
      light-apiengine.xml
  4. 3 0
      routers/sys_wf_gen.go
  5. 42 2
      wfclient/client.go

+ 6 - 0
controllers/gen/SysWfController_gen.go

@@ -110,6 +110,12 @@ func (c *SysWfController) Recall(ctx *gin.Context) {
 	partial.SysWf_Recall(&entitys.CtrlContext{c.apiengine, ctx, db, c.apiengine.PlatformOrmEngine})
 }
 
+func (c *SysWfController) Interrupt(ctx *gin.Context) {
+	//
+	db := c.apiengine.BusinessOrmEngine[ctx.GetString("domain")]
+	partial.SysWf_Interrupt(&entitys.CtrlContext{c.apiengine, ctx, db, c.apiengine.PlatformOrmEngine})
+}
+
 // Designer
 // @Title Designer
 // @Description 修改流程定义

+ 24 - 1
controllers/partial/SysWfController.go

@@ -5,10 +5,11 @@ import (
 	//sysmodel "git.qianqiusoft.com/qianqiusoft/light-apiengine/models"
 	//sysutils "git.qianqiusoft.com/qianqiusoft/light-apiengine/utils"
 	"fmt"
+	"strconv"
+
 	"git.qianqiusoft.com/qianqiusoft/light-apiengine/models"
 	sysmodel "git.qianqiusoft.com/qianqiusoft/light-apiengine/models"
 	"git.qianqiusoft.com/qianqiusoft/light-apiengine/wfclient"
-	"strconv"
 	//__import_packages__
 )
 
@@ -161,6 +162,28 @@ func SysWf_Recall(c *entitys.CtrlContext) {
 	}
 }
 
+// _Interrupt
+// @Title _Interrupt
+// @Description 终止
+// @Param	instance_id      false  ""
+// @Success 200 {object} models.Account
+// @Failure 403 :id is empty
+func SysWf_Interrupt(c *entitys.CtrlContext) {
+	obj := map[string]interface{}{}
+	err := c.Ctx.Bind(&obj)
+	if err != nil {
+		c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
+		return
+	}
+	instanceId := fmt.Sprintf("%v", obj["instance_id"])
+	bytess, err := wfclient.Instance().Interrupt(instanceId, obj, c)
+	if err == nil {
+		c.Ctx.JSON(200, sysmodel.SysReturn{200, "", string(bytess)})
+	} else {
+		c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
+	}
+}
+
 // _Designer
 // @Title _Designer
 // @Description 修改流程定义

+ 7 - 0
light-apiengine.xml

@@ -840,6 +840,13 @@
 					<success ref="$sys_return" desc=""></success>
 					<failure ref="$sys_return" desc=""></failure>
 				</return>
+            </api>
+			<api name="interrupt" desc="终止" method="post">
+				<param name="instance_id" ></param>
+				<return>
+					<success ref="$sys_return" desc=""></success>
+					<failure ref="$sys_return" desc=""></failure>
+				</return>
 			</api>
 			<api name="designer" desc="修改流程定义" method="get">
 				<param name="define_id" ></param>

+ 3 - 0
routers/sys_wf_gen.go

@@ -40,6 +40,9 @@ func registerSysWfRouter(e *engine.ApiEngine) {
 	//v1.GET("/recall",ctrler.Recall)
 	v1.POST("/recall", ctrler.Recall)
 
+	//v1.GET("/recall",ctrler.Recall)
+	v1.POST("/interrupt", ctrler.Interrupt)
+
 	v1.GET("/designer", ctrler.Designer)
 	//v1.POST("/designer",ctrler.Designer)
 

+ 42 - 2
wfclient/client.go

@@ -6,11 +6,12 @@ import (
 	"encoding/xml"
 	"errors"
 	"fmt"
-	"git.qianqiusoft.com/qianqiusoft/light-apiengine/entitys"
-	"git.qianqiusoft.com/qianqiusoft/light-apiengine/utils"
 	"net/http"
 	"strconv"
 	"strings"
+
+	"git.qianqiusoft.com/qianqiusoft/light-apiengine/entitys"
+	"git.qianqiusoft.com/qianqiusoft/light-apiengine/utils"
 )
 
 type Filter struct {
@@ -493,3 +494,42 @@ func (w *WFClient) Recall(definedId string) ([]byte, error) {
 
 	return HttpClientInstance().post(url, params, nil)
 }
+
+//终止
+func (w *WFClient) Interrupt(definedId string, formData map[string]interface{}, c *entitys.CtrlContext) ([]byte, error) {
+	url := w.getFullUrl("/api/wf_instance/interrupt")
+	params := make(map[string]string)
+	params["instance_id"] = definedId
+	var RunRespInfo struct {
+		DefineId      string      `json:"define_id"`
+		InstanceId    string      `json:"instance_id"`
+		DefineName    string      `json:"define_name"`
+		InstanceName  string      `json:"instance_name"`
+		Choices       []*Choice   `json:"choices"`
+		Transition    *Transition `json:"transition"`
+		StepType      string      `json:"step_type"`
+		FormData      string      `json:"form_data"`
+		StepName      string      `json:"step_name"`
+		ActorType     string      `json:"actor_type"`
+		Executor      string      `json:"executor"`
+		StartCallback string      `json:"start_callback"`
+	}
+	bytess, err := HttpClientInstance().post(url, params, nil)
+	if err != nil {
+		return nil, err
+	}
+	callback, ok := w.callbackMap["interrupt"]
+	if ok {
+		callback(CallbackArg{
+			DefineId:     RunRespInfo.DefineId,
+			InstanceId:   definedId,
+			DefineName:   RunRespInfo.DefineName,
+			InstanceName: RunRespInfo.InstanceName,
+			FormData:     formData["form_data"].(string),
+			Executor:     RunRespInfo.Executor,
+			UserId:       w.userId,
+			Context:      c,
+		})
+	}
+	return bytess, err
+}