Пример #1
0
        /// <summary>
        /// This function identifies the SCC (from vClus) in the vResultMod, then groups it and therafter combines it with other models in the vResultMod and return it as a cWfmCollection
        /// </summary>
        /// <param name="components"></param>
        /// <param name="clusters"></param>
        /// <param name="data"></param>
        /// <param name="name"></param>
        /// <returns></returns>
        private static List <WorkflowComponent> CreateSCCs(WorkflowComponent[] components, List <Cluster> clusters, List <Data> data, string name)
        {
            var vResultSub = new List <WorkflowComponent>();

            for (int c = 0; c < clusters.Count; c++)
            {
                Cluster cluster = clusters[c];
                if (cluster.Count == 1)
                {
                    vResultSub.Add(components[cluster[0]]);
                }
                else
                {
                    var sccComponents = new List <WorkflowComponent>();
                    foreach (int r in cluster)
                    {
                        sccComponents.Add(components[r]);
                    }
                    (List <Data> inputs, List <Data> outputs) = LibishMatrixCalculators.GetInputOutputs(sccComponents, data);

                    // Set inputs and outputs of this scc to
                    var solvers = new List <ISolver>()
                    {
                        new FixedPointSolver()
                    };
                    string sccName = Workflow.GetSCCWorkflowName(name, components, sccComponents);
                    var    scc2    = new WorkflowSCC(sccName, "", inputs, outputs, sccComponents, sccComponents, solvers);

                    vResultSub.Add(scc2);
                }
            }
            return(vResultSub);
        }