{"id":23265159,"url":"https://github.com/nrules/nrules.language","last_synced_at":"2025-04-07T07:18:38.419Z","repository":{"id":86507112,"uuid":"113719386","full_name":"NRules/NRules.Language","owner":"NRules","description":"Business rules language for NRules rules engine.","archived":false,"fork":false,"pushed_at":"2025-03-05T00:31:05.000Z","size":218,"stargazers_count":79,"open_issues_count":6,"forks_count":19,"subscribers_count":8,"default_branch":"develop","last_synced_at":"2025-03-31T06:06:49.665Z","etag":null,"topics":["c-sharp","language","nrules","rules","rules-engine"],"latest_commit_sha":null,"homepage":"https://nrules.net","language":"PowerShell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NRules.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-12-10T03:20:21.000Z","updated_at":"2025-03-05T00:31:09.000Z","dependencies_parsed_at":null,"dependency_job_id":"7bc108a9-2bb2-4554-8f09-2b0a3fe67d8b","html_url":"https://github.com/NRules/NRules.Language","commit_stats":{"total_commits":100,"total_committers":2,"mean_commits":50.0,"dds":"0.010000000000000009","last_synced_commit":"7f7aa46f4642ce19f0ccac760b1495924b4df4f8"},"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NRules%2FNRules.Language","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NRules%2FNRules.Language/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NRules%2FNRules.Language/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NRules%2FNRules.Language/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NRules","download_url":"https://codeload.github.com/NRules/NRules.Language/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247608160,"owners_count":20965953,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c-sharp","language","nrules","rules","rules-engine"],"created_at":"2024-12-19T15:17:46.218Z","updated_at":"2025-04-07T07:18:38.396Z","avatar_url":"https://github.com/NRules.png","language":"PowerShell","readme":"# Rule# - Language for NRules\n\nRule# (Rule Sharp) is a business rules language for the [NRules](https://github.com/NRules/NRules) rules engine.\n\n[![Build status](https://img.shields.io/appveyor/build/NRules/NRules-Language)](https://ci.appveyor.com/project/NRules/NRules-Language) [![NuGet](https://img.shields.io/nuget/v/NRules.RuleSharp)](https://nuget.org/packages/NRules.RuleSharp) [![NRules on Stack Overflow](https://img.shields.io/stackexchange/stackoverflow/t/nrules)](http://stackoverflow.com/questions/tagged/nrules) [![NRules GitHub Discussions](https://img.shields.io/github/discussions/NRules/NRules)](https://github.com/NRules/NRules/discussions)\n\n## Installing Rule#\n\nTo compile Rule# rules to the canonical form, get [NRules.RuleSharp](https://www.nuget.org/packages/NRules.RuleSharp) from nuget via the package manager\n```console\n\u003e Install-Package NRules.RuleSharp\n```\n\nTo compile rules in the canonical form to the runtime model and to be able to execute rules, install [NRules.Runtime](https://www.nuget.org/packages/NRules.Runtime)\n```console\n\u003e Install-Package NRules.Runtime\n```\n\n## Getting Started\n\nIn NRules, rules are expressed against a domain model.\nGiven the following domain model (located in the ```Domain``` namespace):\n\n```c#\nnamespace Domain;\n\npublic class Customer\n{\n    public string Name { get; set; }\n    public bool IsPreferred { get; set; }\n}\n\npublic class Order\n{\n    public int Quantity { get; set; }\n    public double UnitPrice { get; set; }\n    public double PercentDiscount { get; set; }\n    public bool IsDiscounted =\u003e PercentDiscount \u003e 0;\n    public double Price =\u003e UnitPrice*Quantity*(1.0 - PercentDiscount/100.0);\n}\n```\n\nAnd given the following rule ```Discount.rul```:\n\n```\nusing Domain;\n\nrule \"Order Discount\"\nwhen\n    var customer = Customer(x =\u003e x.IsPreferred);\n    var order = Order(x =\u003e !x.IsDiscounted, x =\u003e x.Quantity \u003e 10);\n    \nthen\n    order.PercentDiscount = 5.0;\n    Console.WriteLine(\"Applied discount. Customer={0}, Discount={1}\", customer.Name, order.PercentDiscount);\n```\n\nThe following code will compile the ```Discount.rul```, insert facts into the rules session and fire the activated rules.\n\n```c#\nvar repository = new RuleRepository();\nrepository.AddNamespace(\"System\");\nrepository.AddReference(typeof(Console).Assembly);\nrepository.AddReference(typeof(Order).Assembly);\n\nrepository.Load(@\"Discount.rul\");\n\nvar factory = repository.Compile();\nvar session = factory.CreateSession();\n\nvar customer = new Customer {Name = \"John Doe\", IsPreferred = true};\nvar order1 = new Order {Quantity = 12, UnitPrice = 10.0};\nvar order2 = new Order {Quantity = 5, UnitPrice = 15.0};\n\nsession.Insert(customer);\nsession.InsertAll(new[] {order1, order2});\n\nsession.Fire();\n```\n\nThis prints\n```console\nApplied discount. Customer=John Doe, Discount=5\n```\n\n## Getting Help\n\nUse the following discussion and Q\u0026A platforms to get help with NRules Rule#\n\n- [Discussions](https://github.com/NRules/NRules/discussions)\n- [Stack Overflow](https://stackoverflow.com/questions/tagged/nrules)\n\n## Contributing\n\nSee [Contributor Guide](https://github.com/NRules/NRules/blob/main/CONTRIBUTING.md) for the guidelines on how to contribute to the project.\n\n---\nCopyright \u0026copy; 2012-2025 [Sergiy Nikolayev](https://github.com/snikolayev) under the [MIT license](LICENSE.txt).\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnrules%2Fnrules.language","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnrules%2Fnrules.language","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnrules%2Fnrules.language/lists"}