Voor mijn afstudeer project op stage moet ik een module maken waarmee dynamisch product bundels aangemaakt of aangepast kunnen worden.
Situatie schets:
We gebruiken een webshop die draait op Magento.
Het is een groot bedrijf dat tuinkappen levert, een klant koopt een [kleur] tuinkap van [meter] breed...
Dit is in feite een product bundel, een kap van 12m breed bevat bijvoorbeeld 57 schroeven en nog 14 andere producten met een variabel aantal, dus een kap van 7 meter heeft 38 schroeven, etc.
Wat ik aan het maken ben:
In de backend moet per product een aantal regels kunnen worden in gesteld voor een product bundel.
voorbeeld:
dit alles prop ik in een array.
voorbeeld
Let even niet op mijn prachtige benaming.
Dit alles heb ik werkend in de testomgeving, de conditions en actions kan ik uitvoeren en werkt allemaal naar behoren.
Dit alles wordt door een simpele functie ge-for-looped. Hier krijg ik elke condition of action apart te zien.
Ik houd ook bij in welk level dit genest is.
Het volgende punt is alles op te slaan in de database.
Ik zie hier twee mogelijkheden voor.
Mogelijkheid 1:
Ik sla elke condition of action apart op in een table, deze zal ik later aan elkaar 'plakken' in een array.
Hier zal ik relaties en 'nest-niveaus' moeten leggen.
Voordelen:
-Ik kan rulesets later hergebruiken
Nadelen:
-Ik moet een verschillende relaties en nest-niveaus bij houden.
Mogelijkheid 2:
Ik encode de volledige array in json, sla deze json-string op in de database met een product-sku zodat ik weet bij welk product deze ruleset hoort. En decode deze later naar een array als ik het product uit wil lezen.
Voordelen:
-Dit zal een snellere manier zijn om rulesets te laden. (betere performance)
-Geen gekloot met verschillende nest relaties tussen verschillende rules in een rule set
Nadelen:
-Het is lastiger om een ruleset een tweede keer te gebruiken, ik kan dus de ruleset van een setje schroeven niet hergebruiken voor bijvoorbeeld een set betonpoeren.
Mijn persoonlijke voorkeur gaat uit naar mogelijkheid 2, echter is webdevelopment nog redelijk nieuw voor mij en wil ik dus feedback hebben op mijn gedachtengang.
Ik zoek dus geen kant-en-klare oplossing hebben, maar feedback op mijn gedachtengang.
Situatie schets:
We gebruiken een webshop die draait op Magento.
Het is een groot bedrijf dat tuinkappen levert, een klant koopt een [kleur] tuinkap van [meter] breed...
Dit is in feite een product bundel, een kap van 12m breed bevat bijvoorbeeld 57 schroeven en nog 14 andere producten met een variabel aantal, dus een kap van 7 meter heeft 38 schroeven, etc.
Wat ik aan het maken ben:
In de backend moet per product een aantal regels kunnen worden in gesteld voor een product bundel.
voorbeeld:
code:
1
2
3
4
5
| If Lengte Greater then 6,06
If Staanders Equal to 2
Do Lengte Multiply attribute by 2
Do Liggers Is 4
If Dak type Equal to Glas |
dit alles prop ik in een array.
voorbeeld
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
| Array
(
[0] => Array
(
[THING] => CONDITION
[ATTRIBUTE] => Lengte
[OPERATOR] => Greater then
[ATTRIBUTE_VALUE] => 6,06
)
[1] => Array
(
[0] => Array
(
[THING] => CONDITION
[ATTRIBUTE] => Staanders
[OPERATOR] => Equal to
[ATTRIBUTE_VALUE] => 2
)
[1] => Array
(
[0] => Array
(
[THING] => ACTION
[AMOUNT] => 2
[OPERATOR] => Multiply attribute by
[ATTRIBUTE] => Lengte
)
[1] => Array
(
[THING] => ACTION
[AMOUNT] => 4
[OPERATOR] => Is
[ATTRIBUTE] => Liggers
)
)
)
[2] => Array
(
[THING] => CONDITION
[ATTRIBUTE] => Dak type
[OPERATOR] => Equal to
[ATTRIBUTE_VALUE] => Glas
)
) |
Let even niet op mijn prachtige benaming.
Dit alles heb ik werkend in de testomgeving, de conditions en actions kan ik uitvoeren en werkt allemaal naar behoren.
Dit alles wordt door een simpele functie ge-for-looped. Hier krijg ik elke condition of action apart te zien.
Ik houd ook bij in welk level dit genest is.
Het volgende punt is alles op te slaan in de database.
Ik zie hier twee mogelijkheden voor.
Mogelijkheid 1:
Ik sla elke condition of action apart op in een table, deze zal ik later aan elkaar 'plakken' in een array.
Hier zal ik relaties en 'nest-niveaus' moeten leggen.
Voordelen:
-Ik kan rulesets later hergebruiken
Nadelen:
-Ik moet een verschillende relaties en nest-niveaus bij houden.
Mogelijkheid 2:
Ik encode de volledige array in json, sla deze json-string op in de database met een product-sku zodat ik weet bij welk product deze ruleset hoort. En decode deze later naar een array als ik het product uit wil lezen.
Voordelen:
-Dit zal een snellere manier zijn om rulesets te laden. (betere performance)
-Geen gekloot met verschillende nest relaties tussen verschillende rules in een rule set
Nadelen:
-Het is lastiger om een ruleset een tweede keer te gebruiken, ik kan dus de ruleset van een setje schroeven niet hergebruiken voor bijvoorbeeld een set betonpoeren.
Mijn persoonlijke voorkeur gaat uit naar mogelijkheid 2, echter is webdevelopment nog redelijk nieuw voor mij en wil ik dus feedback hebben op mijn gedachtengang.
Ik zoek dus geen kant-en-klare oplossing hebben, maar feedback op mijn gedachtengang.