fix: copy or move app workflow to library, dependencies on other comp… (#720)
This commit is contained in:
parent
6b60c07c22
commit
ffbc108875
|
|
@ -253,7 +253,7 @@ type FCParam struct {
|
||||||
RequestParameters []*workflow.APIParameter `json:"request_params"`
|
RequestParameters []*workflow.APIParameter `json:"request_params"`
|
||||||
ResponseParameters []*workflow.APIParameter `json:"response_params"`
|
ResponseParameters []*workflow.APIParameter `json:"response_params"`
|
||||||
} `json:"fc_setting,omitempty"`
|
} `json:"fc_setting,omitempty"`
|
||||||
}
|
} `json:"pluginList,omitempty"`
|
||||||
} `json:"pluginFCParam,omitempty"`
|
} `json:"pluginFCParam,omitempty"`
|
||||||
|
|
||||||
KnowledgeFCParam *struct {
|
KnowledgeFCParam *struct {
|
||||||
|
|
|
||||||
|
|
@ -1452,14 +1452,14 @@ func (i *impl) GetWorkflowDependenceResource(ctx context.Context, workflowID int
|
||||||
case entity.NodeTypeLLM:
|
case entity.NodeTypeLLM:
|
||||||
if node.Data.Inputs.FCParam != nil && node.Data.Inputs.FCParam.PluginFCParam != nil {
|
if node.Data.Inputs.FCParam != nil && node.Data.Inputs.FCParam.PluginFCParam != nil {
|
||||||
for idx := range node.Data.Inputs.FCParam.PluginFCParam.PluginList {
|
for idx := range node.Data.Inputs.FCParam.PluginFCParam.PluginList {
|
||||||
pl := node.Data.Inputs.FCParam.PluginFCParam.PluginList[idx]
|
if node.Data.Inputs.FCParam.PluginFCParam.PluginList[idx].IsDraft {
|
||||||
pluginID, err := strconv.ParseInt(pl.PluginID, 10, 64)
|
pl := node.Data.Inputs.FCParam.PluginFCParam.PluginList[idx]
|
||||||
if err != nil {
|
pluginID, err := strconv.ParseInt(pl.PluginID, 10, 64)
|
||||||
return err
|
if err != nil {
|
||||||
}
|
return err
|
||||||
|
}
|
||||||
if pl.PluginVersion == "0" {
|
|
||||||
ds.PluginIDs = append(ds.PluginIDs, pluginID)
|
ds.PluginIDs = append(ds.PluginIDs, pluginID)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -1476,29 +1476,63 @@ func (i *impl) GetWorkflowDependenceResource(ctx context.Context, workflowID int
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if node.Data.Inputs.FCParam != nil && node.Data.Inputs.FCParam.WorkflowFCParam != nil {
|
||||||
|
for idx := range node.Data.Inputs.FCParam.WorkflowFCParam.WorkflowList {
|
||||||
|
if node.Data.Inputs.FCParam.WorkflowFCParam.WorkflowList[idx].IsDraft {
|
||||||
|
wID, err := strconv.ParseInt(node.Data.Inputs.FCParam.WorkflowFCParam.WorkflowList[idx].WorkflowID, 10, 64)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
wfe, err := i.repo.GetEntity(ctx, &vo.GetPolicy{
|
||||||
|
ID: wID,
|
||||||
|
QType: plugin.FromDraft,
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
workflowToolCanvas := &vo.Canvas{}
|
||||||
|
err = sonic.UnmarshalString(wfe.Canvas, workflowToolCanvas)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = collectDependence(workflowToolCanvas.Nodes)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
case entity.NodeTypeSubWorkflow:
|
case entity.NodeTypeSubWorkflow:
|
||||||
wfID, err := strconv.ParseInt(node.Data.Inputs.WorkflowID, 10, 64)
|
if node.Data.Inputs.WorkflowVersion == "" {
|
||||||
if err != nil {
|
wfID, err := strconv.ParseInt(node.Data.Inputs.WorkflowID, 10, 64)
|
||||||
return err
|
if err != nil {
|
||||||
}
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
subWorkflow, err := i.repo.GetEntity(ctx, &vo.GetPolicy{
|
subWorkflow, err := i.repo.GetEntity(ctx, &vo.GetPolicy{
|
||||||
ID: wfID,
|
ID: wfID,
|
||||||
QType: plugin.FromDraft,
|
QType: plugin.FromDraft,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
subCanvas := &vo.Canvas{}
|
subCanvas := &vo.Canvas{}
|
||||||
err = sonic.UnmarshalString(subWorkflow.Canvas, subCanvas)
|
err = sonic.UnmarshalString(subWorkflow.Canvas, subCanvas)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
err = collectDependence(subCanvas.Nodes)
|
err = collectDependence(subCanvas.Nodes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -1718,6 +1752,7 @@ func replaceRelatedWorkflowOrExternalResourceInWorkflowNodes(nodes []*vo.Node, r
|
||||||
wf.WorkflowID = strconv.FormatInt(refWf.ID, 10)
|
wf.WorkflowID = strconv.FormatInt(refWf.ID, 10)
|
||||||
wf.WorkflowVersion = refWf.Version
|
wf.WorkflowVersion = refWf.Version
|
||||||
}
|
}
|
||||||
|
node.Data.Inputs.FCParam.WorkflowFCParam.WorkflowList[idx] = wf
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -1728,13 +1763,26 @@ func replaceRelatedWorkflowOrExternalResourceInWorkflowNodes(nodes []*vo.Node, r
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
toolID, err := strconv.ParseInt(pl.ApiId, 10, 64)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
if refPlugin, ok := related.PluginMap[pluginID]; ok {
|
if refPlugin, ok := related.PluginMap[pluginID]; ok {
|
||||||
|
tID, ok := related.PluginToolMap[toolID]
|
||||||
|
if ok {
|
||||||
|
pl.ApiId = strconv.FormatInt(tID, 10)
|
||||||
|
}
|
||||||
pl.PluginID = strconv.FormatInt(refPlugin.PluginID, 10)
|
pl.PluginID = strconv.FormatInt(refPlugin.PluginID, 10)
|
||||||
if refPlugin.PluginVersion != nil {
|
if refPlugin.PluginVersion != nil {
|
||||||
pl.PluginVersion = *refPlugin.PluginVersion
|
pl.PluginVersion = *refPlugin.PluginVersion
|
||||||
|
|
||||||
|
pl.IsDraft = false
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
node.Data.Inputs.FCParam.PluginFCParam.PluginList[idx] = pl
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue