Beispiel #1
0
 public void ExtractData(RestAPIMeasurments i_measurments)
 {
     measurments = i_measurments;
     getPolicyRulesAndObjectives();
     getService();
     getTimeDependencies();
     getMSTServices();
     //TODO: here is performed a query to bring the Dictionary for SA duration fields.
     //TODO: Since this is a custom setting it cannot be queried. This must be done in MP
     getSTMs();
     getServiceParentInformation();
     getVisitingHours();
     getCandidates();
     getUnlicensedUsers();
     getAdditionalObjects();
 }
        public static string ProcessRequest(string i_RequestBody)
        {
            SFDCScheduleRequest request;

            request = ParseRequestString(i_RequestBody);

            connectToSF(request);

            string header = "\n~~~~~~~~ REST API ~~~~~~~~";

            m_DataProcessor = new DataProcessor(m_FSLClient, request);

            Stopwatch watch = new Stopwatch();

            watch.Start();
            RestAPIMeasurments measures = new RestAPIMeasurments();

            m_DataProcessor.ExtractData(measures);
            watch.Stop();
            long elapsedTime = watch.ElapsedMilliseconds;

            watch.Reset();

            for (int i = 0; i < 99; i++)
            {
                Stopwatch watchExtractData = new Stopwatch();
                watchExtractData.Start();
                RestAPIMeasurments currMeasures = new RestAPIMeasurments();
                m_DataProcessor.ExtractData(currMeasures);
                watchExtractData.Stop();
                mergeMeasures(measures, currMeasures);
                elapsedTime += watchExtractData.ElapsedMilliseconds;
                watchExtractData.Reset();
            }

            measures.updateMesurments();
            string finalMeasures = JsonConvert.SerializeObject(measures.getAverage(), Formatting.Indented);

            string log = header + "\nExtraction of data by REST API took (average of 100 calls): " + (elapsedTime / 100) +
                         " ms\nMeasurements per query (average of 100 calls):\n" + finalMeasures + "\n\n";

            LambdaLogger.Log(log);
            //LambdaLogger.Log("Whole process by REST API including login to SF took: " + (watchExtractData.ElapsedMilliseconds + m_SFLoginTime) +" ms\n");
            return(log);
        }
        private static void mergeMeasures(RestAPIMeasurments measures, RestAPIMeasurments currMeasures)
        {
            measures.getMeasurments[Measures.SA_PROCESSING]               += currMeasures.getMeasurments[Measures.SA_PROCESSING];
            measures.getMeasurments[Measures.DEPENDENCIES_PROCESSING]     += currMeasures.getMeasurments[Measures.DEPENDENCIES_PROCESSING];
            measures.getMeasurments[Measures.MST_PROCESSING]              += currMeasures.getMeasurments[Measures.MST_PROCESSING];
            measures.getMeasurments[Measures.STM_PROCESSING]              += currMeasures.getMeasurments[Measures.STM_PROCESSING];
            measures.getMeasurments[Measures.PARENT_PROCESSING]           += currMeasures.getMeasurments[Measures.PARENT_PROCESSING];
            measures.getMeasurments[Measures.VISITING_HOURS_PROCESSING]   += currMeasures.getMeasurments[Measures.VISITING_HOURS_PROCESSING];
            measures.getMeasurments[Measures.RESOURCES_PROCESSING]        += currMeasures.getMeasurments[Measures.RESOURCES_PROCESSING];
            measures.getMeasurments[Measures.UNLICENSED_USERS_PROCESSING] += currMeasures.getMeasurments[Measures.UNLICENSED_USERS_PROCESSING];
            measures.getMeasurments[Measures.CALENDARS_PROCESSING]        += currMeasures.getMeasurments[Measures.CALENDARS_PROCESSING];

            measures.getMeasurments[Measures.SA_QUERY]               += currMeasures.getMeasurments[Measures.SA_QUERY];
            measures.getMeasurments[Measures.DEPENDENCIES_QUERY]     += currMeasures.getMeasurments[Measures.DEPENDENCIES_QUERY];
            measures.getMeasurments[Measures.STM_QUERY]              += currMeasures.getMeasurments[Measures.STM_QUERY];
            measures.getMeasurments[Measures.PARENT_QUERY]           += currMeasures.getMeasurments[Measures.PARENT_QUERY];
            measures.getMeasurments[Measures.RESOURCES_QUERY]        += currMeasures.getMeasurments[Measures.RESOURCES_QUERY];
            measures.getMeasurments[Measures.UNLICENSED_USERS_QUERY] += currMeasures.getMeasurments[Measures.UNLICENSED_USERS_QUERY];
            measures.getMeasurments[Measures.CALENDARS_QUERY]        += currMeasures.getMeasurments[Measures.CALENDARS_QUERY];

            measures.getMeasurments[Measures.OBJECTIVES_RULES_PARALLEL] += currMeasures.getMeasurments[Measures.OBJECTIVES_RULES_PARALLEL];
            measures.getMeasurments[Measures.ADITTIONAL_DATA_PARALLEL]  += currMeasures.getMeasurments[Measures.ADITTIONAL_DATA_PARALLEL];
        }