ICustomAttributeServiceSaveCustomAttribute Method |
Namespace: Dundas.BI.AccountServices
Exception | Condition |
---|---|
ArgumentNullException | attributeInfo is . |
ArgumentException | The properties of attributeInfo are invalid. |
ArgumentOutOfRangeException | The name property in attributeInfo is longer than MaxNameLength. |
DuplicateItemException | A custom attribute with the same name already exists. |
InvalidOperationException | Update an existing custom attribute from multi-value to single value. |
NoPrivilegeException | The caller is not a system administrator or tenant administrator for the tenant associated with the custom attribute. |
InvalidSessionException | The caller context is not associated with a valid session. |
This example demonstrates how to create the Dundas BI engine, start the Dundas BI engine, log on, create a custom attribute called Daves, assign that custom attribute to the Dave accounts, and then shutdown the Dundas BI engine.
using Dundas.BI; using Dundas.BI.AccountServices; using Dundas.BI.Services; using System.Collections.ObjectModel; ... // Create the engine. EngineManager.CreateEngine( // Path to the application's data folder. Type: System.String @"C:\Program Files\Dundas Data Visualization Inc\Dundas BI\Instances\Instance1\www\BIWebsite\App_Data" ); try { // Start the Dundas BI Engine. EngineManager.StartEngine(); // Create a caller context not associated with any session. using(Engine.Current.GetService<ICallerContextService>().CreateAndSetCurrentContext(null)) { // LogOn. LogOnResult logOnResult = Engine.Current.GetService<ILogOnService>().LogOn( // The account name. Type: System.String "admin", // The password. Type: System.String "1234", // Delete other sessions for the logon to succeed. Type: System.Boolean true, // Culture to associate with the session, or null. Type: System.Globalization.CultureInfo null ); // Set the current session ID. Engine.Current.GetService<ICallerContextService>().CurrentContext.SetCurrentSessionId( logOnResult.Session.Id ); // Get the custom attribute service. ICustomAttributeService customAttributeService = Engine.Current.GetService<ICustomAttributeService>(); // Save the new custom attribute. customAttributeService.SaveCustomAttribute( new CustomAttributeInfo() { Description = "These are the Daves I know", Name = "Daves", InheritanceBehavior = CustomAttributeInheritanceBehavior.Override, IsMultiValue = false } ); // Now get the custom attribute. It's ID will be needed. var davesCustomAttribute = customAttributeService.GetCustomAttribute("Daves"); // Get the account service. IAccountService accountService = Engine.Current.GetService<IAccountService>(); // Create a filter rule to get all the users that have a // display name that starts with <c>dav</c>. AccountQueryFilterRule accountQueryFilterRule = new AccountQueryFilterRule( AccountQueryField.DisplayName, Dundas.BI.QueryFilterOperator.StartsWith, "dav" ); // Get all the dave accounts IList<Account> daveAccounts = accountService.AccountQuery( 0, 0, null, new List<AccountQueryFilterRule>() { accountQueryFilterRule } ); // Loop through the dave accounts. foreach(Account daveAccount in daveAccounts) { // Add the custom attribute to the Dave Account. daveAccount.CustomAttributes.Add( davesCustomAttribute.Id, new CustomAttributeValue(davesCustomAttribute.Id) { SingleValue = "Is a Dave I know" } ); // Save the account with the custom attribute. accountService.SaveAccount(daveAccount); } } } finally { EngineManager.ShutdownEngine(); }