public IDataEntity ExecuteSession(IDataEntity globalEntity) { Session session; using (Stream stream = _rulebaseProvider.GetStream()) { session = _sessionBuilder.CreateOPASession(stream, globalEntity); } // XDS PRE if (ProduceXDS) { if (!XDSDirectorySetup) { XDSFilePath = XDSFolder + session.GetRulebase().GetBaseFileName(); Directory.CreateDirectory(XDSFilePath); XDSDirectorySetup = true; } // Format : XDSFolder\RulebaseName\file.xds var xdsFile = XDSFilePath + "\\PRE_" + globalEntity.Children .Where(c => c.EntityName == "Learner") .Select(g => g.Attributes.Single(k => k.Key == LearnRefNumberAttribute).Value.Value.ToString()) .SingleOrDefault() + ".xds"; using (FileWriter fileWriter = new FileWriter(xdsFile)) { SessionUtils.ExportSession(session, fileWriter); } } session.Think(); var outputGlobalInstance = session.GetGlobalEntityInstance(); var outputEntity = _dataEntityBuilder.CreateOPADataEntity(outputGlobalInstance, null); return(outputEntity); }