Actions triggered from the Dynamic Actions for Unified Health Scoring component are logged in the Health Score Action Log object. You can customize the information logged in this object using the IUnifiedHealthScore Apex interface in a custom Apex class.
Stores health score information in the Health Score Action Log object. The action history logged in Health Score Action Log doesn’t include score information by default.
saveActionDetail(var1)
Stores health score information in the Health Score Action Log object. The action history logged in Health Score Action Log doesn’t include score information by default.
Signature
public Boolean saveActionDetail(Map<String,String> var1)
A map of key-value pairs for the attributes, including subject ID, action status, action date, action label, action name, action description, action icon URL, and performed by ID.
This example shows an implementation of the healthcloudext.IUnifiedHealthScore interface.
Using this sample code, your action logs now also mention the specified score category and its score value at the time the action was triggered.
1global class ApexClassForCustomLogs implements healthcloudext.IUnifiedHealthScore{//IMPORTANT: replace CustomActionLog with the name the Apex class2 public Boolean saveActionDetail(Map<String, String>request){3 try{4 String aSubject = request.get('subjectId');5 List<HealthScore>aHealthScore = [select CurrentScore from HealthScore where SubjectId=:aSubject and ScoreCategoryId='0gzRN00000001drYAA'];6 //IMPORTANT: Replace 0gzRN00000001drYAA with the Id of your score category.7 List<HealthScoreActionLog>acctList = new List<HealthScoreActionLog>();8 HealthScoreActionLog aHealthScoreActionLog = new HealthScoreActionLog(9 ActionDescription=request.get('actionDescription'),10 ActionIconUrl=request.get('actionIconUrl'),11 ActionLabel=request.get('actionLabel'),12 ActionName=request.get('actionName'),13 ActionStatus=request.get('actionStatus'),14 PerformedById=request.get('performedById'),15 SubjectId=request.get('subjectId'),16 ActionDate=datetime.now(),17 Score=aHealthScore[0].CurrentScore,18 ScoreCategoryId='0gzRN00000001drYAA'//IMPORTANT: Replace 0gzRN00000001drYAA with the Id of your score category.19);20 acctList.add(aHealthScoreActionLog);21 Database.SaveResult[]srList = Database.insert(acctList, false);22 for(Database.SaveResult sr : srList){23 if(sr.isSuccess()){24 // Operation was successful, so get the ID of the record that was processed25 System.debug('Successfully inserted account. HealthScoreActionLog ID: ' + sr.getId());26}27 else{28 // Operation failed, so get all errors29 for(Database.Error err : sr.getErrors()){30 System.debug('The following error has occurred.');31 System.debug(err.getStatusCode() + ': ' + err.getMessage());32 System.debug('Account fields that affected this error: ' + err.getFields());33}34}35}36 //insert aHealthScoreActionLog;37 return true;38}catch(DmlException e){39 System.debug('An unexpected error has occurred: ' + e.getMessage());40 return false;41}42}43}
Ensure that you replace the category ID in this sample code with the ID of the category that you want to log score information for. You can find the IDs of your score categories by either inspecting a category page’s URL, or you can run this query in the Developer Console Query Editor: