Пример #1
0
        // This function will get triggered/executed when a new message is written
        // on an Azure Queue called queue.
        public static void ProcessQueueMessage([QueueTrigger(PnPPartnerPackSettings.StorageQueueName)] ContinousJobItem content, TextWriter log)
        {
            // Attach TextWriter log to Trace
            // https://blog.josequinto.com/2017/02/16/enable-azure-invocation-log-at-a-web-job-function-level-for-pnp-provisioning/
            TextWriterTraceListener twtl = new TextWriterTraceListener(log);

            twtl.Name = "ContinousJobLogger";
            string[] notShownWords = new string[] { "TokenCache", "AcquireTokenHandlerBase" };
            twtl.Filter = new RemoveWordsFilter(notShownWords);
            Trace.Listeners.Add(twtl);
            Trace.AutoFlush = true;

            log.WriteLine(String.Format("Found Job: {0}", content.JobId));

            // Get the info about the Provisioning Job
            ProvisioningJobInformation jobInfo =
                ProvisioningRepositoryFactory.Current.GetProvisioningJob(content.JobId, true);

            // Get a reference to the Provisioning Job
            ProvisioningJob job = jobInfo.JobFile.FromJsonStream(jobInfo.Type);

            if (PnPPartnerPackSettings.ContinousJobHandlers.ContainsKey(job.GetType()))
            {
                PnPPartnerPackSettings.ContinousJobHandlers[job.GetType()].RunJob(job);
            }

            log.WriteLine("Completed Job execution");

            // Remove Trace Listener
            Trace.Listeners.Remove(twtl);
        }
        private static ProvisioningJobInformation PrepareJobInformationFromSharePoint(ClientContext context, ListItem jobItem, Boolean includeFileStream = false)
        {
            ProvisioningJobInformation resultItem = new ProvisioningJobInformation();

            resultItem.JobId        = Guid.Parse(((String)jobItem["FileLeafRef"]).Substring(0, ((String)jobItem["FileLeafRef"]).Length - 4));
            resultItem.Title        = (String)jobItem[PnPPartnerPackConstants.TitleField];
            resultItem.Status       = (ProvisioningJobStatus)Enum.Parse(typeof(ProvisioningJobStatus), (String)jobItem[PnPPartnerPackConstants.PnPProvisioningJobStatus]);
            resultItem.ErrorMessage = (String)jobItem[PnPPartnerPackConstants.PnPProvisioningJobError];
            resultItem.Type         = (String)jobItem[PnPPartnerPackConstants.PnPProvisioningJobType];
            resultItem.Owner        = ((FieldUserValue)jobItem[PnPPartnerPackConstants.PnPProvisioningJobOwner]).LookupValue;

            if (includeFileStream)
            {
                resultItem.JobFile = GetProvisioningJobStreamFromSharePoint(context, jobItem);
            }

            return(resultItem);
        }
Пример #3
0
        // This function will get triggered/executed when a new message is written
        // on an Azure Queue called queue.
        public static void ProcessQueueMessage([QueueTrigger(PnPPartnerPackSettings.StorageQueueName)] ContinousJobItem content, TextWriter log)
        {
            log.WriteLine(String.Format("Found Job: {0}", content.JobId));

            // Get the info about the Provisioning Job
            ProvisioningJobInformation jobInfo =
                ProvisioningRepositoryFactory.Current.GetProvisioningJob(content.JobId, true);

            // Get a reference to the Provisioning Job
            ProvisioningJob job = jobInfo.JobFile.FromJsonStream(jobInfo.Type);

            if (PnPPartnerPackSettings.ContinousJobHandlers.ContainsKey(job.GetType()))
            {
                PnPPartnerPackSettings.ContinousJobHandlers[job.GetType()].RunJob(job);
            }

            log.WriteLine("Completed Job execution");
        }