Exploring the FeatureGroupSpec
A FeatureGroupSpec is composed of the following main elements:
-
A Folders element that holds a list of Folder child elements. Each Folder element depicts a folder where the feature group should appear in the UI via the Path attribute.
-
A Features element holds a list of child Feature elements to depict a list of the individual features included in the feature group. Each Feature element holds a FeatureID attribute that identifies the catalog item that identifies a feature (data form, data list, etc.) and a FeatureType attribute which denotes the type of feature (BatchType, BusinessProcess, CodeTable, DataFormInstance (Data Form), KPI, DataList, etc.)
After you add a FeatureGroupSpec to the project, notice the template provides Folders and Features elements. Let's view a typical spec that ships with the product. The spec below represents the Update constituents feature group. This FeatureGroupSpec expresses a grouping of related features into a single logical feature. For brevity, I have omitted listing each Feature tag in this particular spec.
<FeatureGroupSpec
xmlns="bb_appfx_featuregroup"
xmlns:common="bb_appfx_commontypes"
ID="77d416dc-a1ce-4cf3-a849-f708c229925f"
Name="Update constituents"
Description="Manage constituent records. Users can only make changes to constituent pages for which they have permissions."
Author="Blackbaud Product Development"
>
<Folders>
<Folder Path="Constituent\Constituent add and edit">
<common:InstalledProductList>
<common:InstalledProduct ID="bb1c17bc-9e0b-4683-b490-ee40d511fa05" />
</common:InstalledProductList>
</Folder>
<Folder Path="Sales\Advance sales">
<common:InstalledProductList>
<common:InstalledProduct ID="bb1c17bc-9e0b-4683-b490-ee40d511fa05" />
</common:InstalledProductList>
</Folder>
<Folder Path="Sales\Daily sales">
<common:InstalledProductList>
<common:InstalledProduct ID="bb1c17bc-9e0b-4683-b490-ee40d511fa05" />
</common:InstalledProductList>
</Folder>
</Folders>
<Features>
<Feature FeatureID="ea086b06-5044-47b8-813d-16ca5496267d" FeatureType="DataFormInstance" />
<Feature FeatureID="003A34FC-C78F-412D-8EBA-38782ED38E9F" FeatureType="DataFormInstance" />
<Feature FeatureID="005B4A95-345E-4BBA-BE8B-FADA88D927D4" FeatureType="DataFormInstance" />
<Feature FeatureID="02973088-F39A-4B44-BAA6-17EE2E78173A" FeatureType="DataFormInstance" />
<Feature FeatureID="0326f107-fd50-48c0-b2ad-6f4d7c452ff6" FeatureType="DataFormInstance" />
<Feature FeatureID="05b91600-2c10-4378-a921-6e9b698cb9ac" FeatureType="DataFormInstance" />
<Feature FeatureID="05f808b5-988e-4f93-a7bd-b785a7fa8998" FeatureType="DataFormInstance" />
... Omitted some of the DataFormInstance Features ....
<Feature FeatureID="06d7814b-6e46-4d59-b81c-a4bf916ef982" FeatureType="RecordOperation" />
<Feature FeatureID="08c44279-4439-4476-9b4c-1fd657c9e4d7" FeatureType="RecordOperation" />
<Feature FeatureID="0c2d6552-ec7f-4923-a4af-afc53114c32b" FeatureType="RecordOperation" />
<Feature FeatureID="0f147cb0-62f0-4999-97cd-45c2367c4341" FeatureType="RecordOperation" />
<Feature FeatureID="16f0d258-866e-4992-91ba-aa5da5980a42" FeatureType="RecordOperation" />
... Omitted some of the RecordOperation Features ....
<Feature FeatureID="50f78198-5b71-4e92-9191-c5a312b720f1" FeatureType="DataList" />
<Feature FeatureID="5300c3bf-d383-429a-928c-67ff757ae2bb" FeatureType="DataList" />
<Feature FeatureID="657a1c6e-779a-48a8-8162-a945a643a747" FeatureType="DataList" />
<Feature FeatureID="14594779-eb50-4174-8bb4-e12b01f4c0e1" FeatureType="SearchList" />
<Feature FeatureID="DFA7A452-E234-402D-A0ED-A2F83274A575" FeatureType="CodeTable" />
<Feature FeatureID="E2373A71-2F76-4beb-BCF9-58740AE32320" FeatureType="CodeTable" />
<Feature FeatureID="95D7BFE6-735E-42EF-87ED-D9F3124923A4" FeatureType="CodeTable" />
<Feature FeatureID="97689BC5-995A-4BEF-852B-128971667783" FeatureType="CodeTable" />
<Feature FeatureID="2C94CB2F-141A-46FB-9BD5-6D09119B9C48" FeatureType="CodeTable" />
<Feature FeatureID="4C50F1E0-12BB-4EED-A6D2-4A7EBE279C6A" FeatureType="CodeTable" />
</Features>
</FeatureGroupSpec>
Reviewing the list of features within the UI for a Feature Group
Let's take a look how the individual Feature elements defined within the FeatureGroupSpec are represented within the web shell user interface of Blackbaud CRM. System Administrators configure Feature Groups to a system role. Once the spec is loaded into the catalog system, an administrator can assign the Update constituents Feature Group to the Volunteer Manager system role via the Permissions tab on the page that manages the Volunteer Manager system role. Any user assigned to this system role will have access to all the features organized within the Feature Group. Well start by looking at the list of features which are declared within the Features tag within the FeatureGroupSpec. Begin by navigating to the Administration functional area followed selecting the Security task and finally the System roles task which will take you to the System Roles page:
Selecting the Volunteer Manager system role within the list navigates the user to the System Role Information page for the Volunteer Manager system role. The Permissions tab is used to display a list of feature groups, notably the Update constituents feature group (permission):
Selecting the Update constituents feature group navigates the user to the Feature Group Page. Each feature listed below corresponds to an individual Feature element within the FeatureGroupSpec.
You can view all the system roles that utilize the Update constituents feature group by selecting the System Roles tab on the page. In addition to the Volunteer Manager system role, you can see the other 7 system roles that allow any user assigned to the system role the ability to update a constituent. For example, any user assigned to the Event Manager system role will be also able to update a constituent as defined by the Update constituents feature group:
Assign Permissions (Feature Group) to a System Role
Let's take a look how the individual Folder elements within aFeatureGroupSpec are represented within the user interface. We will start at the page for the Volunteer Manager system role. Selecting the Permissions tab reveals the Assign permissions action (button) and a list of permissions (feature groups) that have already been assigned to this particular system role including the Update constituents feature group:
Selecting the Assign permissions action button causes the Assign Permissions screen to appear. Under Categories, a hierarchy of permissions appear in folders that are organized based on each Folder element's Path attribute value,
To grant rights to all permissions in a folder, select the folder on the left and click Grant above the Categories list. To grant rights to a particular permission (feature group), select the feature group within the list of permissions on the right and click Grant above the Permissions list.