| Quintiq file version 2.0 | 
| #parent: #root | 
| MethodOverride Execute ( | 
|   DSP_ServiceCommitterBase local_committer, | 
|   output String soft_error_o | 
| ) as Boolean | 
| { | 
|   TextBody: | 
|   [* | 
|     dataset := local_committer.astype( SWF_ServiceCommitter).Service().WorkflowDataset(); | 
|      | 
|     step_definition := dataset.GetStepDefinition( this.StepDefinitionObjectID() ); | 
|     deletedObjs     := construct( Keys ); | 
|      | 
|     if( not isnull( step_definition ) | 
|         and not isnull( dataset.IOSyncHandler() ) ) | 
|     { | 
|       deletedObjs := selectvalues( step_definition.GetAllChildren(), Elements, e, true, e.ID() ); | 
|       deletedObjs.Add( this.StepDefinitionObjectID() );   | 
|        | 
|       deletedRequiredStepIDs  := construct( Keys ); | 
|       deletedDependentStepIDs := construct( Keys ); | 
|        | 
|       traverse( step_definition.GetAllChildren(), Elements, e ) | 
|       { | 
|         deletedObjs.Add( e.ID() ); | 
|          | 
|         traverse( e, RequiredStepDependency, r ) | 
|         { | 
|           deletedRequiredStepIDs.Add( r.RequiredStepID() ); | 
|           deletedDependentStepIDs.Add( r.DependentStepID() ); | 
|         } | 
|       } | 
|        | 
|       dataset.IOSyncHandler().O_SyncStepDefinition( null( SWF_StepDefinitions ), deletedObjs ); | 
|       dataset.IOSyncHandler().O_SyncStepDefinitionDependency( null( SWF_StepDefinitionDependencys ), deletedRequiredStepIDs, deletedDependentStepIDs ); | 
|     } | 
|      | 
|     if( not isnull( step_definition ) ) | 
|     { | 
|       step_definition.Delete(); | 
|     } | 
|      | 
|     return true; | 
|   *] | 
| } |