Understanding MS Rules Engine In-Built Post Rule Actions — Part 4 - Related to restaurantes, rule, understanding, jour, :
🍽️ Obsidian: Restaurantes

Yo soy una persona con muy mala memoria, es por eso que estoy tan obsesionado con tener sistemas que me faciliten el buscar información, porque muchas veces, si no estructuro muy bien esta, no recuerdo cómo la guardé y de igual forma la termino perdiendo. Esto mismo es gran parte del porqué me gusta tanto Obsidian como herramienta, me permite estructurar las cosas de forma muy similar a cómo lo hago mentalmente, es decir, en relaciones.
Por esta misma falta de memoria, he tenido situaciones en las que, por ejemplo, yo soy una persona que no tolera mucho el picante, entonces me ha tocado que voy a un restaurante, quiero pedir chilaquiles, pero no recuerdo si la vez pasada pedí los verdes y estos eran muy picantes, o si estaban bien, o si estaban mejor los rojos, etc. Para solucionar esto, como en muchas de las otras áreas de mi vida, tengo un sistema que me ayuda a organizar esta información de forma que pueda visitarla con facilidad la siguiente vez que vaya al restaurante, ver si algo me gustó, los detalles que tenía, cuánto me gustó, etc.
Restaurante: Como establecimiento o cadena. Platillo: El platillo como tal que voy a calificar. Journal: Normalmente esto se enlaza gracias a que en mi Journal escribo mis comidas.
Creo una nota del restaurante, porque esta va a ser la nota que voy a visitar cuando vuelva a ir al lugar. Además, voy a utilizar esa nota para que, al crear un nuevo platillo, este se pueda enlazar con el restaurante al que pertenece.
La estructura es muy simple. Para el ejemplo, voy a utilizar mi nota sobre McDonald's.
--- tags: - lugar - restaurante --- # 📌 McDonald's ## ⭐ Recomendaciones Enter fullscreen mode Exit fullscreen mode.
```dataview TABLE calificacion as "Calificación" FROM [[]] WHERE calificacion ``` Enter fullscreen mode Exit fullscreen mode.
## 🎫 Última visita Enter fullscreen mode Exit fullscreen mode.
```dataview LIST WITHOUT ID link(dateformat([website], "dd-MM-yyyy")) FROM [[]] SORT [website] DESC LIMIT 1 ``` Enter fullscreen mode Exit fullscreen mode.
Ahora vamos a desglosar cada una de las partes de la nota.
Las notas de restaurante tienen los tags:
Porque en mi sistema existen varios tipos de lugar, por ejemplo, empresas, por eso es necesario hacer la distinción de que es un restaurante.
Las recomendaciones no son nada más que una vista de Dataview que recopila todas las notas de Platillos que vamos a ver más adelante y me las muestra junto con la calificación que les puse. Como se puede apreciar en la imagen, yo soy muy fan de McDonald's.
Por último, esta sección solo busca cuándo fue la entrada más reciente en la que se hizo referencia al establecimiento y me muestra la nota correspondiente a esa fecha.
Esta es una de las partes que menos me gusta, porque requiere que yo llame explícitamente al establecimiento en mi nota de Journal. Quiero mejorar la query de forma que se detecte cuando yo hago una referencia a un platillo que esté enlazado al establecimiento, pero no he tenido el tiempo para hacerlo.
Esta nota hace referencia al platillo en sí. Esta nota la utilizo desde el restaurante, enlazando la nota al restaurante en el título para después obtener la calificación, pero también para la información nutricional del platillo. Esto es más relacionado con la parte de nutrición, entonces no lo voy a abordar.
--- calificacion: 5 tags: - platillo --- # 🥘 McMuffin normal de [[McDonald's]] Mi opinión con respecto a la comida. Algún *detalle* que deba recordar. ## 📊 Información nutrimental [Calorías:: 310 kcal] [Proteínas:: 12 g] [Grasas:: 13 g] [Carbohidratos:: 20 g] [Fibra:: 2 g] [Azúcares:: 2 g] Enter fullscreen mode Exit fullscreen mode.
El platillo tiene el tag platillo para poder filtrarlo rápidamente en las queries, pero además incluyo en la metadata la calificación que le doy en una escala del 1 al 5.
Y en el cuerpo de la nota puedo incluir cualquier información relevante, si la comida estuvo muy picante, si debía pedirlo sin jitomate, cualquier cosa que quiera recordar la siguiente vez que vaya al lugar.
El journal no lo voy a enseñar, porque sería mostrar información privada, además de que no tiene mucha ciencia, simplemente es incluir en mi nota journal alguna mención que enlace a la nota del restaurante.
De nuevo, esta es la parte que menos me gusta del sistema, porque eso lo hago para tener la referencia de cuándo fue la última vez que fui, pero eso solo funciona si es la primera vez que voy y creo las notas de los platillos o si hago la mención explícita.
Si tú tienes una mejor idea de cómo hacer que cada vez que mencione la nota de platillos en mi sección de comidas, eso se "registre" como una visita, te estaría muy agradecido de que me lo dejaras en un comentario.
Este sistema en Obsidian me ha permitido mejorar mi organización y memoria con respecto a los restaurantes y platillos que he probado. Aunque tiene algunos puntos de mejora, como la automatización de la última visita, su estructura modular me ha sido bastante útil. Al final, lo importante es tener un sistema que se adapte a mis necesidades y que pueda evolucionar con el tiempo. Si tienes sugerencias sobre cómo mejorar esta metodología, me encantaría leerlas. ¡Gracias por tu tiempo! 😊.
GitHub not long ago presented the public preview of Linux arm64 hosted runners for GitHub Actions. Free for public repositories, this revision provides deve......
Perplexity has introduced Deep Research, an AI-powered tool designed for conducting in-depth analysis across various fields, including finance, market......
It’s no wonder developers are increasingly overwhelmed. The number of new CVEs % in the last decade. An......
Visual Studio Code : mise à jour de CMake Tools

La version de février de CMake Tools est arrivée sur Visual Studio Code. CMake Tools supporte Cmake Language Services. Il s'agit d'une intégration plus profonde CMake Tools dans VS Code, par exemple avec l'intégration dabs IntelliSense, la colorisation du code. Le but est une intégration native évitant d'installer des extensions supplémentaires. La version de février 2025 supporte aussi Presets v9.
Les principales nouveautés de la communauté sont :
- ajout de la configuration par dossier par défaut dans les paramètres workspace.
- correction de plusieurs bugs sur CTest, le linker GCC.
Changelog de la version [website] : [website].
As the size and responsibilities of device fleets explode, the development of scalable processes to manage them is more crucial than ever. With our ti......
Withmonthly unique visitors and overauthors we are placed among the top Java related sites around. Constantly being on the lookout for......
Monzo Bank not long ago revealed Monzo Stand-in, an independent backup system on GCP that ensures essential banking services remain operational during app......
Understanding MS Rules Engine In-Built Post Rule Actions — Part 4

Hi Buddy! Welcome back to the part 4 of the MS Rules Engine series. In this article we will be concentrating on how to use different in-built post rule action to create a chain of rule executions.
Configuring EvaluateRule built-in action.
In this section, let’s explore how to configure EvaluateRule built-in action to create a chain of rule executions where you want to execute set of rules one after the other during OnSuccess or OnFailure of the parent rule.
To demonstrate this functionality, let’s take a use case we used in the previous article. which is in arcade business where we have to check the inventory of certain genre games belonging to a platform.
When the inventory falls below a threshold, we want to calculate the quantity of games that we need to reorder for the genre and platform in question.
In this article we will try to create two level nested rule for quantity falling below 10 and 5.
Download the base code from Github Repo.
Add a class named [website] into your project root folder.
into your project root folder. Add a new JSON rule named [website] to your RulesFiles folder.
to your folder. Add below content to the above created Json file.
[ { "WorkflowName" : "RestockingChainRules" , "Rules" : [ { "RuleName" : "ActionPlaystationGameRestock1" , "ErrorMessage" : "The action game stocks for the playstation are low. Restock by 5 units" , "ErrorType" : "Error" , "SuccessEvent" : "5" , "RuleExpressionType" : "LambdaExpression" , "Expression" : "[website] => [website] == \"Action\" AND x.Platform == \"PlayStation\").Sum(x => x.Quantity) < 5" , "Actions" : { "OnSuccess" : { "Name" : "OutputExpression" , "Context" : { "Expression" : "[website] => [website] == \"Action\" AND x.Platform == \"PlayStation\").Sum(x => x.Quantity) * 5" } }, "OnFailure" : { "Name" : "EvaluateRule" , "Context" : { "workflowName" : "RestockingChainRules" , "ruleName" : "ActionPlaystationGameRestock2" } } } }, { "RuleName" : "ActionPlaystationGameRestock2" , "ErrorMessage" : "The action game stocks for the playstation are low. Restock by 10 units" , "ErrorType" : "Error" , "SuccessEvent" : "10" , "RuleExpressionType" : "LambdaExpression" , "Expression" : "[website] => [website] == \"Action\" AND x.Platform == \"PlayStation\").Sum(x => x.Quantity) < 10" , "Actions" : { "OnSuccess" : { "Name" : "OutputExpression" , "Context" : { "Expression" : "[website] => [website] == \"Action\" AND x.Platform == \"PlayStation\").Sum(x => x.Quantity) * 10" } } } } ] } ] Enter fullscreen mode Exit fullscreen mode.
Modify the [website] model class under model's folder to include a new property called Quantity of type integer as show below.
namespace [website] ; public class Game { public string Title { get ; set ; } = string . Empty ; public string Genre { get ; set ; } = string . Empty ; public long Id { get ; set ; } public string Platform { get ; set ; } = string . Empty ; public string GamingStudio { get ; set ; } = string . Empty ; public decimal Price { get ; set ; } public int Quantity { get ; set ; } } Enter fullscreen mode Exit fullscreen mode.
Lets now add some code to our new [website] class file as shown below.
using RE = RulesEngine ; namespace MsRulesEngine ; public class RestockingChainRulesExample { public static async Task Run () { string filePath = Path . Combine ( Environment . CurrentDirectory , "RulesFiles" , "[website]" ); Console . WriteLine ( filePath ); string jsonString = File . ReadAllText ( filePath ); var workflows = JsonSerializer . Deserialize < Workflow [ ]> ( jsonString ); var gamesInventory = new List < Game > { new () { Title = "Halo" , Genre = "Action" , Id = 1 , Platform = "PlayStation" , GamingStudio = "Sony" , Price = [website] , Quantity = 5 }, new () { Title = "Yakuza" , Genre = "Action" , Id = 2 , Platform = "PlayStation" , GamingStudio = "EA" , Price = [website] , Quantity = 2 }, }; var ruleParameters = new RuleParameter [] { new ( "input1" , gamesInventory ), }; RE . RulesEngine rulesEngine = new ( workflows ); var result = await rulesEngine . ExecuteActionWorkflowAsync ( "RestockingChainRules" , "ActionPlaystationGameRestock1" , ruleParameters ); Console . WriteLine ( $"Rule: { result . Output } " ); } } Enter fullscreen mode Exit fullscreen mode.
Modify the [website] as shown below and execute the application.
// See [website] for more information using MsRulesEngine ; await RestockingChainRulesExample . Run (); Enter fullscreen mode Exit fullscreen mode.
You will observe the below output. It calculates 10 as restock quantity for PlayStation Action games and 50 for Xbox RPG games.
You execute chain of rules to find the matching one.
Easy to change the rule chaining process.
Can be mixed with OutputExpression action to stop the chain execution and terminal condition.
In our day-to-day business, we come across many scenarios where we want to perform various calculations or return different outputs out of a rule execution based on its OnSuccess and OnFailure we want to usually check if there are any sub rules it satisfies as shown in the current article.
This dynamic behavior helps us perform appropriate chaining process. Also, because of its dynamic nature we can easily change the chaining process as the business changes.
Hope this article will help you understand the use of built-in EvaluateRule Action and provide you guidance to use it for your needs.
To access my source code. Please go to my Github Link. In my next article I will explain about Nested Rules. Please don’t forget to check it out.
To get more articles like this, please follow me to get notification when it is available.
In a recent announcement on the React blog, the React team shared a significant improvement: Create React App (CRA) is being deprecated. This......
In this article, we will be implementing the MediatR and CQRS (Command Query Responsibility Segregation) pattern in our [website] Web API ......
The Perceptron Algorithm is one of the earliest and most influential machine learning models, forming the foundation for modern neural networks and su......
Market Impact Analysis
Market Growth Trend
2018 | 2019 | 2020 | 2021 | 2022 | 2023 | 2024 |
---|---|---|---|---|---|---|
7.5% | 9.0% | 9.4% | 10.5% | 11.0% | 11.4% | 11.5% |
Quarterly Growth Rate
Q1 2024 | Q2 2024 | Q3 2024 | Q4 2024 |
---|---|---|---|
10.8% | 11.1% | 11.3% | 11.5% |
Market Segments and Growth Drivers
Segment | Market Share | Growth Rate |
---|---|---|
Enterprise Software | 38% | 10.8% |
Cloud Services | 31% | 17.5% |
Developer Tools | 14% | 9.3% |
Security Software | 12% | 13.2% |
Other Software | 5% | 7.5% |
Technology Maturity Curve
Different technologies within the ecosystem are at varying stages of maturity:
Competitive Landscape Analysis
Company | Market Share |
---|---|
Microsoft | 22.6% |
Oracle | 14.8% |
SAP | 12.5% |
Salesforce | 9.7% |
Adobe | 8.3% |
Future Outlook and Predictions
The Obsidian Restaurantes Visual landscape is evolving rapidly, driven by technological advancements, changing threat vectors, and shifting business requirements. Based on current trends and expert analyses, we can anticipate several significant developments across different time horizons:
Year-by-Year Technology Evolution
Based on current trajectory and expert analyses, we can project the following development timeline:
Technology Maturity Curve
Different technologies within the ecosystem are at varying stages of maturity, influencing adoption timelines and investment priorities:
Innovation Trigger
- Generative AI for specialized domains
- Blockchain for supply chain verification
Peak of Inflated Expectations
- Digital twins for business processes
- Quantum-resistant cryptography
Trough of Disillusionment
- Consumer AR/VR applications
- General-purpose blockchain
Slope of Enlightenment
- AI-driven analytics
- Edge computing
Plateau of Productivity
- Cloud infrastructure
- Mobile applications
Technology Evolution Timeline
- Technology adoption accelerating across industries
- digital transformation initiatives becoming mainstream
- Significant transformation of business processes through advanced technologies
- new digital business models emerging
- Fundamental shifts in how technology integrates with business and society
- emergence of new technology paradigms
Expert Perspectives
Leading experts in the software dev sector provide diverse perspectives on how the landscape will evolve over the coming years:
"Technology transformation will continue to accelerate, creating both challenges and opportunities."
— Industry Expert
"Organizations must balance innovation with practical implementation to achieve meaningful results."
— Technology Analyst
"The most successful adopters will focus on business outcomes rather than technology for its own sake."
— Research Director
Areas of Expert Consensus
- Acceleration of Innovation: The pace of technological evolution will continue to increase
- Practical Integration: Focus will shift from proof-of-concept to operational deployment
- Human-Technology Partnership: Most effective implementations will optimize human-machine collaboration
- Regulatory Influence: Regulatory frameworks will increasingly shape technology development
Short-Term Outlook (1-2 Years)
In the immediate future, organizations will focus on implementing and optimizing currently available technologies to address pressing software dev challenges:
- Technology adoption accelerating across industries
- digital transformation initiatives becoming mainstream
These developments will be characterized by incremental improvements to existing frameworks rather than revolutionary changes, with emphasis on practical deployment and measurable outcomes.
Mid-Term Outlook (3-5 Years)
As technologies mature and organizations adapt, more substantial transformations will emerge in how security is approached and implemented:
- Significant transformation of business processes through advanced technologies
- new digital business models emerging
This period will see significant changes in security architecture and operational models, with increasing automation and integration between previously siloed security functions. Organizations will shift from reactive to proactive security postures.
Long-Term Outlook (5+ Years)
Looking further ahead, more fundamental shifts will reshape how cybersecurity is conceptualized and implemented across digital ecosystems:
- Fundamental shifts in how technology integrates with business and society
- emergence of new technology paradigms
These long-term developments will likely require significant technical breakthroughs, new regulatory frameworks, and evolution in how organizations approach security as a fundamental business function rather than a technical discipline.
Key Risk Factors and Uncertainties
Several critical factors could significantly impact the trajectory of software dev evolution:
Organizations should monitor these factors closely and develop contingency strategies to mitigate potential negative impacts on technology implementation timelines.
Alternative Future Scenarios
The evolution of technology can follow different paths depending on various factors including regulatory developments, investment trends, technological breakthroughs, and market adoption. We analyze three potential scenarios:
Optimistic Scenario
Rapid adoption of advanced technologies with significant business impact
Key Drivers: Supportive regulatory environment, significant research breakthroughs, strong market incentives, and rapid user adoption.
Probability: 25-30%
Base Case Scenario
Measured implementation with incremental improvements
Key Drivers: Balanced regulatory approach, steady technological progress, and selective implementation based on clear ROI.
Probability: 50-60%
Conservative Scenario
Technical and organizational barriers limiting effective adoption
Key Drivers: Restrictive regulations, technical limitations, implementation challenges, and risk-averse organizational cultures.
Probability: 15-20%
Scenario Comparison Matrix
Factor | Optimistic | Base Case | Conservative |
---|---|---|---|
Implementation Timeline | Accelerated | Steady | Delayed |
Market Adoption | Widespread | Selective | Limited |
Technology Evolution | Rapid | Progressive | Incremental |
Regulatory Environment | Supportive | Balanced | Restrictive |
Business Impact | Transformative | Significant | Modest |
Transformational Impact
Technology becoming increasingly embedded in all aspects of business operations. This evolution will necessitate significant changes in organizational structures, talent development, and strategic planning processes.
The convergence of multiple technological trends—including artificial intelligence, quantum computing, and ubiquitous connectivity—will create both unprecedented security challenges and innovative defensive capabilities.
Implementation Challenges
Technical complexity and organizational readiness remain key challenges. Organizations will need to develop comprehensive change management strategies to successfully navigate these transitions.
Regulatory uncertainty, particularly around emerging technologies like AI in security applications, will require flexible security architectures that can adapt to evolving compliance requirements.
Key Innovations to Watch
Artificial intelligence, distributed systems, and automation technologies leading innovation. Organizations should monitor these developments closely to maintain competitive advantages and effective security postures.
Strategic investments in research partnerships, technology pilots, and talent development will position forward-thinking organizations to leverage these innovations early in their development cycle.
Technical Glossary
Key technical terms and definitions to help understand the technologies discussed in this article.
Understanding the following technical concepts is essential for grasping the full implications of the security threats and defensive measures discussed in this article. These definitions provide context for both technical and non-technical readers.