Augment the current `! method of overriding Filter phases with a simple selection box in the Filter definition (somewhat like the Pool option for escalations).
The options available could be:
- Blank (Null) – Filter follows normal Phasing (Phase is not overridden)
- 1 - Filter runs in Phase 1 (same as the `! today)
- 2 - Filter runs in Phase 2
- 3 - Filter runs in Phase 3
Currently a developer appends the “`!” string to the end of the Filter name to indicate to the system that this filter needs to be executed in phase 1. While this works alright for placing Filters in phase 1 there are times when it would be good to have a Filter forced into phase 3 (after all of the database commits have completed). i.e. We have a requirement to push Remedy data to another system. The options we currently have for this are:
- Web Services
The drawback to this method is that Set Fields run in phase 1 so we do not have access to the Request ID or Create Date fields on Submit. In order to use Web Services a developer must do some sort of push back to the form so the Web Service filter action can run in the Modify operation. This can require changes in other Filters to exclude this additional Modify from other business processes.
- A dbLink (Database to Database) with Direct SQL
While this action does happen in phase 2 the drawback to using Direct SQL is that a developer has to create integer Display Only fields to hold Selection and Date values.
- A Run Process action to an external application/script
While this approach runs in Phase 3 and can give the most flexibility it requires maintaining code/tools/scripts outside of ARS which in a lot of organizations is not allowed.
The ideal approach would be to use Web Services, but have the Filter run in Phase 3.
Another example is when doing multiple pushes like walking a filter side table field. If the developer needs to also work with some Display Only fields as part of the pushes the set fields actions run in Phase 1 so the end result is that all of the pushes get the same values as whatever the last set fields did. The ideal approach here will be to keep the Set Fields and the Push actions in the same phase.