Filtering a List in Camunda8 DMN

I have the following list of ingredients with their properties on camunda dmn.

[
{
“name”: “prosciutto_crudo”,
“calories”: 250,
“allergens”: ,
“dietary_restrictions”: “omnivore”
},
{
“name”: “coppa”,
“calories”: 300,
“allergens”: ,
“dietary_restrictions”: “omnivore”
},
{
“name”: “salame”,
“calories”: 400,
“allergens”: ,
“dietary_restrictions”: “omnivore”
},
{
“name”: “mortadella”,
“calories”: 350,
“allergens”: [“lactose”],
“dietary_restrictions”: “omnivore”
},
{
“name”: “gnocco_fritto”,
“calories”: 300,
“allergens”: [“gluten”],
“dietary_restrictions”: “vegan”
},
{
“name”: “fried_potatoes”,
“calories”: 300,
“allergens”: ,
“dietary_restrictions”: “vegan”
},
{
“name”: “beef”,
“calories”: 250,
“allergens”: ,
“dietary_restrictions”: “omnivore”
},
{
“name”: “pickled_vegetables”,
“calories”: 30,
“allergens”: ,
“dietary_restrictions”: “vegan”
},
{
“name”: “spinach”,
“calories”: 23,
“allergens”: ,
“dietary_restrictions”: “vegan”
},
{
“name”: “parmesan_cheese”,
“calories”: 431,
“allergens”: [“lactose”],
“dietary_restrictions”: “vegetarian”
},
{
“name”: “mullet_roe”,
“calories”: 250,
“allergens”: ,
“dietary_restrictions”: “omnivore”
},
{
“name”: “octopus”,
“calories”: 82,
“allergens”: ,
“dietary_restrictions”: “omnivore”
},
{
“name”: “olives”,
“calories”: 115,
“allergens”: ,
“dietary_restrictions”: “vegan”
},
{
“name”: “tomato_gazpacho”,
“calories”: 20,
“allergens”: ,
“dietary_restrictions”: “vegan”
},
{
“name”: “potato_chips”,
“calories”: 150,
“allergens”: ,
“dietary_restrictions”: “vegan”
},
{
“name”: “baked_potatoes”,
“calories”: 20,
“allergens”: ,
“dietary_restrictions”: “vegan”
},
{
“name”: “chickpeas”,
“calories”: 164,
“allergens”: ,
“dietary_restrictions”: “vegan”
},
{
“name”: “asparagus”,
“calories”: 20,
“allergens”: ,
“dietary_restrictions”: “vegan”
},
{
“name”: “cherry_tomatoes”,
“calories”: 18,
“allergens”: ,
“dietary_restrictions”: “vegan”
},
{
“name”: “olive_oil”,
“calories”: 884,
“allergens”: ,
“dietary_restrictions”: “vegan”
},
{
“name”: “burrata_cheese”,
“calories”: 300,
“allergens”: [“lactose”],
“dietary_restrictions”: “vegan”
},
{
“name”: “salad”,
“calories”: 15,
“allergens”: ,
“dietary_restrictions”: “vegan”
},
{
“name”: “tomato_coral”,
“calories”: 20,
“allergens”: ,
“dietary_restrictions”: “vegan”
},
{
“name”: “caramelized_onion”,
“calories”: 40,
“allergens”: ,
“dietary_restrictions”: “vegan”
},
{
“name”: “tortellini”,
“calories”: 300,
“allergens”: [“gluten”, “egg”],
“dietary_restrictions”: “vegan”
},
{
“name”: “meat_broth”,
“calories”: 50,
“allergens”: ,
“dietary_restrictions”: “omnivore”
},
{
“name”: “ricotta_cheese”,
“calories”: 174,
“allergens”: [“lactose”],
“dietary_restrictions”: “vegan”
},
{
“name”: “butter”,
“calories”: 717,
“allergens”: [“lactose”],
“dietary_restrictions”: “vegan”
},
{
“name”: “sage”,
“calories”: 30,
“allergens”: ,
“dietary_restrictions”: “vegan”
},
{
“name”: “rice”,
“calories”: 130,
“allergens”: ,
“dietary_restrictions”: “vegan”
},
{
“name”: “balsamic_vinegar”,
“calories”: 88,
“allergens”: ,
“dietary_restrictions”: “vegan”
},
{
“name”: “egg_tagliatelle”,
“calories”: 350,
“allergens”: [“gluten”, “egg”],
“dietary_restrictions”: “vegetarian”
},
{
“name”: “beef_ragu”,
“calories”: 250,
“allergens”: ,
“dietary_restrictions”: “omnivore”
},
{
“name”: “mezze_maniche_pasta”,
“calories”: 350,
“allergens”: [“gluten”],
“dietary_restrictions”: “vegan”
},
{
“name”: “arugula_pesto”,
“calories”: 150,
“allergens”: [“nuts”],
“dietary_restrictions”: “vegan”
},
{
“name”: “stracciatella_cheese”,
“calories”: 300,
“allergens”: [“lactose”],
“dietary_restrictions”: “vegan”
},
{
“name”: “toasted_almonds”,
“calories”: 576,
“allergens”: [“nuts”],
“dietary_restrictions”: “vegan”
},
{
“name”: “spaghetti”,
“calories”: 350,
“allergens”: [“gluten”],
“dietary_restrictions”: “vegan”
},
{
“name”: “pecorino_cheese”,
“calories”: 402,
“allergens”: [“lactose”],
“dietary_restrictions”: “vegetarian”
},
{
“name”: “red_shrimp_tartare”,
“calories”: 80,
“allergens”: ,
“dietary_restrictions”: “omnivore”
},
{
“name”: “lime”,
“calories”: 30,
“allergens”: ,
“dietary_restrictions”: “vegan”
},
{
“name”: “sea_bream_ravioli”,
“calories”: 200,
“allergens”: [“gluten”],
“dietary_restrictions”: “vegan”
},
{
“name”: “squid_ink_sauce”,
“calories”: 60,
“allergens”: ,
“dietary_restrictions”: “vegetarian”
},
{
“name”: “basil_cream”,
“calories”: 50,
“allergens”: [“lactose”],
“dietary_restrictions”: “vegan”
},
{
“name”: “parmesan_cream”,
“calories”: 431,
“allergens”: [“lactose”],
“dietary_restrictions”: “vegan”
},
{
“name”: “candied_lemon”,
“calories”: 40,
“allergens”: ,
“dietary_restrictions”: “vegan”
},
{
“name”: “beef_filet”,
“calories”: 250,
“allergens”: ,
“dietary_restrictions”: “omnivore”
},
{
“name”: “borettane_onions”,
“calories”: 40,
“allergens”: ,
“dietary_restrictions”: “vegan”
},
{
“name”: “tuna”,
“calories”: 130,
“allergens”: ,
“dietary_restrictions”: “omnivore”
},
{
“name”: “teriyaki_sauce”,
“calories”: 89,
“allergens”: ,
“dietary_restrictions”: “vegan”
},
{
“name”: “vegetables”,
“calories”: 20,
“allergens”: ,
“dietary_restrictions”: “vegan”
},
{
“name”: “guacamole”,
“calories”: 160,
“allergens”: ,
“dietary_restrictions”: “vegan”
},
{
“name”: “eggplant”,
“calories”: 25,
“allergens”: ,
“dietary_restrictions”: “vegan”
},
{
“name”: “parsley_oil”,
“calories”: 884,
“allergens”: ,
“dietary_restrictions”: “vegan”
},
{
“name”: “chicken”,
“calories”: 165,
“allergens”: ,
“dietary_restrictions”: “omnivore”
},
{
“name”: “fontina_cheese”,
“calories”: 389,
“allergens”: [“lactose”],
“dietary_restrictions”: “vegetarian”
},
{
“name”: “pancetta”,
“calories”: 393,
“allergens”: ,
“dietary_restrictions”: “omnivore”
},
{
“name”: “potato_cream”,
“calories”: 80,
“allergens”: [“lactose”],
“dietary_restrictions”: “vegan”
},
{
“name”: “quail”,
“calories”: 200,
“allergens”: ,
“dietary_restrictions”: “omnivore”
},
{
“name”: “cointreau_demi_glace”,
“calories”: 90,
“allergens”: ,
“dietary_restrictions”: “vegetarian”
},
{
“name”: “potato_millefeuille”,
“calories”: 80,
“allergens”: ,
“dietary_restrictions”: “vegan”
},
{
“name”: “beef_cheek”,
“calories”: 250,
“allergens”: ,
“dietary_restrictions”: “omnivore”
},
{
“name”: “horseradish_potato_puree”,
“calories”: 80,
“allergens”: [“lactose”],
“dietary_restrictions”: “vegan”
},
{
“name”: “sauteed_agretti”,
“calories”: 25,
“allergens”: ,
“dietary_restrictions”: “vegan”
},
{
“name”: “barozzi_cake”,
“calories”: 400,
“allergens”: [“lactose”],
“dietary_restrictions”: “vegan”
},
{
“name”: “mascarpone_cream”,
“calories”: 450,
“allergens”: [“lactose”],
“dietary_restrictions”: “vegan”
},
{
“name”: “tiramisu_parfait”,
“calories”: 190,
“allergens”: [“lactose”],
“dietary_restrictions”: “vegan”
},
{
“name”: “coffee_coral”,
“calories”: 70,
“allergens”: ,
“dietary_restrictions”:
},
{
“name”: “sponge_cake”,
“calories”: 200,
“allergens”: [“gluten”, “lactose”],
“dietary_restrictions”: “vegan”
},
{
“name”: “alchermes”,
“calories”: 100,
“allergens”: ,
“dietary_restrictions”: “vegan”
},
{
“name”: “custard”,
“calories”: 130,
“allergens”: [“lactose”],
“dietary_restrictions”: “vegan”
},
{
“name”: “chocolate_macaron”,
“calories”: 120,
“allergens”: [“gluten”, “lactose”, “nuts”],
“dietary_restrictions”: “vegan”
},
{
“name”: “crisp_wafer”,
“calories”: 300,
“allergens”: [“gluten”],
“dietary_restrictions”: “vegan”
},
{
“name”: “zabaglione_chantilly_cream”,
“calories”: 300,
“allergens”: [“lactose”],
“dietary_restrictions”: “vegan”
},
{
“name”: “fresh_raspberries”,
“calories”: 52,
“allergens”: ,
“dietary_restrictions”: “vegan”
},
{
“name”: “anise_panna_cotta”,
“calories”: 200,
“allergens”: [“lactose”],
“dietary_restrictions”: “vegan”
},
{
“name”: “pink_peppercorn_tuille”,
“calories”: 80,
“allergens”: [“gluten”],
“dietary_restrictions”: “vegan”
},
{
“name”: “caramelized_orange”,
“calories”: 60,
“allergens”: ,
“dietary_restrictions”: “vegan”
},
{
“name”: “fresh_fruit_salad”,
“calories”: 40,
“allergens”: ,
“dietary_restrictions”: “vegan”
},
{
“name”: “lemon_sorbet”,
“calories”: 130,
“allergens”: ,
“dietary_restrictions”: “vegan”
}
]

I wanna filter this list, so I made another decision table that takes in input 3 strings: “Omnivore”, “Vegetarian” and “Vegan”. If I insert omnivore I should get the whole list as output while if I insert vegetarian I should get only the items that are either vegetarian or vegan and for the vegan input i should get just the vegan items.

My drd structure is the following:
image
And my decision table columns look something like this, I have tried different feel expressions but i always get errors.

What am I doing wrong? Is this not doable on camunda decision tables? Im new to the subject. Thanks a lot.

Can you share the error you are getting?

Can you share the correct JSON object, there’s all sorts of problems with the one you’ve posted.

Hi @Ayan

You should have Ingredient_List defined as a 2nd input and keep entries for it empty. Following is a simplified working example in which we defined listVar as input and listOutputVar as output. Output entries can access the value of listVar.
For example the output entry for the 1st rule is listVar[item.name = "x"] which returns a list contains only items which have name attribute set to “x”

test_dmn_process.bpmn (3.5 KB)
test_dmn_list.dmn (2.0 KB)


This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.