public static SAFeSWL_Architecture readArchitecture(string arch_desc_xml)
        {
            string filename = System.IO.Path.GetTempFileName();

            File.WriteAllText(filename, arch_desc_xml);
            SAFeSWL_Architecture arch_desc = CoreServicesUtil.DeserializeArchitecture_SAFeSWL(filename);

            return(arch_desc);
        }
        public int openWorkflowSession(string arch_desc_xml)
        {
            int workflow_handle = WorkflowHandle;

            workflow_contract.Add(workflow_handle, new Dictionary <string, Instantiator.ComponentFunctorApplicationType> ());
            workflow_resolution.Add(workflow_handle, new Dictionary <string, string[]> ());
            workflow_platform_address.Add(workflow_handle, new Dictionary <string, string> ());
            workflow_base_binding_port.Add(workflow_handle, new Dictionary <string, int> ());
            workflow_nodes.Add(workflow_handle, new Dictionary <string, int> ());
            delayed_contracts.Add(workflow_handle, new List <string> ());

            SAFeSWL_Architecture arch_desc = CoreServicesUtil.readArchitecture(arch_desc_xml);

            active_workflows.Add(workflow_handle, arch_desc);

            SAFeSWL_Component[] cs = arch_desc.solution;
            foreach (SAFeSWL_Component c in cs)
            {
                if (c.contract != null && c.contract.Item is Instantiator.ComponentFunctorApplicationType)
                {
                    registerContract(workflow_handle, c.id_component, (Instantiator.ComponentFunctorApplicationType)c.contract.Item);
                }
                else if (c.contract != null && c.contract.Item is string) /* TODO: read from URI */ } {