Skip to content

Commit bde34b5

Browse files
authored
Feature/feature toggle (#48)
* feature: FeatureToogle Funksjonalitet for bruk av feature toggles i Salesforce
1 parent 4aa94d1 commit bde34b5

13 files changed

+941
-5
lines changed

README.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,26 @@ Monorepo for NAVs Salesforce Platform core. Maintained by Team Platforce.
44

55
[Platforce Documentation](https://navikt.github.io/platforce-doc/)
66

7+
## Pakker
8+
9+
For å se avhengigheter mellom pakkene se [sfdx-project.json](sfdx-project.json)
10+
11+
- [platform-datamodel](src/platform-data-model/feature-flag-custom-metadata) - datamodell
12+
13+
### Frameworks
14+
15+
- [feature-toggle](src/frameworks/feature-toggle/README.md) rammeverk for feaure toggling i salesforce
16+
17+
### Platform Utility
18+
19+
- [custom-metadata-dao](src/platform-utility/custom-metadata-dao) - Abstraksjon av custom metadata
20+
721
## Komme i gang
822

923
Hvordan bygge, teste og kjøre koden viss aktuelt.
1024

25+
For detaljer ang. utvikling eller bruk av en pakke, se pakke beskrivelsen.
26+
1127
---
1228

1329
### Henvendelser

sfdx-project.json

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
{
22
"sfdcLoginUrl": "https://login.salesforce.com",
3-
"sourceApiVersion": "62.0",
3+
"sourceApiVersion": "63.0",
4+
45
"packageDirectories": [
56
{
67
"path": "src-temp",
@@ -9,19 +10,33 @@
910
{
1011
"path": "src/platform-data-model",
1112
"package": "platform-data-model",
12-
"versionNumber": "0.1.0.NEXT"
13+
"versionNumber": "0.1.0.NEXT",
14+
"definitionFile": "config/scratch-org-def.json"
1315
},
1416
{
1517
"path": "src/platform-admin",
1618
"package": "platform-admin",
17-
"versionNumber": "0.0.0.NEXT"
19+
"versionNumber": "0.0.0.NEXT",
20+
"definitionFile": "config/scratch-org-def.json"
1821
},
1922
{
2023
"versionNumber": "0.1.0.NEXT",
2124
"path": "src/platform-utility/custom-metadata-dao",
2225
"default": false,
2326
"package": "custom-metadata-dao",
24-
"versionDescription": "Custom Metadata Data Access Object class used to get access to Custom Metadata objects, and at the same time make it easier to test the various paths the code can take based on the values in the Custom Metadata."
27+
"definitionFile": "config/scratch-org-def.json"
28+
},
29+
{
30+
"versionNumber": "0.1.0.NEXT",
31+
"path": "src/frameworks/feature-toggle",
32+
"package": "feature-toggle",
33+
"definitionFile": "config/scratch-org-def.json",
34+
"dependencies": [
35+
{
36+
"package": "platform-data-model",
37+
"versionNumber": "0.1.0.LATEST"
38+
}
39+
]
2540
},
2641
{
2742
"versionNumber": "0.1.0.NEXT",
@@ -33,6 +48,7 @@
3348
],
3449
"packageAliases": {
3550
"platform-data-model": "0HoKB00000000010AA",
36-
"custom-metadata-dao": "0HoKB000000000B0AQ"
51+
"custom-metadata-dao": "0HoKB000000000B0AQ",
52+
"feature-toggle": "0HoKB000000000V0AQ"
3753
}
3854
}
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
# feature-toggle
2+
3+
Denne pakken inneholder et rammeverk for feature toggling som kan brukes som det er eller extendes.
4+
5+
Datamodellen ligger i pakken [platform-data-model](src/platform-data-model/README.md)
6+
7+
| | |
8+
| ---- | --- |
9+
| Apex ||
10+
| LWC ||
11+
| Flow ||
12+
13+
## Hvordan ta i bruk
14+
15+
Avhengig av behov så kan man enten bruke `FeatureToggleBase` direkte eller extende den for å se om en feature er aktiv eller ikke.
16+
Denne kan brukes på to nivåer, individuell eller generell.
17+
18+
Feature toggle customMetadata innslag og customPermissions legges i de pakkene hvor de brukes.
19+
20+
**Generell:**
21+
Det man ønsker å enkelt kunne skru en feature på eller av. Opprett en custom metadata feature toggle og aktiver/deaktiver den ved å benytte `Is_Enabled__c` flagget.
22+
I koden sjekker man på `isFeatureEnabled(<developername til gitt feature>)`. Dette vil da gjelde for all logikk som kjører koden.
23+
24+
**Individuell:**
25+
Her kan man velge å bruke enten `customPermission` eller en kombinasjon av `Feature_Flag__mdt` og `customPermission`.
26+
27+
Ved bruk av bare `customPermission` oppretter man en custom permission og legger den til et Permission Set som tildeles den eller de som trenger tilgangen.
28+
29+
Ved bruk av en kompinasjon så opprettes det et custom permission som tildeles via Permission Set slik som over. I tillegg opprettes det et Feature_Flag**mdt record hvor customPermission api navnet legges til i `Required_Custom_Permission**c`. `Is_Enabled\_\_c` flagget benyttes som vanlig til å toggle featuren av og på.
30+
31+
**Eksempel på direkte bruk:**
32+
33+
```java
34+
public with sharing MyClass {
35+
public MyClass() {
36+
...
37+
}
38+
39+
public Decimal getDiscount() {
40+
if(new FeatureToggleBase().isFeatureEnabled('improved-discount-calculation')) {
41+
return getDiscountBeta();
42+
}
43+
...
44+
return discount
45+
}
46+
47+
private Decimal getDiscountBeta() {
48+
...
49+
return discount;
50+
}
51+
52+
...
53+
}
54+
```
55+
56+
**Eksempel hvor man extender FeatureToggleBase:**
57+
58+
```java
59+
public with sharing MyClass extends FeatureToggleBase {
60+
public MyClass() {
61+
...
62+
}
63+
64+
public Decimal getDiscount() {
65+
if(isFeatureEnabled('improved-discount-calculation')) {
66+
return getDiscountBeta();
67+
}
68+
...
69+
return discount
70+
}
71+
72+
private Decimal getDiscountBeta() {
73+
...
74+
return discount;
75+
}
76+
77+
...
78+
}
79+
```
80+
81+
## Avhengigheter
82+
83+
- [platform-datamodel](src/platform-data-model/feature-flag-custom-metadata) - datamodell
84+
- [custom-metadata-dao](src/platform-utility/custom-metadata-dao) - Abstraksjon av custom metadata

0 commit comments

Comments
 (0)