public static async Task <HttpResponseMessage> RunClassificationForQueryCommand( [HttpTrigger(AuthorizationLevel.Function, "POST", Route = @"CQRS/RunClassificationForQuery/{queryIdentifier}")] HttpRequestMessage req, string queryIdentifier ) { #region Tracing telemetry Activity.Current.AddTag("Query Identifier", queryIdentifier); #endregion // 1 - Read the classifierRequestData from the body ClassifierRequestedEventGridEventData data = await req.Content.ReadAsAsync <ClassifierRequestedEventGridEventData>(); if (data != null) { if (string.IsNullOrWhiteSpace(data.InstanceKey)) { data.InstanceKey = queryIdentifier; } await RunClassificationForQuery(data); return(req.CreateResponse(System.Net.HttpStatusCode.OK)); } else { // The classification cannot be run if there is no body supplied return(req.CreateResponse(System.Net.HttpStatusCode.BadRequest, "The classification details were not correctly specified in the request body")); } }
public static async Task OnQueryClassificationHandler([EventGridTrigger] EventGridEvent eventGridEvent) { if (eventGridEvent != null) { // Get the data from the event that describes what classification is requested ClassifierRequestedEventGridEventData classifierRequestData = eventGridEvent.Data as ClassifierRequestedEventGridEventData; await ClassifierHandlerFunctions.RunClassificationForQuery(classifierRequestData); } }
public static async Task OnCommandClassificationHandler([EventGridTrigger] EventGridEvent eventGridEvent) { if (eventGridEvent != null) { // Get the data from the event that describes what classification is requested ClassifierRequestedEventGridEventData classifierRequestData = eventGridEvent.Data.ToObjectFromJson <ClassifierRequestedEventGridEventData>(); await ClassifierHandlerFunctions.RunClassificationForCommand(classifierRequestData); } }
/// <summary> /// A classification has been requested in processing a query. /// This function will run it and attach the result back to the query /// event stream when complete. /// </summary> public static async Task RunClassificationForQuery( ClassifierRequestedEventGridEventData classifierRequestData) { if (classifierRequestData != null) { // handle the classifier request ClassificationResponse response = null; Classification classifier = new Classification( new ClassificationAttribute( classifierRequestData.ClassifierRequest.DomainName, classifierRequestData.ClassifierRequest.EntityTypeName, classifierRequestData.ClassifierRequest.InstanceKey, classifierRequestData.ClassifierRequest.ClassifierTypeName )); if (classifier != null) { if (_classificationMap == null) { _classificationMap = ClassificationMaps.CreateDefaultClassificationMaps(); } // get the classifier class - must implement TClassification : IClassification, new() IClassification classificationToRun = _classificationMap.CreateClassificationClass(classifier.ClassifierTypeName); if (classificationToRun != null) { response = await classifier.Classify(classificationToRun, null); } } if (response != null) { // and post the result back to the query that asked for it Query qrySource = new Query(classifierRequestData.DomainName, classifierRequestData.EntityTypeName, classifierRequestData.InstanceKey); if (qrySource != null) { await qrySource.PostClassifierResponse(classifierRequestData.ClassifierRequest.DomainName, classifierRequestData.ClassifierRequest.EntityTypeName, classifierRequestData.ClassifierRequest.InstanceKey, classifierRequestData.ClassifierRequest.ClassifierTypeName, response.AsOfDate, classifierRequestData.ClassifierRequest.CorrelationIdentifier, response.AsOfSequence, response.Result ); } } } }
public static async Task OnQueryClassificationHandler([EventGridTrigger] EventGridEvent eventGridEvent) { if (eventGridEvent != null) { // Get the data from the event that describes what classification is requested ClassifierRequestedEventGridEventData classifierRequestData = eventGridEvent.Data as ClassifierRequestedEventGridEventData; if (classifierRequestData != null) { // handle the classifier request ClassificationResponse response = null; Classification classifier = new Classification( new ClassificationAttribute( classifierRequestData.ClassifierRequest.DomainName, classifierRequestData.ClassifierRequest.EntityTypeName, classifierRequestData.ClassifierRequest.InstanceKey, classifierRequestData.ClassifierRequest.ClassifierTypeName )); if (classifier != null) { // get the classifier class - must implement TClassification : IClassification, new() IClassification classificationToRun = Classification.GetClassifierByName(classifier.ClassifierTypeName); if (classificationToRun != null) { response = await classifier.Classify(classificationToRun, null); } } if (response != null) { // and post the result back to the query that asked for it Query qrySource = new Query(classifierRequestData.DomainName, classifierRequestData.EntityTypeName, classifierRequestData.InstanceKey); if (qrySource != null) { await qrySource.PostClassifierResponse(classifierRequestData.ClassifierRequest.DomainName, classifierRequestData.ClassifierRequest.EntityTypeName, classifierRequestData.ClassifierRequest.InstanceKey, classifierRequestData.ClassifierRequest.ClassifierTypeName, response.AsOfDate, classifierRequestData.ClassifierRequest.CorrelationIdentifier, response.AsOfSequence, response.Result ); } } } } }