Veelgebruikte calculaties
Inleiding
Dit artikel bevat kant-en-klare calculatievoorbeelden voor de meest voorkomende patronen in Fortes Change Cloud. Elk voorbeeld is op zichzelf staand en kan worden aangepast aan je eigen veldnamen en objecttypen.
Voor de volledige referentie van de calculatiesyntax en blokdocumentatie, zie Calculaties.
Statusindicator op basis van aantal
Toon een groene of rode afbeelding op een portfolio-item, afhankelijk van of er gerelateerde logitems bestaan. Dit patroon wordt doorgaans gebruikt voor dashboards zoals "leerpunten ingevuld" of "plan-items geregistreerd".
Het statusveld gebruikt het type Afbeelding met de waarden Green;green,Red;red.
<calculations>
<!-- Green when at least one lesson-learned item exists under the ProjectReport -->
<calculation foldertypes="5003" break="true">
<depends>
<field>CustomY</field>
</depends>
<condition>
<cmp condition="greater">
<count>
<folderFilter foldertype="6051" relation="ProjectReport" />
</count>
<value>0</value>
</cmp>
</condition>
<value>green</value>
</calculation>
<!-- Red as fallback -->
<calculation foldertypes="5003">
<depends>
<field>CustomY</field>
</depends>
<value>red</value>
</calculation>
</calculations>
CustomY is een triggerveld op het niveau Leerpunt met calculatie-optie reference=ProjectReport. Wijzig foldertype="6051" in 5602 voor plan-items.
Onderliggende waarden optellen naar een hoger niveau
Aggregeer een numeriek veld van plan-items (feature-niveau) naar een portfolio-item (epic-niveau).
Plan item: Custom14 (de waarde die wordt geaggregeerd):
Calculatie-optie: reference=ProjectReport
Portfolio-item (het geaggregeerde resultaat):
<calculation foldertypes="5003">
<sum>
<folderFilter foldertype="5602" relation="ProjectReport" />
<field>Custom14</field>
</sum>
</calculation>
Hetzelfde patroon geldt voor het optellen van velden op projectniveau naar een map of programma.
Plan-items optellen op projectniveau
Aggregeer een veld van alle toegewezen plan-items naar projectniveau. Het filter IsAssigned sluit sjabloonrijen uit.
<calculation foldertypes="5000">
<sum>
<folderFilter foldertype="5602" parentsearchstructure="FirstChild=5601">
<IsAssigned filterValues="true" />
</folderFilter>
<field>CustomX</field>
</sum>
</calculation>
Calculatie-optie: 0
Een percentage berekenen
Deel het ene veld door het andere en vermenigvuldig met 100.
<calculation>
<mul>
<div>
<field>CustomX</field>
<field>CustomY</field>
</div>
<value>100</value>
</mul>
</calculation>
Resultaat: (CustomX / CustomY) × 100
Absoluut verschil tussen twee velden
Bereken het altijd-positieve verschil tussen twee velden, ongeacht welke van de twee groter is.
<calculation>
<abs>
<add>
<field minus="true">Custom153</field>
<field>Custom154</field>
</add>
</abs>
</calculation>
Voorbeeld: Custom153 = 100, Custom154 = 150 → resultaat is 50. Als de waarden worden omgedraaid, is het resultaat nog steeds 50.
Openstaande acties op een project tellen
Een patroon met twee velden om logitems met een specifieke statuswaarde op projectniveau te tellen.
Actielog: CustomA (kopieert status, gebruikt als trigger):
<calculation>
<depends>
<field>Status</field>
<field>OrderNr</field>
</depends>
<folderfield>
<field>Status</field>
</folderfield>
</calculation>
Calculatie-optie: 1,reference=P2Project
Project: CustomB (telt openstaande acties):
<calculation foldertypes="!4901">
<depends>
<field>CustomA</field>
</depends>
<count>
<folderFilter foldertype="6041" parentsearchstructure="FirstChild=6040">
<P2Project operator="equals" filterValues="%pageid%" />
<Status operator="equals" filterValues="Open" />
</folderFilter>
</count>
</calculation>
Een veldwaarde kopiëren via objectreferentie
Neem de waarde van een veld over van een gerefereerd object.
Custom1: objectreferentieveld dat verwijst naar een project.
Custom2: veld dat de waarde overneemt van het gerefereerde object:
<calculation>
<folderfield>
<field reference="Custom1">Custom105</field>
</folderfield>
</calculation>
Calculatie-optie: 1
Cross-object trigger met depends
Wanneer een calculatie afhankelijk is van een veld op een ander objectniveau, gebruik je <depends> samen met een calculatie-optie om de trigger te koppelen.
Plan item: CustomA (kopieert einddatum, fungeert als trigger):
<calculation>
<folderfield>
<field>Enddate</field>
</folderfield>
</calculation>
Calculatie-optie: relation=ProductID[6061]
Logitem: CustomB (leest van het plan-item via de trigger):
<calculation>
<depends>
<field>ProductID</field>
</depends>
<folderfield>
<field reference="ProductID">CustomA</field>
</folderfield>
</calculation>
De datum vastleggen wanneer een specifiek veld verandert
Sla de wijzigingsdatum op wanneer een bepaald veld verandert. Handig voor audit trails.
<calculation>
<depends>
<field>Custom121</field>
</depends>
<folderfield>
<field>ModificationDate</field>
</folderfield>
</calculation>
Risicoscore
Vermenigvuldig risico-ernst met risicokans om een numerieke score te berekenen. Wordt rechtstreeks gebruikt op een risico-object.
<calculation>
<mul>
<field>RiskSeverity</field>
<field>RiskLikelihood</field>
</mul>
</calculation>
Dit veld wordt vaak gebruikt als invoer voor een voorwaardelijk statusveld (bijvoorbeeld groen als score < 9, rood als score ≥ 9).
Voorwaardelijke waarde op basis van een gerefereerd veld
Geef een waarde terug op basis van de inhoud van een veld op een gerefereerd object.
<calculations>
<calculation foldertypes="5000" break="true">
<condition>
<cmp condition="after">
<field reference="Portfolio">Custom2</field>
<field>Enddate</field>
</cmp>
</condition>
<value>Yes</value>
</calculation>
<calculation foldertypes="5000">
<condition>
<cmp condition="before">
<field reference="Portfolio">Custom2</field>
<field>Enddate</field>
</cmp>
</condition>
<value>No</value>
</calculation>
</calculations>
Calculatie-optie op het projectveld: 1
Portfolioveld Custom2 vereist calculatie-optie: relation=Portfolio[5000]
Klikbare hyperlink in een tekstveld
Bouw een HTML-hyperlink met <concat> om een klikbare link te tonen in een grid of canvas. Vervang de URL door de URL van je eigen omgeving.
<calculation>
<concat separator="">
<value><a href="https://YOUR-ENVIRONMENT.fortes-online.com/online/Folder/Folder.jsp?FolderID=</value>
<field>FolderID</field>
<value>" target="_blank"><b></value>
<field>Name</field>
<value></b></a></value>
</concat>
</calculation>
Resultaat: een vetgedrukte klikbare link met de naam van het item, die in een nieuw tabblad wordt geopend.
Afhankelijkhedenlog
Toon een logboek op een project dat afhankelijkheden tussen plan-items bijhoudt, inclusief bufferdagen en een statusindicator die rood wordt wanneer de opvolger start voordat de voorganger eindigt.
Dit patroon vereist een custom logobject en triggervelden op het niveau plan-item. De hieronder gebruikte interne namen zijn voorbeelden; kies namen die passen bij je configuratie. Het voorvoegsel C- wordt automatisch toegevoegd door FCC.
Stap 1: Triggervelden op het niveau Plan item
Voeg twee customvelden toe aan het object Plan item. Deze velden fungeren als calculatietriggers, zodat wijzigingen in de datums van plan-items doorwerken in de afhankelijkhedenlog.
| Interne naam | Weergavenaam | Type | Calculatie-optie |
|---|---|---|---|
| CustomX | Trigger einddatum | Datum | relation=CAfhankelijkheid_plan_item[1000003] |
| CustomY | Trigger startdatum | Datum | relation=CAfhankelijk_plan_item[1000003] |
Vervang 1000003 door de daadwerkelijke ID van je custom logobject.
CustomX-calculatie:
<calculation foldertypes="5602">
<folderfield>
<field>Enddate</field>
</folderfield>
</calculation>
CustomY-calculatie:
<calculation foldertypes="5602">
<folderfield>
<field>Startdate</field>
</folderfield>
</calculation>
Stap 2: Velden op het custom logobject
Voeg de volgende velden toe aan het custom logobject.
C-Afhankelijkheid_plan_item: objectreferentie naar het plan-item van de voorganger
Type: Objectreferentie (Plan item), Gebruik: Conditioneel
<conditions>
<dependencyconfig>
<options>
<dependingfield>C-Afhankelijkheid_project</dependingfield>
<foldertype>5602</foldertype>
<filterfield>P2Project</filterfield>
</options>
</dependencyconfig>
</conditions>
C-Afhankelijk_plan_item: objectreferentie naar het plan-item van de opvolger
Type: Objectreferentie (Plan item), Gebruik: Conditioneel
<conditions>
<dependencyconfig>
<options>
<dependingfield>P2Project</dependingfield>
<foldertype>5602</foldertype>
<filterfield>P2Project</filterfield>
</options>
</dependencyconfig>
</conditions>
C-Afhankelijkheid_project: objectreferentie naar het project
Type: Objectreferentie (Project). Geen calculatie nodig.
C-Afhankelijkheid_einddatum: einddatum van het plan-item van de voorganger
Type: Datum, Gebruik: Berekend
<calculation>
<depends>
<field>CustomX</field>
</depends>
<folderfield>
<field reference="C-Afhankelijkheid_plan_item">Enddate</field>
</folderfield>
</calculation>
C-Plan_item_startdatum: startdatum van het plan-item van de opvolger
Type: Datum, Gebruik: Berekend
<calculation>
<depends>
<field>CustomY</field>
</depends>
<folderfield>
<field reference="C-Afhankelijk_plan_item">Startdate</field>
</folderfield>
</calculation>
C-Bufferdagen: kalenderdagen tussen het einde van de voorganger en de start van de opvolger
Type: Getal, Gebruik: Berekend
Een positieve waarde betekent dat er speling is. Een negatieve waarde betekent dat de opvolger start voordat de voorganger is afgerond.
<calculation>
<depends>
<field>C-Afhankelijkheid_einddatum</field>
<field>C-Plan_item_startdatum</field>
</depends>
<nrdaysbetween>
<field reference="C-Afhankelijkheid_plan_item">Enddate</field>
<field reference="C-Afhankelijk_plan_item">Startdate</field>
</nrdaysbetween>
</calculation>
C-Afhankelijkheid_status: statusindicator
Type: Afbeelding (Green;green,Red;red), Gebruik: Berekend
<calculations>
<!-- Green when buffer >= 0: successor starts after predecessor ends -->
<calculation break="true">
<depends>
<field>C-Bufferdagen</field>
</depends>
<condition>
<cmp condition="smaller" value="0">
<field>C-Bufferdagen</field>
</cmp>
</condition>
<value>green</value>
</calculation>
<!-- Red when buffer is negative: overlap detected -->
<calculation>
<depends>
<field>C-Bufferdagen</field>
</depends>
<value>red</value>
</calculation>
</calculations>
Stap 3: De log toevoegen aan het projectmodel
Voeg in het projectmodel een nieuw segment van het type Lijst toe op de overzichtspagina of een eigen lay-out. Selecteer het custom logobject en configureer de gewenste kolommen. De kolom Naam is verplicht en kan niet worden verwijderd.