| 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(); | 
|      | 
|     activity := dataset.GetActivityExternal( this.ActivityObjectID() ); | 
|      | 
|     if( not isnull( activity ) ) | 
|     { | 
|       // We only proceed with updating the attribute IF IsActive had been updated.  | 
|       if( this.ActivityIsActiveExternal() <> activity.IsActive() ) | 
|       { | 
|         activity.IsActiveExternal( this.ActivityIsActiveExternal() );         | 
|       } | 
|        | 
|       // We only proceed with the updating and sync IF the status IsCompleted had been updated. | 
|       if( this.ActivityIsCompleted() <> activity.IsCompleted() ) | 
|       { | 
|         if( this.ActivityIsCompleted() ) | 
|         { | 
|           activity.SetCompleted( this.ActivityLastStatusUpdatedBy() );   | 
|         } | 
|         else | 
|         { | 
|           activity.SetIncomplete( this.ActivityLastStatusUpdatedBy() );   | 
|         } | 
|          | 
|         // Only proceed with IOSync if the caller request it to | 
|         if( this.ActivityIsRequireIOSync() and not isnull( dataset.IOSyncHandler() ) ) | 
|         { | 
|           objs := construct( SWF_ActivityExternals ); | 
|           activity := dataset.GetActivityExternal( this.ActivityObjectID() ); | 
|           objs.Add( activity ); | 
|                             | 
|           dataset.IOSyncHandler().O_SyncActivityExternal( objs, null( Strings ), null( Strings ), null( Strings ) );  | 
|         } | 
|       } | 
|        | 
|       activity.IsNew( this.ActivityIsNew() ); | 
|     } | 
|      | 
|     return true; | 
|   *] | 
| } |