public override void HandleExecute(Common.workflow.ChainRequest request) { myRequest = (ButlerProcessRequest)request; _MediaServiceContext = new CloudMediaContext(myRequest.MediaAccountName, myRequest.MediaAccountKey); var locator = CreateStreamingLocator(myRequest.AssetId); }
public override void HandleCompensation(Common.workflow.ChainRequest request) { myRequest = (ButlerProcessRequest)request; string txtTrace; if (currentJob != null) { foreach (IAsset item in currentJob.OutputMediaAssets) { txtTrace = string.Format("[{0}] process Type {1} instance {2} deleted Asset id={3}", this.GetType().FullName, myRequest.ProcessTypeId, myRequest.ProcessInstanceId, item.Id); item.Delete(); Trace.TraceWarning(txtTrace); } } if (myAssetOriginal != null) { txtTrace = string.Format("[{0}] process Type {1} instance {2} deleted Asset id={3}", this.GetType().FullName, myRequest.ProcessTypeId, myRequest.ProcessInstanceId, myAssetOriginal.Id); myAssetOriginal.Delete(); Trace.TraceWarning(txtTrace); } if ((myWorkflow!=null) && (string.IsNullOrEmpty( myConfig.AssetWorkflowID))) { txtTrace = string.Format("[{0}] process Type {1} instance {2} deleted Asset id={3}", this.GetType().FullName, myRequest.ProcessTypeId, myRequest.ProcessInstanceId, myWorkflow.Id); myWorkflow.Delete(); Trace.TraceWarning(txtTrace); } }
/// <summary> /// Step execution /// </summary> /// <param name="request"></param> public override void HandleExecute(ChainRequest request) { //Custome Request myRequest = (ButlerProcessRequest)request; //Media context MediaContext = new CloudMediaContext(myRequest.MediaAccountName, myRequest.MediaAccountKey); if (IdenpotenceControl()) { //Create empty asset currentAsset = CreateAsset(); //Update Asset Id in the process context myRequest.AssetId = currentAsset.Id; //Ingest all Mezzamine File to asset IngestAssets(); //Set MP4 as primary setPrimaryFile(); //mark for idenpotence myRequest.MetaData.Add(this.GetType() + "_" + myRequest.ProcessInstanceId, myRequest.AssetId); } else { string txtMessage = string.Format("{0} IdenpotenceControl {1} instanceID {2} was trigger, not ingest Files", this.GetType(), myRequest.ProcessTypeId, myRequest.ProcessInstanceId); Trace.TraceInformation(txtMessage); myRequest.AssetId = myRequest.MetaData[this.GetType() + "_" + myRequest.ProcessInstanceId]; } }
public override void HandleExecute(ChainRequest request) { //1. Step Setup myRequest = (ButlerProcessRequest)request; _MediaServicesContext = new CloudMediaContext(myRequest.MediaAccountName, myRequest.MediaAccountKey); myEncodigSupport = new EncoderSupport(_MediaServicesContext); myBlobManager = BlobManagerFactory.CreateBlobManager(myRequest.ProcessConfigConn); IjsonKeyValue dotControlData = myBlobManager.GetDotControlData(myRequest.ButlerRequest.ControlFileUri); IjsonKeyValue processData = new jsonKeyValue(myBlobManager.GetButlerConfigurationValue(ProcessConfigKeys.DefualtPartitionKey, myRequest.ProcessTypeId + ".config")); IjsonKeyValue allPorcessData = myBlobManager.GetProcessConfig(myRequest.ButlerRequest.ControlFileUri, myRequest.ProcessTypeId); //2. Get Current Asset IAsset asset = (from m in _MediaServicesContext.Assets select m).Where(m => m.Id == myRequest.AssetId).FirstOrDefault(); //3. JOB parameters string OutputAssetsName = asset.Name + "_mbGridEncode"; string JobName = string.Format("GridEncodeStep_{1}_{0}", myRequest.ProcessInstanceId, asset.Name); string MediaProcessorName = myEncodigSupport.GetMediaProcessorName(allPorcessData, DotControlConfigKeys.GridEncodeStepMediaProcessorName, "Media Encoder Standard"); string[] encodeConfigurations = myEncodigSupport.GetLoadEncodignProfiles(dotControlData, processData, DotControlConfigKeys.GridEncodeStepEncodeConfigList, myRequest.ButlerRequest.MezzanineFiles, myRequest.ProcessConfigConn, this.StepConfiguration); //4. Execute JOB and Wait IJob currentJob = myEncodigSupport.ExecuteGridJob(OutputAssetsName, JobName, MediaProcessorName, encodeConfigurations, "Grid Task", asset.Id, MyEncodigSupport_OnJobError, MyEncodigSupport_JobUpdate); //9. Update AssetID myRequest.AssetId = currentJob.OutputMediaAssets.FirstOrDefault().Id; }
public override void HandleExecute(Common.workflow.ChainRequest request) { myRequest = (ButlerProcessRequest)request; Setup(); _MediaServiceContext = new CloudMediaContext(myRequest.MediaAccountName, myRequest.MediaAccountKey); IAsset encodedAsset = (from m in _MediaServiceContext.Assets select m).Where(m => m.Id == myRequest.AssetId).FirstOrDefault(); //Create key IContentKey key = CreateEnvelopeTypeContentKey(encodedAsset); //Create Token Template string tokenTemplateString = AddTokenRestrictedAuthorizationPolicy(key); Trace.TraceInformation("Added authorization policy: {0}", key.AuthorizationPolicyId); //create Delivery Policy CreateAssetDeliveryPolicy(encodedAsset, key); if (!String.IsNullOrEmpty(tokenTemplateString)) { // Deserializes a string containing an Xml representation of a TokenRestrictionTemplate // back into a TokenRestrictionTemplate class instance. TokenRestrictionTemplate tokenTemplate = TokenRestrictionTemplateSerializer.Deserialize(tokenTemplateString); // Generate a test token based on the data in the given TokenRestrictionTemplate. // Note, you need to pass the key id Guid because we specified // TokenClaim.ContentKeyIdentifierClaim in during the creation of TokenRestrictionTemplate. Guid rawkey = EncryptionUtils.GetKeyIdAsGuid(key.Id); string testToken = TokenRestrictionTemplateSerializer.GenerateTestToken(tokenTemplate, null, rawkey); Trace.TraceInformation("The authorization token is:\n{0}", testToken); myRequest.Log.Add("The authorization token"); myRequest.Log.Add(testToken); myRequest.Log.Add(""); } }
public override void HandleExecute(Common.workflow.ChainRequest request) { myRequest = (ButlerProcessRequest)request; Setup(); _MediaServiceContext = new CloudMediaContext(myRequest.MediaAccountName, myRequest.MediaAccountKey); IAsset encodedAsset = (from m in _MediaServiceContext.Assets select m).Where(m => m.Id == myRequest.AssetId).FirstOrDefault(); //Create key IContentKey key = CreateEnvelopeTypeContentKey(encodedAsset); //Create Token Template string tokenTemplateString = AddTokenRestrictedAuthorizationPolicy(key); Trace.TraceInformation("Added authorization policy: {0}", key.AuthorizationPolicyId); //create Delivery Policy CreateAssetDeliveryPolicy(encodedAsset, key); if (!String.IsNullOrEmpty(tokenTemplateString)) { // Deserializes a string containing an Xml representation of a TokenRestrictionTemplate // back into a TokenRestrictionTemplate class instance. TokenRestrictionTemplate tokenTemplate = TokenRestrictionTemplateSerializer.Deserialize(tokenTemplateString); // Generate a test token based on the data in the given TokenRestrictionTemplate. // Note, you need to pass the key id Guid because we specified // TokenClaim.ContentKeyIdentifierClaim in during the creation of TokenRestrictionTemplate. Guid rawkey = EncryptionUtils.GetKeyIdAsGuid(key.Id); string testToken = TokenRestrictionTemplateSerializer.GenerateTestToken(tokenTemplate, null, rawkey); Trace.TraceInformation("The authorization token is:\n{0}", testToken); myRequest.Log.Add("The authorization token"); myRequest.Log.Add(testToken); myRequest.Log.Add(""); } }
public override void HandleExecute(ChainRequest request) { myRequest = (ButlerProcessRequest)request; var myBlobManager = BlobManagerFactory.CreateBlobManager(myRequest.ProcessConfigConn); IjsonKeyValue dotControlData = myBlobManager.GetProcessConfig(myRequest.ButlerRequest.ControlFileUri, myRequest.ProcessTypeId); switch (dotControlData.Read(DotControlConfigKeys.SelectAssetByType)) { case "assetid": myRequest.AssetId = dotControlData.Read(DotControlConfigKeys.SelectAssetByValue); break; default: var _MediaServicesContext = new CloudMediaContext(myRequest.MediaAccountName, myRequest.MediaAccountKey); string AssetName = dotControlData.Read(DotControlConfigKeys.SelectAssetByValue); try { IAsset asset = (from m in _MediaServicesContext.Assets select m).Where(m => m.Name == AssetName).FirstOrDefault(); myRequest.AssetId = asset.Id; } catch (Exception X) { throw new Exception("Error Loading Asset by name " + AssetName); } break; } }
public override void HandleCompensation(Common.workflow.ChainRequest request) { myRequest = (ButlerProcessRequest)request; string errorTxt = string.Format("[{0}] process Type {1} instance {2} has not compensation method", this.GetType().FullName, myRequest.ProcessTypeId, myRequest.ProcessInstanceId); Trace.TraceWarning(errorTxt); }
public override void HandleExecute(Common.workflow.ChainRequest request) { myRequest = (ButlerProcessRequest)request; _MediaServiceContext = new CloudMediaContext(myRequest.MediaAccountName, myRequest.MediaAccountKey); StorageManager = BlobManagerFactory.CreateBlobManager(myRequest.ProcessConfigConn); buildlocator(); }
/// <summary> /// Step execution /// </summary> /// <param name="request"></param> public override void HandleExecute(ChainRequest request) { //My request myRequest = (ButlerProcessRequest)request; //Media Context _MediaServicesContext = new CloudMediaContext(myRequest.MediaAccountName, myRequest.MediaAccountKey); //0 Encoding Helper myEncodigSupport = new EncoderSupport(_MediaServicesContext); //1. Storage Manager myStorageManager = BlobManagerFactory.CreateBlobManager(myRequest.ProcessConfigConn); //2. Load Original Asset (current on context) myAssetOriginal = (from m in _MediaServicesContext.Assets select m).Where(m => m.Id == myRequest.AssetId).FirstOrDefault(); if (IdenpotenceControl()) { ConvertMP4toSmooth(myAssetOriginal); } else { //Job Just wait for finish the current job myEncodigSupport.OnJobError += MyEncodigSupport_OnJobError; myEncodigSupport.JobUpdate += MyEncodigSupport_JobUpdate; myEncodigSupport.WaitJobFinish(currentJob.Id); } //Update AssetID myRequest.AssetId = currentJob.OutputMediaAssets.FirstOrDefault().Id; }
public override void HandleExecute(Common.workflow.ChainRequest request) { myRequest = (ButlerProcessRequest)request; _MediaServicesContext = new CloudMediaContext(myRequest.MediaAccountName, myRequest.MediaAccountKey); myWaterMarkData = Newtonsoft.Json.JsonConvert.DeserializeObject<WaterMarkData>(this.readJsonControl()); myAssetOriginal = (from m in _MediaServicesContext.Assets select m).Where(m => m.Id == myRequest.AssetId).FirstOrDefault(); SetPrimaryAssetFile(); myRequest.AssetId = WaterMArkJob().Id; }
public override void HandleExecute(Common.workflow.ChainRequest request) { myRequest = (ButlerProcessRequest)request; _MediaServicesContext = new CloudMediaContext(myRequest.MediaAccountName, myRequest.MediaAccountKey); myWaterMarkData = Newtonsoft.Json.JsonConvert.DeserializeObject <WaterMarkData>(this.readJsonControl()); myAssetOriginal = (from m in _MediaServicesContext.Assets select m).Where(m => m.Id == myRequest.AssetId).FirstOrDefault(); SetPrimaryAssetFile(); myRequest.AssetId = WaterMArkJob().Id; }
public override void HandleExecute(Common.workflow.ChainRequest request) { myRequest = (ButlerProcessRequest)request; Setup(); IAsset theAsset = _MediaServiceContext.Assets.Where(xx => xx.Id == myRequest.AssetId).FirstOrDefault(); //Get alternative ID theAsset.AlternateId = getAlternativeId(); //Update theAsset theAsset.Update(); }
public override void HandleExecute(Common.workflow.ChainRequest request) { myRequest = (ButlerProcessRequest)request; Setup(); IAsset theAsset = _MediaServiceContext.Assets.Where(xx => xx.Id == myRequest.AssetId).FirstOrDefault(); //Get alternative ID theAsset.AlternateId = getAlternativeId(); //Update theAsset theAsset.Update(); }
public override void HandleExecute(Common.workflow.ChainRequest request) { myRequest = (ButlerProcessRequest)request; _MediaServicesContext = new CloudMediaContext(myRequest.MediaAccountName, myRequest.MediaAccountKey); myAssetOriginal = (from m in _MediaServicesContext.Assets select m).Where(m => m.Id == myRequest.AssetId).FirstOrDefault(); ConvertMP4toSmooth(myAssetOriginal); //Update AssetID myRequest.AssetId = currentJob.OutputMediaAssets.FirstOrDefault().Id; }
public override void HandleExecute(Common.workflow.ChainRequest request) { myRequest = (ButlerProcessRequest)request; //Check and load AMS configuration from step coniguration if (string.IsNullOrEmpty(this.StepConfiguration)) { string errorTxt = string.Format("[{0}] process Type {1} instance {2} has not AMS configuration Data", this.GetType().FullName, myRequest.ProcessTypeId, myRequest.ProcessInstanceId); throw new Exception(errorTxt); } myConfig = Newtonsoft.Json.JsonConvert.DeserializeObject<MediaButler.BaseProcess.Replica.ProcessReplicaData>(this.StepConfiguration); //Setup AMS target to work. myRequest.ChangeMediaServices(myConfig.TargetAMSName, myConfig.TargetAMSKey, myConfig.TargetAMSStorageConn); }
public override void HandleExecute(Common.workflow.ChainRequest request) { myRequest = (ButlerProcessRequest)request; //Check and load AMS configuration from step coniguration if (string.IsNullOrEmpty(this.StepConfiguration)) { string errorTxt = string.Format("[{0}] process Type {1} instance {2} has not AMS configuration Data", this.GetType().FullName, myRequest.ProcessTypeId, myRequest.ProcessInstanceId); throw new Exception(errorTxt); } myConfig = Newtonsoft.Json.JsonConvert.DeserializeObject <MediaButler.BaseProcess.Replica.ProcessReplicaData>(this.StepConfiguration); //Setup AMS target to work. myRequest.ChangeMediaServices(myConfig.TargetAMSName, myConfig.TargetAMSKey, myConfig.TargetAMSStorageConn); }
public override void HandleExecute(Common.workflow.ChainRequest request) { myRequest = (ButlerProcessRequest)request; _MediaServicesContext = new CloudMediaContext(myRequest.MediaAccountName, myRequest.MediaAccountKey); //Setup Step Setup(); myAssetOriginal = (from m in _MediaServicesContext.Assets select m).Where(m => m.Id == myRequest.AssetId).FirstOrDefault(); //set primary file SetVideoPrimary(); //Load the workflow definition myWorkflow = getWorkflowAsset(); //Encode myRequest.AssetId = CreateEncodingJob(myWorkflow, myAssetOriginal).Id; }
public override void HandleExecute(Common.workflow.ChainRequest request) { myRequest = (ButlerProcessRequest)request; Setup(); IAsset x = _MediaServiceContext.Assets.Where(xx => xx.Id == myRequest.AssetId).FirstOrDefault(); //Create de ISM file base o the MP4 content CreateIsmFile(x); // Use Azure Media Packager to validate the files. IAsset validatedMP4s = ValidateMultibitrateMP4s(x); //Update the Asset ID in the context myRequest.AssetId = validatedMP4s.Id; }
public override void HandleExecute(Common.workflow.ChainRequest request) { myRequest = (ButlerProcessRequest)request; _MediaServiceContext = new CloudMediaContext(myRequest.MediaAccountName, myRequest.MediaAccountKey); ////Get transcode asset //Lista all media parent from current Asset IAsset myAsset = (from m in _MediaServiceContext.Assets select m).Where(m => m.Id == myRequest.AssetId).FirstOrDefault(); foreach (IAsset xParent in myAsset.ParentAssets) { if (xParent.Name.Contains(myRequest.ProcessInstanceId)) { //Delete parent asset becouse it is part of the Media blutler process instance xParent.Delete(); } } }
public override void HandleExecute(Common.workflow.ChainRequest request) { myRequest = (ButlerProcessRequest)request; IButlerStorageManager resource = BlobManagerFactory.CreateBlobManager(myRequest.ProcessConfigConn); foreach (string url in myRequest.ButlerRequest.MezzanineFiles) { resource.DeleteBlobFile(url); Trace.TraceInformation("{0} in process {1} processId {2} file {3} deleted", this.GetType().FullName, myRequest.ProcessTypeId, myRequest.ProcessInstanceId, url); } if (!string.IsNullOrEmpty(myRequest.ButlerRequest.ControlFileUri)) { resource.DeleteBlobFile(myRequest.ButlerRequest.ControlFileUri); Trace.TraceInformation("{0} in process {1} processId {2} file {3} deleted", this.GetType().FullName, myRequest.ProcessTypeId, myRequest.ProcessInstanceId, myRequest.ButlerRequest.ControlFileUri); } }
public override void HandleExecute(Common.workflow.ChainRequest request) { myRequest = (ButlerProcessRequest)request; Setup(); IAsset x = _MediaServiceContext.Assets.Where(xx => xx.Id == myRequest.AssetId).FirstOrDefault(); //Create de ISM file base o the MP4 content CreateIsmFile(x); // Use Azure Media Packager to validate the files. IAsset validatedMP4s = ValidateMultibitrateMP4s(x); //Update the Asset ID in the context myRequest.AssetId = validatedMP4s.Id; }
/// <summary> /// Of the process ID has context on ButlerWorkflowstatus table, it is load on Metadata /// </summary> /// <param name="myRequest"></param> private void ButlerWorkflowstatus(ButlerProcessRequest myRequest) { CloudStorageAccount storageAccount = CloudStorageAccount.Parse(myRequest.ProcessConfigConn); CloudTableClient tableClient = storageAccount.CreateCloudTableClient(); CloudTable table = tableClient.GetTableReference(Configuration.ButlerWorkflowStatus); TableOperation retrieveOperation = TableOperation.Retrieve <ProcessSnapShot>(myRequest.ProcessTypeId, myRequest.ProcessInstanceId); TableResult retrievedResult = table.Execute(retrieveOperation); if (retrievedResult.Result != null) { string txtMessage = string.Format("[{0}] {1} {2} instance {2}", this.GetType().FullName, "On runnung Instance", myRequest.ProcessInstanceId, myRequest.ProcessTypeId); Trace.TraceInformation(txtMessage); dynamic dynObj = Newtonsoft.Json.JsonConvert.DeserializeObject(((ProcessSnapShot)retrievedResult.Result).jsonContext); //Dictionary<string, string> dynMetaData = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, string>>((dynObj.MetaData.ToString())); myRequest.MetaData = Newtonsoft.Json.JsonConvert.DeserializeObject <Dictionary <string, string> >((dynObj.MetaData.ToString())); } }
public override void HandleExecute(Common.workflow.ChainRequest request) { myRequest = (ButlerProcessRequest)request; _MediaServiceContext = new CloudMediaContext(myRequest.MediaAccountName, myRequest.MediaAccountKey); ////Get transcode asset //Lista all media parent from current Asset IAsset myAsset = (from m in _MediaServiceContext.Assets select m).Where(m => m.Id == myRequest.AssetId).FirstOrDefault(); foreach (IAsset xParent in myAsset.ParentAssets) { if (xParent.Name.Contains(myRequest.ProcessInstanceId)) { //Delete parent asset becouse it is part of the Media blutler process instance xParent.Delete(); } } }
public override void HandleExecute(ChainRequest request) { myRequest = (ButlerProcessRequest)request; blobManager = BlobManagerFactory.CreateBlobManager(myRequest.ProcessConfigConn); string jsonControlFile = blobManager.ReadTextBlob(new Uri(myRequest.ButlerRequest.ControlFileUri)); dotControlConfig = new jsonKeyValue(jsonControlFile); if (dotControlConfig.Read(MediaButler.Common.DotControlConfigKeys.httpNotificationStepGetOnFinishUrl) != "") { //GET HttpGetNotification(); } else { //POST HttpPostNotification(); } }
public override void HandleExecute(Common.workflow.ChainRequest request) { ButlerProcessRequest myRequest = (ButlerProcessRequest)request; Setup(); if (myRequest.MessageHiddenTaskStatus == TaskStatus.WaitingToRun) { //Start to hidden the Process trgigger Message myRequest.StartMessageHidden(timeSpanMessage, sleepSeconds); Trace.TraceInformation("{0}Process type {1} instance {2} start hidden Message {3}", this.GetType().FullName, myRequest.ProcessTypeId, myRequest.ProcessInstanceId, myRequest.ButlerRequest.MessageId); //Read if We have information on ButlerWorkflowstatus ButlerWorkflowstatus(myRequest); } else { //Hidden is running, now Stop it myRequest.StopMessageHidden(); do { System.Threading.Thread.Sleep(1 * 1000); } while (myRequest.MessageHiddenTaskStatus != TaskStatus.RanToCompletion); Trace.TraceInformation("{0}Process type {1} instance {2} stop hidden Message {3}", this.GetType().FullName, myRequest.ProcessTypeId, myRequest.ProcessInstanceId, myRequest.ButlerRequest.MessageId); //DELETE MESSAGE Butler request myRequest.DeleteCurrentMessage(); Trace.TraceInformation("{0}Process type {1} instance {2} delete Message {3}", this.GetType().FullName, myRequest.ProcessTypeId, myRequest.ProcessInstanceId, myRequest.ButlerRequest.MessageId); } }
public override void HandleExecute(Common.workflow.ChainRequest request) { //Custome Request myRequest = (ButlerProcessRequest)request; if (IdenpotenceControl()) { //Media context MediaContext = new CloudMediaContext(myRequest.MediaAccountName, myRequest.MediaAccountKey); //Create empty asset currentAsset = CreateAsset(); //Update Asset Id in the process context myRequest.AssetId = currentAsset.Id; //Ingest all Mezzamine File to asset IngestAssets(); //mark for idenpotence myRequest.MetaData.Add(this.GetType() + "_" + myRequest.ProcessInstanceId, myRequest.AssetId); } else { myRequest.AssetId = myRequest.MetaData[this.GetType() + "_" + myRequest.ProcessInstanceId]; } }
public override void HandleExecute(Common.workflow.ChainRequest request) { myRequest = (ButlerProcessRequest)request; _MediaServicesContext = new CloudMediaContext(myRequest.MediaAccountName, myRequest.MediaAccountKey); //0 Helper myEncodigSupport = new EncoderSupport(_MediaServicesContext); myAssetOriginal = (from m in _MediaServicesContext.Assets select m).Where(m => m.Id == myRequest.AssetId).FirstOrDefault(); if (IdenpotenceControl()) { ConvertMP4toSmooth(myAssetOriginal); } else { //Job Just wait for finish the current job myEncodigSupport.WaitJobFinish(currentJob.Id); } //Update AssetID myRequest.AssetId = currentJob.OutputMediaAssets.FirstOrDefault().Id; myRequest.MetaData.Add(this.GetType() + "_" + myRequest.ProcessInstanceId, currentJob.Id); }
public override void HandleCompensation(Common.workflow.ChainRequest request) { ButlerProcessRequest myRequest = (ButlerProcessRequest)request; Trace.TraceWarning("{0} in process {1} processId {2} has not HandleCompensation", this.GetType().FullName, myRequest.ProcessTypeId, myRequest.ProcessInstanceId); }
public override void HandleExecute(Common.workflow.ChainRequest request) { myRequest = (ButlerProcessRequest)request; SendMail(); }
public override void HandleExecute(Common.workflow.ChainRequest request) { myRequest = (ButlerProcessRequest)request; _MediaServiceContext = new CloudMediaContext(myRequest.MediaAccountName, myRequest.MediaAccountKey); buildlocator(); }
public override void HandleExecute(Common.workflow.ChainRequest request) { myRequest = (ButlerProcessRequest)request; //Send output info back using ButlerResponse Message LOG SendMessage(); }
public override void HandleExecute(Common.workflow.ChainRequest request) { myRequest = (ButlerProcessRequest)request; SendMail(); }
/// <summary> /// Execute step /// </summary> /// <param name="request"></param> public override void HandleExecute(ChainRequest request) { myRequest = (ButlerProcessRequest)request; //Send output info back using ButlerResponse Message LOG SendMessage(); }
public override void HandleCompensation(Common.workflow.ChainRequest request) { myRequest = (ButlerProcessRequest)request; string errorTxt = string.Format("[{0}] process Type {1} instance {2} has not compensation method", this.GetType().FullName, myRequest.ProcessTypeId, myRequest.ProcessInstanceId); Trace.TraceWarning(errorTxt); }