From a8b7d4d0bc5f4f922eb3f64b91625b8a5a1b897e Mon Sep 17 00:00:00 2001 From: mr Date: Tue, 28 Apr 2026 13:24:25 +0200 Subject: [PATCH] debug service + dynamic --- models/resources/models.go | 8 ++++++-- models/workflow/workflow.go | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 2 deletions(-) diff --git a/models/resources/models.go b/models/resources/models.go index d012dd0..aeb9092 100755 --- a/models/resources/models.go +++ b/models/resources/models.go @@ -13,10 +13,10 @@ type ResourceSet struct { Workflows []string `bson:"workflows,omitempty" json:"workflows,omitempty"` NativeTool []string `bson:"native,omitempty" json:"native,omitempty"` Services []string `bson:"services,omitempty" json:"services,omitempty"` + Dynamics []string `bson:"dynamics,omitempty" json:"dynamics,omitempty"` // DynamicResources are stored inline — no DB collection, resolved at runtime via SetAllowedInstances. - DynamicResources []*DynamicResource `bson:"dynamic_resources,omitempty" json:"dynamic_resources,omitempty"` - + DynamicResources []*DynamicResource `bson:"-" json:"dynamic_resources,omitempty"` DataResources []*DataResource `bson:"-" json:"data_resources,omitempty"` StorageResources []*StorageResource `bson:"-" json:"storage_resources,omitempty"` ProcessingResources []*ProcessingResource `bson:"-" json:"processing_resources,omitempty"` @@ -33,6 +33,7 @@ func (r *ResourceSet) Clear() { r.ComputeResources = nil r.WorkflowResources = nil r.ServiceResources = nil + r.DynamicResources = nil } func (r *ResourceSet) Fill(request *tools.APIRequest) { @@ -44,6 +45,7 @@ func (r *ResourceSet) Fill(request *tools.APIRequest) { (&ProcessingResource{}): r.Processings, (&WorkflowResource{}): r.Workflows, (&ServiceResource{}): r.Services, + (&DynamicResource{}): r.Dynamics, } { for _, id := range v { d, _, e := k.GetAccessor(request).LoadOne(id) @@ -61,6 +63,8 @@ func (r *ResourceSet) Fill(request *tools.APIRequest) { r.WorkflowResources = append(r.WorkflowResources, d.(*WorkflowResource)) case *ServiceResource: r.ServiceResources = append(r.ServiceResources, d.(*ServiceResource)) + case *DynamicResource: + r.DynamicResources = append(r.DynamicResources, d.(*DynamicResource)) } } } diff --git a/models/workflow/workflow.go b/models/workflow/workflow.go index 4c07556..f3e58e0 100644 --- a/models/workflow/workflow.go +++ b/models/workflow/workflow.go @@ -97,7 +97,13 @@ func (d *Workflow) GetResources(dt tools.DataType) []resources.ResourceInterface itf = append(itf, d) } return itf + case tools.DYNAMIC_RESOURCE: + for _, d := range d.DynamicResources { + itf = append(itf, d) + } + return itf } + return itf } @@ -113,12 +119,16 @@ func (d *Workflow) ExtractFromPlantUML(plantUML multipart.File, request *tools.A d.Processings = []string{} d.Computes = []string{} d.Workflows = []string{} + d.Dynamics = []string{} + d.Services = []string{} d.DataResources = []*resources.DataResource{} d.StorageResources = []*resources.StorageResource{} d.ProcessingResources = []*resources.ProcessingResource{} d.ComputeResources = []*resources.ComputeResource{} d.WorkflowResources = []*resources.WorkflowResource{} + d.DynamicResources = []*resources.DynamicResource{} + d.ServiceResources = []*resources.ServiceResource{} d.Graph = graph.NewGraph() resourceCatalog := map[string]func() resources.ResourceInterface{ @@ -150,6 +160,16 @@ func (d *Workflow) ExtractFromPlantUML(plantUML multipart.File, request *tools.A }, } }, + "Service": func() resources.ResourceInterface { + return &resources.ServiceResource{ + AbstractInstanciatedResource: resources.AbstractInstanciatedResource[*resources.ServiceInstance]{ + Instances: []*resources.ServiceInstance{}, + }, + } + }, + "Dynamic": func() resources.ResourceInterface { + return &resources.DynamicResource{} + }, // WorkflowEvent creates a NativeTool of Kind=WORKFLOW_EVENT directly, // without DB lookup. It has no user-defined instance. "WorkflowEvent": func() resources.ResourceInterface { @@ -239,6 +259,8 @@ func (d *Workflow) ExtractFromPlantUML(plantUML multipart.File, request *tools.A d.generateResource(d.GetResources(tools.STORAGE_RESOURCE), request) d.generateResource(d.GetResources(tools.COMPUTE_RESOURCE), request) d.generateResource(d.GetResources(tools.WORKFLOW_RESOURCE), request) + d.generateResource(d.GetResources(tools.SERVICE_RESOURCE), request) + d.generateResource(d.GetResources(tools.DYNAMIC_RESOURCE), request) d.Graph.Items = graphVarName return d, nil } @@ -417,6 +439,14 @@ func (d *Workflow) getNewGraphItem(dataName string, resource resources.ResourceI d.Processings = append(d.Processings, resource.GetID()) d.ProcessingResources = append(d.ProcessingResources, resource.(*resources.ProcessingResource)) graphItem.Processing = resource.(*resources.ProcessingResource) + case "Service": + d.Services = append(d.Services, resource.GetID()) + d.ServiceResources = append(d.ServiceResources, resource.(*resources.ServiceResource)) + graphItem.Service = resource.(*resources.ServiceResource) + case "Dynamic": + d.Dynamics = append(d.Dynamics, resource.GetID()) + d.DynamicResources = append(d.DynamicResources, resource.(*resources.DynamicResource)) + graphItem.Dynamic = resource.(*resources.DynamicResource) case "WorkflowEvent": // The resource is already a *NativeTool with Kind=WORKFLOW_EVENT set by the // catalog factory. We use it directly without any DB lookup. @@ -448,6 +478,8 @@ func (d *Workflow) getNewInstance(dataName string, name string, peerID string) r return resources.NewStorageResourceInstance(name, peerID) case "ComputeUnit": return resources.NewComputeResourceInstance(name, peerID) + case "Service": + return resources.NewServiceInstance(name, peerID) default: return nil } @@ -821,6 +853,7 @@ func (w *Workflow) GetItemsByResources() map[tools.DataType]map[string][]string tools.PROCESSING_RESOURCE: func() []graph.GraphItem { return w.GetGraphItems(w.Graph.IsProcessing) }, tools.SERVICE_RESOURCE: func() []graph.GraphItem { return w.GetGraphItems(w.Graph.IsService) }, tools.WORKFLOW_RESOURCE: func() []graph.GraphItem { return w.GetGraphItems(w.Graph.IsWorkflow) }, + tools.DYNAMIC_RESOURCE: func() []graph.GraphItem { return w.GetGraphItems(w.Graph.IsDynamic) }, } for dt, meth := range dtMethodMap {