Obliteration

Introduction

Appway’s versioning system allows you to easily retrieve previous versions of Business Objects. However, all these Business Object versions take up disk space and memory. This can have a negative impact on your system performance.

The Obliterate feature allows you to remove unused versions of Business Objects based on a date filter, thus improving system performance.

In Packages other than the Base Package, obliteration is not performed on individual Business Object versions, but on Package versions as a whole. This ensures you do not compromise the integrity of Package versions by obliterating some of the Business Object versions out of which a Package version consists.

Important! Obliterated versions of Business Objects/Packages are permanently removed from the file system. You cannot undo an obliteration operation.

Appway’s Versioning System

Appway has a powerful versioning system that stores multiple versions of each Business Object. More specifically, the system retains all the following versions:

  • Committed versions of each Business Object.
  • Uncommitted changes performed on a Business Object after the last commit operation. Therefore, if you commit an object, only the last modified version is stored in the repository, while all the previous ones are deleted.
  • Deleted Business Objects (even if they are committed after deleting).

The advantage of this mechanism is that it allows you to retrieve previous versions of the Appway model without requiring explicit save/backup operations or external versioning tools. More importantly, it allows you to run Process Instances in the exact version that was available when the Process started, even if you change your model later on.

However, the number of stored Business Object versions can grow large, especially in "long-running" (2 or 3 years) development environments. Therefore, we recommend obliterating older versions if you want to free up disk space or improve the performance of Appway Studio.

Remember: Business Objects are versioned automatically (whenever you perform actions such as "save" or "commit"), whereas versioning of Packages is an explicit action controlled by developers.

For further information on versioning in Appway, see Business Objects: Versioning and Creating Package Versions.

Obliteration in Appway

Appway presets a date in the Keep Versions used on or after field based on the timestamp of the oldest running Process Instance. This date determines what the system suggests for obliteration:

  • A list of Business Object versions (for the Base Package).
  • A list of Package versions in the Versions to obliterate column (for all other Packages).

The obliteration procedure applies the following logic when populating these lists:

  • It does not obliterate the last version of a Business Object/Package (unless it is marked as deleted). Therefore, if you have only one committed version of a Business Object or one Package version, it is not obliterated.
  • It does not obliterate Business Object versions that have changed after a commit operation. Therefore, the objects you are working on are not affected.
  • It neither obliterates Business Object/Package versions whose timestamp is newer than the specified date, nor the last committed version of a Business Object or the last Package version created before that date (unless it is marked as deleted). Therefore, old versions of Business Objects/Packages that are still being used are not obliterated.

Example for Business Objects in the Base Package If you have 4 committed versions of a Business Object and none of them is marked as deleted:

  • Version 1: 2017-01-07
  • Version 2: 2017-02-02
  • Version 3: 2017-03-21
  • Version 4: 2017-07-17

and the obliteration date is set to: 2017-02-24.

In this case, the only obliterated version is Version 1 (Versions 3 and 4 are newer than the specified date and Version 2 is the last committed version before the specified date).

Example for Package Versions If you have created 4 versions of a Package and none of them is marked as deleted:

  • Version 1.0.0: 2017-01-07
  • Version 1.0.1: 2017-02-02
  • Version 1.0.2: 2017-03-21
  • Version 1.0.3: 2017-07-17

and the obliteration date is set to: 2017-02-24.

In this case, the only obliterated Package version is Version 1.0.0 (Versions 1.0.2 and 1.0.3 are newer than the specified date and Version 1.0.1 is the last Package version created before the specified date).

Date Filter: Recommendations

In order for the Obliteration feature to work as expected, you need to carefully define the filter date in the Keep Versions used on or after field. This ensures that "old" Busines Object versions or Package versions that are still being used are not obliterated. Therefore, take the following information into account:

  • The Obliterate tool checks the timestamp of the oldest running Process Instance and sets this date in the Keep Versions used on or after field. The system assumes that all the Business Object versions (Base Package) or Packages versions (all other Packages) fulfilling the following criteria are no longer needed and can be obliterated:

    1. The version was created before the date set in Keep Versions used on or after. AND
    2. The version has been replaced by a newer version before the date set in Keep Versions used on or after.

    This is a reasonable assumption, but you need to make sure that those older versions are no longer needed for your specific project. For example, if you have an external system that loads Processes with hardcoded versions from 3 years ago, make sure that you do not obliterate those versions, even if you currently do not have any Process Instance running them.

  • The Obliterate tool does not perform any dependency checks on the versions you select for obliteration. Therefore, be extremely careful if you manually change the suggested obliteration date in the Keep Versions used on or after field to a newer date. In this case, it is highly likely that you will obliterate Business Object/Package versions that are still required by running Process Instances, thus leading to runtime exceptions.

Using the Obliteration Feature

  1. In Appway Studio, go to Solution Maintenance > Repository > Obliteration.
  2. Optionally, edit the date in the Keep Versions used on or after field. See Date Filter: Recommendations for more information on this setting.
  3. Select if you want to obliterate Business Object versions from the Base Package, or Package versions from All Other Packages.
  4. (If Base Package is selected) Review the list of Business Object versions to be obliterated. To obliterate these versions, click on Obliterate. All listed Business Object versions are then obliterated (physically removed) from the file system.
  5. (If All Other Packages is selected) Select the individual Packages you want to perform obliteration on and review which versions of these selected Packages will be obliterated (listed in the Version to obliterate column). Hover above individual Package versions to see the Version Notes. To obliterate these versions of the selected Packages, click on Obliterate. All of these Package versions and the Business Object versions contained within these Package versions are then obliterated (physically removed) from the file system.

Related Links

For further information on versioning in Appway, see Business Objects: Versioning and Creating Package Versions.