IFS Applications is built using static and dynamic components. The concept of dynamic dependencies is not a new one but in keeping with the rest of IFS Application development the IFS Aurena framework also makes use of it. This means that an IFS Aurena Client page will at some point need to refer to a element that is located in a dynamic component. Such elements would need to be marked as a dependent element of a dynamic component.
In addition to fragments, dynamic elements can exist in both the projection and client model:
| Dynamic Elements in Client | Dynamic Elements in Projection |
|---|---|
| 1. Navigator entries | 1. Entity Sets |
| 2. Sub-Menus | 2. Entities |
| 3. Pages | 3. Queries |
| 4. Groups | 4. Summaries |
| 5. Lists | 5. References |
| 6. Tabs | 6. Functions |
| 7. Pages | 7. Actions |
| 8. Commands | |
| 9. Fields | |
| 10. List of Values | |
| 11. Selectors | |
| 12. List of Value Lists | |
A dynamic dependency has to be defined in two locations of a projection or client file. Namely:
The examples below show how these dependencies are created for each IFS Aurena model.
At the point of declaration:
@Override
@DynamicComponentDependency PROJ
entity Activity {
crud = Read;
}
At the point of Reference:
@Override
entity Movie {
attribute Year Integer {
fetch = "Extract(year from RELEASE_DATE)";
}
array Cast(MovieId) to MovieActor(MovieId);
@DynamicComponentDependency PROJ
reference Movie(MovieId) to Activity(ActivityId);
}
At the point of Definition:
@DynamicComponentDependency PROJ
group MovieGroupWithProjectInfo for MovieWithProjQry {
label = "Movie";
field MovieId;
field Title;
field Genre;
field ReleaseDate;
field Rating {
rating {
maxrating = 10;
showlabel = true;
}
}
field Country;
}
At the point of Reference:
page MovieDetail using Movies {
label = "${TitleYear}";
stateindicator MovieStateIndicator;
selector MovieSelector;
@DynamicComponentDependency PROJ
group MovieGroupWithProjectInfo;
list MovieCast(Cast) bind MovieSelector;
}
If you are using a dynamic fragment, annotate it with @DynamicComponentDependency when you include it in the projection or client file.
@DynamicComponentDependency ORDER include fragment SomeFragmentFromOrder;
NOTE: When you are referring items in the dynamic fragment always remember to annotate them as well.