Monday, 4 August 2014



Salesforce Article Management:  Get DataCategories from DataCategoryName for 'Knowledge Articles'


v Create DataCategory for Articles:
        
Setup è Knowledge è Data Category
                       
Crate new Data Category, named ‘SampleDataCategoryName’.

v Create DataCategoryValues and Map to DataCategory:
           
Setup è Knowledge è Data Category Assignment
                       
Add SampleDataCategoryNames to SampleDataCategoryName.

For example: SampleDataCategoryName1, SampleDataCategoryName2, SampleDataCategoryName3

v Requirement:
                       
There are scenarios where we need to fetch all assigned DataCategory values based on particular DataCategoryName.

Below is the  apex code to get all assigned DataCategory values based on DataCategoryName as 'SampleDataCategoryName'.
                       
String dataCategoryGroupName = 'SampleDataCategoryName';

//variable declaration

DataCategory [] toplevelCategories;
DataCategory [] childCategories;     
List<String>dataCategoriesValues = new List<String>();       
List<DataCategoryGroupSobjectTypePair> pairs = new List<DataCategoryGroupSobjectTypePair>();      
DataCategoryGroupSobjectTypePair pairObj = new DataCategoryGroupSobjectTypePair();
         
pairObj.setSobject('KnowledgeArticleVersion');
pairObj.setDataCategoryGroupName(dataCategoryGroupName);
pairs.add(pairObj);    
                  
List<DescribeDataCategoryGroupStructureResult> describeCategoryStructureResult = Schema.describeDataCategoryGroupStructures(pairs, false);
         
for(DescribeDataCategoryGroupStructureResult result1 : describeCategoryStructureResult){
     toplevelCategories = result1.getTopCategories();
}
         
for(DataCategory result2 : toplevelCategories){
     childCategories = result2.getChildCategories();
}
         
for(DataCategory result3 : childCategories){
     dataCategoriesValues.add(result3.getLabel());
}
         
system.debug('dataCategoriesValues==>'+dataCategoriesValues);    
         

// Output is:  dataCategoriesValues==> SampleDataCategoryName1 , // SampleDataCategoryName2 , SampleDataCategoryName3 '