Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В следующей статье описаны различные сценарии чтения и записи для агента Employee Self-Service, подключенного к SAP SuccessFactors.
Сценарии чтения sap SuccessFactors Manager
Диспетчер чтение разделов проверка, если пользователь является менеджером, использующим ESS_UserContext_Is_Manager переменную. После этого большинство разделов имеют тот же формат, который просто перенаправляет раздел на SuccessFactors System Get Common Execution, который вызывает Get Common Orchestrator поток, а затем большая языковая модель интерпретирует ответы из потока и создает ответ для диспетчера. Ожидает SuccessFactors System Get Common Execution следующие входные данные:
Параметры фильтра:
Как правило, передача Employee ID и User ID для запроса фильтра для Employee Read разделов:
Пример формата, используемого в разделе:
"{""personIdExternalVal"": """ & Global.ESS_UserContext_Employee_Id & """,""userIdVal"": """ & Global.ESS_UserContext_User_Id & """}"
Пример конфигурации шаблона:
{
...
"filter": "personIdExternal eq '{personIdExternalVal}' and userId eq '{userIdVal}'",
...
}
Ключи, присутствующие в filterParam, должны соответствовать ожидаемому в конфигурации шаблона. В предыдущих примерах personIdExternalVal будет использоваться в качестве ключа для вставки Global.ESS_UserContext_Employee_Id в выражение фильтра.
ScenarioName: Имя конфигурации, которое используется вызовом Dataverse для получения конфигурации сценария. userIdentifier: Идентификатор пользователя
- Затем Common Orchestrator возвращает
ModelResponseиLabelResponse, который затем анализируется с помощью крупной языковой модели с помощью следующих инструкций и создает ответ для диспетчера: - Извлеките входные данные из приведенного ниже ответа (сопоставите значение ответа Label как ключ в атрибуте ответа модели, а затем укажите значение модели).
- Предоставление пользователю ответа в удобочитаемой форме
- Правильно отформатируйте его, чтобы он выглядел чистым и удобочитаемым
- Используйте только значения данных из переменной с именем as
successfactorsModelResponseи используйте переменную с именем какsuccessfactorsLabelResponseдля маркировки данных. Пример ответа:
Label Response : key":"company","value":"company"
Model Response :
"company":"11111"
Example Output :
Your company is 11111
Единственным исключением из этого общего формата являются Get Employee Id и Get Service Anniversary, которые подробно описаны в следующих разделах.
Код компании
| Код компании | Сведения |
|---|---|
| Описание | Извлекает прямой отчет руководителя о текущем коде компании и отображает его. Диспетчер также может включать в запрос прямую и должность. |
| Запросы | [EmployeeName] [EmployeeName]центр затрат [id_costCenter] [EmployeeName]центр затрат на [id_costCenter] |
| Отклик | Ниже приведены коды компании для ваших прямых отчетов: Если вам нужна дополнительная помощь, не стесняйтесь спросить! |
| Конфигурация шаблона | HRSAPSuccessFactorsHCMGetManagerCompanyCode |
| Имя сценария | msdyn_HRSAPSuccessFactorsHCMGetManagerCompanyCode |
| Фильтр | Фильтрует по personIdExternal с помощью ESS_UserContext_Employee_Id, userId используя ESS_UserContext_User_Id, и isContingentWorker задает значение false.
isContingentWorker значение , чтобы гарантировать, что извлекаются только данные сотрудников. |
| Запрашиваемые значения | DisplayName: задает текущее предпочтительное имя.UserId: направляет userId, который используется в upsert для сопоставления данных. CompanyCode: направляет код компании в качестве значения идентификатора. CompanyName: направляет код компании в качестве имени, связанного со значением идентификатора. |
Конфигурация:
{
"scenario": "ManagerReadCompanyCode",
"rootEntity": "EmpEmployment",
"filter": "isContingentWorker eq {isContingentWorkerValue} and userNav/manager/empInfo/personIdExternal eq '{personIdExternalVal}' and userNav/manager/empInfo/userId eq '{userIdVal}'",
"requestEntities": [
{
"key": "UserId",
"valuePath": "userNav/userId",
"labelPath": "User/userId"
},
{
"key": "DisplayName",
"valuePath": "userNav/displayName",
"labelPath": "User/displayName"
},
{
"key": "CompanyName",
"valuePath": "jobInfoNav/companyNav/name",
"labelPath": ""
},
{
"key": "CompanyCode",
"valuePath": "jobInfoNav/company",
"labelPath": "EmpJob/company"
}
],
"permissionsMetadata": [],
"rolePermissions": [
{
"roleId": "115",
"permissions": [{ "permStringValue": "$_jobInfo_company_read" }]
}
]
}
Получение кода компании для конкретного сотрудника или прямого отчета
Эта конфигурация используется, когда имя directs заполняется запросом руководителя. Он включает в себя выражение фильтра, которое фильтрует различные поля имен, пытаясь сопоставить его с тем, что менеджер включил в запрос:
| Получение кода конкретной компании | Описание |
|---|---|
| Конфигурация шаблона | HRSAPSuccessFactorsHCMGetManagerEmpNameCompanyCode |
| Имя сценария | msdyn_HRSAPSuccessFactorsHCMGetManagerEmpNameCompanyCode |
| Фильтр | Фильтрация при personIdExternal использовании ESS_UserContext_Employee_Id, userId используя ESS_UserContext_User_Id, и isContingentWorker задает значение false.
isContingentWorker используется для получения только данных о сотрудниках. Кроме того, выражение фильтрует по firstName, lastNameи displayName с использованием имени, заполненного слотом из запроса диспетчера. |
| Запрашиваемые значения | DisplayName: задает текущее предпочтительное имя. UserId: направляет userId, который используется в upsert для сопоставления данных. CompanyCode: направляет код компании в качестве значения идентификатора. |
| CompanyName | Направляет код компании в качестве имени, связанного со значением идентификатора. |
Конфигурация:
{
"scenario": "ManagerReadEmpNameCompanyCode",
"rootEntity": "EmpEmployment",
"filter": "isContingentWorker eq {isContingentWorkerValue} and userNav/manager/empInfo/personIdExternal eq '{personIdExternalVal}' and userNav/manager/empInfo/userId eq '{userIdVal}' and (substringof(tolower('{name}'), tolower(userNav/firstName)) or substringof(tolower('{name}'), tolower(userNav/lastName)) or substringof(tolower('{name}'), tolower(userNav/displayName)))",
"requestEntities": [{
"key": "UserId",
"valuePath": "userNav/userId",
"labelPath": "User/userId"
}, {
"key": "DisplayName",
"valuePath": "userNav/displayName",
"labelPath": "User/displayName"
}, {
"key": "CompanyName",
"valuePath": "jobInfoNav/companyNav/name",
"labelPath": ""
}, {
"key": "CompanyCode",
"valuePath": "jobInfoNav/company",
"labelPath": "EmpJob/company"
}
],
"permissionsMetadata": [],
"rolePermissions": [{
"roleId": "115",
"permissions": [{
"permStringValue": "$_jobInfo_company_read"
}
]
}
]
}
Центр затрат
| Центр затрат | Сведения |
|---|---|
| Описание | Извлекает текущий корпоративный код руководителя и отображает его. Диспетчер также может включать в запрос прямую и должность. |
| Запросы | [EmployeeName] [EmployeeName] |
| Отклик | Ниже приведены центры затрат для ваших прямых отчетов: Если вам нужна дополнительная помощь, не стесняйтесь спросить! |
| Конфигурация шаблона | HRSAPSuccessFactorsHCMGetManagerCostCenter |
| Имя сценария | msdyn_HRSAPSuccessFactorsHCMGetManagerCostCenter |
| Фильтр | Фильтры по personIdExternal использованию ESS_UserContext_Employee_Id, userId используя ESS_UserContext_User_Id, и isContingentWorker задайте для параметра falseзначение .
isContingentWorker для обеспечения получения только данных о сотрудниках. |
| Запрашиваемые значения | DisplayName: задает текущее предпочтительное имя.UserId: направляет userId, который используется в upsert для сопоставления данных. CostCenterCode: направляет код центра затрат в качестве значения идентификатора. CostCenterName: направляет центр затрат в качестве имени, связанного со значением идентификатора. |
Конфигурация:
{
"scenario": "ManagerReadCostCenter",
"rootEntity": "EmpEmployment",
"filter": "isContingentWorker eq {isContingentWorkerValue} and userNav/manager/empInfo/personIdExternal eq '{personIdExternalVal}' and userNav/manager/empInfo/userId eq '{userIdVal}'",
"requestEntities": [
{
"key": "UserId",
"valuePath": "userNav/userId",
"labelPath": "User/userId"
},
{
"key": "DisplayName",
"valuePath": "userNav/displayName",
"labelPath": "User/displayName"
},
{
"key": "CostCenterCode",
"valuePath": "jobInfoNav/costCenter",
"labelPath": "EmpJob/costCenter"
},
{
"key": "CostCenterName",
"valuePath": "jobInfoNav/costCenterNav/name",
"labelPath": ""
}
],
"permissionsMetadata": [],
"rolePermissions": [
{
"roleId": "115",
"permissions": [{ "permStringValue": "$_jobInfo_cost-center_read" }]
}
]
}
Получение конкретного сотрудника или центра затрат
Эта конфигурация используется, когда имя directs заполняется запросом руководителя. Он включает в себя выражение фильтра, которое фильтрует различные поля имен, пытаясь сопоставить его с тем, что менеджер включил в запрос.
| Получение конкретного центра затрат | Описание |
|---|---|
| Конфигурация шаблона | HRSAPSuccessFactorsHCMGetManagerEmpNameCostCenter |
| Имя сценария | msdyn_HRSAPSuccessFactorsHCMGetManagerEmpNameCostCenter |
| Фильтр | Фильтрация при personIdExternal использовании ESS_UserContext_Employee_Id, userId используя ESS_UserContext_User_Id, и isContingentWorker задает значение false.
isContingentWorker используется для получения только данных о сотрудниках. Кроме того, выражение фильтрует по firstName, lastNameи displayName , используя имя, заполненное слотом из запроса менеджера. |
| Запрашиваемые значения | DisplayName: задает текущее предпочтительное имя. UserId: направляет userId, который используется в upsert для сопоставления данных. CostCenterCode: направляет код центра затрат в качестве значения идентификатора. CostCenterName: направляет центр затрат в качестве имени, связанного со значением идентификатора. |
Конфигурация:
{
"scenario": "ManagerReadEmpNameCostCenter",
"rootEntity": "EmpEmployment",
"filter": "isContingentWorker eq {isContingentWorkerValue} and userNav/manager/empInfo/personIdExternal eq '{personIdExternalVal}' and userNav/manager/empInfo/userId eq '{userIdVal}' and (substringof(tolower('{name}'), tolower(userNav/firstName)) or substringof(tolower('{name}'), tolower(userNav/lastName)) or substringof(tolower('{name}'), tolower(userNav/displayName)))",
"requestEntities": [
{
"key": "UserId",
"valuePath": "userNav/userId",
"labelPath": "User/userId"
},
{
"key": "DisplayName",
"valuePath": "userNav/displayName",
"labelPath": "User/displayName"
},
{
"key": "CostCenterCode",
"valuePath": "jobInfoNav/costCenter",
"labelPath": "EmpJob/costCenter"
},
{
"key": "CostCenterName",
"valuePath": "jobInfoNav/costCenterNav/name",
"labelPath": ""
}
],
"permissionsMetadata": [],
"rolePermissions": [
{
"roleId": "115",
"permissions": [{ "permStringValue": "$_jobInfo_cost-center_read" }]
}
]
}
Сведения о задании
| Сведения о задании | Сведения |
|---|---|
| Описание | Извлекает и отображает заголовок, код задания, функцию задания и тип функции задания. Руководитель также может включить в запрос прямую и должность. |
| Запросы | [EmployeeName] [EmployeeName]? |
| Отклик | Ниже приведены сведения о задании для ваших прямых отчетов: Мануэла Торрес: Херардо Паласиос: Сян Тао: Если вам нужна дополнительная помощь, не стесняйтесь спросить! |
| Конфигурация шаблона | HRSAPSuccessFactorsHCMGetManagerJobInfo |
| Имя сценария | msdyn_HRSAPSuccessFactorsHCMGetManagerJobInfo |
| Фильтр | Фильтры по personIdExternal использованию ESS_UserContext_Employee_Id, userId используя ESS_UserContext_User_Id, и isContingentWorker задайте для параметра falseзначение .
isContingentWorker для обеспечения получения только данных о сотрудниках. |
| Запрашиваемые значения | DisplayName: задает текущее предпочтительное имя.UserId: направляет userId, который используется в upsert для сопоставления данных.JobTitle: направление должностиJobCode: направляет код задания/positionNumberJobFunctionType: указывает тип функции задания.JobFunction: направляет функцию задания. |
Конфигурация:
{
"scenario": "ManagerReadJobInfo",
"rootEntity": "EmpEmployment",
"filter": "isContingentWorker eq {isContingentWorkerValue} and userNav/manager/empInfo/personIdExternal eq '{personIdExternalVal}' and userNav/manager/empInfo/userId eq '{userIdVal}'",
"requestEntities": [
{
"key": "DisplayName",
"valuePath": "userNav/displayName",
"labelPath": "User/displayName"
},
{
"key": "UserId",
"valuePath": "userNav/userId",
"labelPath": "User/userId"
},
{
"key": "JobTitle",
"valuePath": "jobInfoNav/jobTitle",
"labelPath": "User/jobTitle"
},
{
"key": "JobCode",
"valuePath": "jobInfoNav/jobCode",
"labelPath": "User/jobCode"
},
{
"key": "JobFunctionType",
"valuePath": "jobInfoNav/jobCodeNav/jobFunctionNav/jobFunctionType",
"labelPath": "FOJobFunction/jobFunctionType"
},
{
"key": "jobFunction",
"valuePath": "jobInfoNav/jobCodeNav/jobFunction",
"labelPath": "FOJobCode/jobFunction"
}
],
"permissionsMetadata": [],
"rolePermissions": [
{
"roleId": "115",
"permissions": [
{
"permStringValue": "$_jobInfo_job-title_read"
},
{
"permStringValue": "$_jobInfo_job-code_read"
}
]
}
]
}
Получение сведений о конкретном сотруднике или руководстве по заданию
Эта конфигурация используется, когда имя directs заполняется запросом руководителя. Он включает в себя выражение фильтра, которое фильтрует различные поля имен, пытаясь сопоставить его с тем, что менеджер включил в запрос.
| Сведения о конкретном задании | Сведения |
|---|---|
| Конфигурация шаблона | RSAPSuccessFactorsHCMGetManagerEmpNameJobInfo |
| Имя сценария | msdyn_HRSAPSuccessFactorsHCMGetManagerEmpNameJobInfo |
| Фильтр | Фильтры по personIdExternal использованию ESS_UserContext_Employee_Id, userId используя ESS_UserContext_User_Id, и isContingentWorker задайте для параметра falseзначение .
isContingentWorker используется для получения только данных о сотрудниках. Кроме того, выражение фильтрует по firstName, lastNameи displayName , используя имя, заполненное слотом из запроса менеджера. |
| Запрашиваемые значения | DisplayName: задает текущее предпочтительное имя. UserId: направляет userId, который используется в upsert для сопоставления данных. JobTitle: направление должности JobCode: направляет код задания/positionNumber JobFunctionType: указывает тип функции задания. JobFunction: направляет функцию задания. |
Конфигурация:
{
"scenario": "ManagerReadEmpNameJobInfo",
"rootEntity": "EmpEmployment",
"filter": "isContingentWorker eq {isContingentWorkerValue} and userNav/manager/empInfo/personIdExternal eq '{personIdExternalVal}' and userNav/manager/empInfo/userId eq '{userIdVal}' and (substringof(tolower('{name}'), tolower(userNav/firstName)) or substringof(tolower('{name}'), tolower(userNav/lastName)) or substringof(tolower('{name}'), tolower(userNav/displayName)))",
"requestEntities": [
{
"key": "UserId",
"valuePath": "userNav/userId",
"labelPath": "User/userId"
},
{
"key": "DisplayName",
"valuePath": "userNav/displayName",
"labelPath": "User/displayName"
},
{
"key": "JobTitle",
"valuePath": "jobInfoNav/jobTitle",
"labelPath": "User/jobTitle"
},
{
"key": "JobCode",
"valuePath": "jobInfoNav/jobCode",
"labelPath": "User/jobCode"
},
{
"key": "JobFunction",
"valuePath": "jobInfoNav/jobCodeNav/jobFunction",
"labelPath": "FOJobCode/jobFunction"
},
{
"key": "JobFunctionType",
"valuePath": "jobInfoNav/jobCodeNav/jobFunctionNav/jobFunctionType",
"labelPath": "FOJobFunction/jobFunctionType"
}
],
"permissionsMetadata": [],
"rolePermissions": [
{
"roleId": "115",
"permissions": [
{ "permStringValue": "$_jobInfo_job-title_read" },
{ "permStringValue": "$_jobInfo_job-code_read" }
]
}
]
}
Годовщина службы
| Годовщина службы | Сведения |
|---|---|
| Описание | Извлекает дату непосредственного найма руководителя, вычисляет годовщину службы с помощью глобальной переменной длительности и отображает ее. Руководитель также может включать в запрос прямую и должность. |
| Запросы | [EmployeeName]следующая годовщина службы при условии, что продолжительность годовщины службы — [Duration] годы. [EmployeeName][Duration] службы в год? [EmployeeName]дата начала/найма? [EmployeeName]службы? |
| Formula | If(DateDiff(Today(), DateAdd(DateValue(userNav.hireDate), Year(Today()) - Year(DateValue(userNav.hireDate)), TimeUnit.Years)) < 0, DateAdd(DateValue(userNav.hireDate), Year(Today()) - Year(DateValue(userNav.hireDate)) + Topic.Duration, TimeUnit.Years), DateAdd(DateValue(userNav.hireDate), Year(Today()) - Year(DateValue(userNav.hireDate)), TimeUnit.Years)) Эта формула PowerFX вычисляет следующую дату годовщины службы для сотрудника на основе даты его найма и указанной длительности. Формула выполняет следующие действия: 1. DateValue(userNav.hireDate) Преобразует дату найма сотрудника в значение даты. 2. Year(Today()) - Year(DateValue(userNav.hireDate))Вычисляет количество лет между текущим годом и годом даты найма сотрудника 3. DateAdd(DateValue(userNav.hireDate), Year(Today()) - Year(DateValue(userNav.hireDate)), TimeUnit.Years)Добавляет расчетное число лет к дате найма, чтобы определить дату следующей годовщины 4. DateDiff(Today(), DateAdd(DateValue(userNav.hireDate), Year(Today()) - Year(DateValue(userNav.hireDate)), TimeUnit.Years)) < 0 Проверяет, находится ли вычисляемая дата годовщины в прошлом 5. If(DateDiff(Today(), DateAdd(DateValue(userNav.hireDate), Year(Today()) - Year(DateValue(userNav.hireDate)), TimeUnit.Years)) < 0 Если следующая дата годовщины находится в прошлом, она вычисляет дату годовщины для следующего года, добавляя указанную длительность (Topic.Duration) к дате найма.6. DateAdd(DateValue(userNav.hireDate), Year(Today()) - Year(DateValue(userNav.hireDate)) + Topic.Duration, TimeUnit.Years)Вычисляет следующую дату годовщины на следующий год. 7. DateAdd(DateValue(userNav.hireDate), Year(Today()) - Year(DateValue(userNav.hireDate)), TimeUnit.Years)Если дата годовщины не в прошлом, она возвращает вычисляемую дату годовщины для текущего года. |
| Отклик | Ниже приведены годовщины службы для ваших прямых отчетов: Мануэла Торрес: Херардо Паласиос: Сян Тао: Если вам нужна дополнительная помощь, не стесняйтесь спросить! |
| Конфигурация шаблона | HRSAPSuccessFactorsHCMGetManagerServiceAnniversary |
| Имя сценария | msdyn_HRSAPSuccessFactorsHCMGetManagerServiceAnniversary |
| Фильтр | Фильтрация при personIdExternal использовании ESS_UserContext_Employee_Id, userId используя ESS_UserContext_User_Id, и isContingentWorker задает значение false.
isContingentWorker для обеспечения получения только данных о сотрудниках. |
| Запрашиваемые значения | DisplayName: задает текущее предпочтительное имя. UserId: направляет userId, который используется в upsert для сопоставления данных. hireDate: дата найма directs |
Конфигурация:
{
"scenario": "ManagerReadServiceAnniversary",
"rootEntity": "EmpEmployment",
"filter": "isContingentWorker eq {isContingentWorkerValue} and userNav/manager/empInfo/personIdExternal eq '{personIdExternalVal}' and userNav/manager/empInfo/userId eq '{userIdVal}'",
"requestEntities": [
{
"key": "UserId",
"valuePath": "userNav/userId",
"labelPath": "User/userId"
},
{
"key": "DisplayName",
"valuePath": "userNav/displayName",
"labelPath": "User/displayName"
},
{
"key": "hireDate",
"valuePath": "userNav/hireDate",
"labelPath": ""
}
],
"permissionsMetadata": [],
"rolePermissions": [
{
"roleId": "115",
"permissions": [
{ "permStringValue": "$_employmentInfo_originalStartDate_read" }
]
}
]
}
Получение годовщины конкретного сотрудника или службы directs
Эта конфигурация используется, когда имя directs заполняется запросом руководителя. Он включает в себя выражение фильтра, которое фильтрует различные поля имен, пытаясь сопоставить его с тем, что менеджер включил в запрос.
| Конкретный юбилей службы | Сведения |
|---|---|
| Конфигурация шаблона | HRSAPSuccessFactorsHCMGetManagerEmpNameServiceAnniversary |
| Имя сценария | msdyn_HRSAPSuccessFactorsHCMGetManagerServiceAnniversary |
| Фильтр | Фильтры по personIdExternal использованию ESS_UserContext_Employee_Id, userId используя ESS_UserContext_User_Id, и isContingentWorker задайте для параметра falseзначение .
isContingentWorker используется для получения только данных сотрудников. Кроме того, выражение фильтрует по firstName, lastNameи displayName с использованием имени, заполненного слотом из запроса диспетчера. |
| Запрашиваемые значения | DisplayName: задает текущее предпочтительное имя. UserId: направляет userId, который используется в upsert для сопоставления данных. hireDate: дата найма directs |
Конфигурация
{
"scenario": "ManagerReadEmpNameServiceAnniversary",
"rootEntity": "EmpEmployment",
"filter": "isContingentWorker eq {isContingentWorkerValue} and userNav/manager/empInfo/personIdExternal eq '{personIdExternalVal}' and userNav/manager/empInfo/userId eq '{userIdVal}' and (substringof(tolower('{name}'), tolower(userNav/firstName)) or substringof(tolower('{name}'), tolower(userNav/lastName)) or substringof(tolower('{name}'), tolower(userNav/displayName)))",
"requestEntities": [
{
"key": "UserId",
"valuePath": "userNav/userId",
"labelPath": "User/userId"
},
{
"key": "DisplayName",
"valuePath": "userNav/displayName",
"labelPath": "User/displayName"
},
{
"key": "hireDate",
"valuePath": "userNav/hireDate",
"labelPath": ""
}
],
"permissionsMetadata": [],
"rolePermissions": [
{
"roleId": "115",
"permissions": [
{ "permStringValue": "$_employmentInfo_originalStartDate_read" }
]
}
]
}
Сценарии записи диспетчера успешности SAP
Разделы для записи руководителя описаны следующим образом:
1. Получение данных прямого отчета
При необходимости получите прямые данные отчета руководителя и данные списка выбора с помощью SuccessFactors System Get Common Execution, для чего требуются следующие входные данные:
FilterParams. Следующий пример относится к запросу данных пользователя, но запрос данных списка выбора следует тем же правилам для подготовки filterParams.
Пример формата, используемого в разделе:
"{""personIdExternalVal"": """ & Global.ESS_UserContext_Employee_Id & """,""userIdVal"": """ & Global.ESS_UserContext_User_Id & """}"
Фрагмент конфигурации шаблона:
{
...
"filter": "personIdExternal eq '{personIdExternalVal}' and userId eq '{userIdVal}'",
...
}
Ключи, присутствующие в filterParam , должны соответствовать ожидаемому в конфигурации шаблона. В приведенных выше personIdExternalVal примерах будет использоваться в качестве ключа для вставки Global.ESS_UserContext_Employee_Id в выражение фильтра.
ScenarioName: имя конфигурации, которое используется вызовом Dataverse для получения конфигурации сценария.
userIdentifier: идентификатор пользователя
SuccessFactors System Get Common Execution затем возвращает ModelResponse и LabelResponse, которые анализируются для данных пользователя и хранятся в переменных.
2. Подтверждение сведений
Руководитель направляет текущую информацию, запрашивая подтверждение обновления или отмены, чтобы активировать соответствующий поток с помощью встроенного обмена сообщениями или с помощью адаптивная карточка.
3. Отправить
Если руководитель отправляет обновление, данные собираются и используются для вызова SuccessFactors System Update Common Execution. Этот поток будет использовать UPSERT пользовательские данные с SuccessFactors помощью соединителя OData .
SuccessFactors System Update Common Execution ожидает следующие входные данные:
TargetUserId: идентификатор пользователя var_requestParam: массив объектов. Пример формата, используемого в разделе:
"[{""key"":""personIdExternalVal"", ""value"":"""&Global.ESS_UserContext_Employee_Id&"""}, {""key"":""countryVal"", ""value"":"""&First(Topic.var_parsedModel).country&"""},{""key"":""startDateVal"", ""value"":"""&DateDiff(Date(1970, 1, 1), First(Topic.var_parsedModel).startDate, TimeUnit.Seconds) * 1000&"""},{""key"":""genericString1Val"", ""value"":"""&Topic.id_raceAndEthnicity&"""}]"
Фрагмент из конфигурации шаблона:
{
"__metadata": {
"uri": "PerGlobalInfoUSA"
},
"personIdExternal": "personIdExternalVal",
"country": "countryVal",
"startDate": "/Date(startDateVal)/",
"genericString1": "genericString1Val",
}
Ключи, присутствующие в var_requestParam , должны соответствовать ожидаемому в конфигурации шаблона. В приведенных выше personIdExternalVal примерах используется в качестве ключа для вставки Global.ESS_UserContext_Employee_Id в текст запроса.
var_scenarioName: имя конфигурации, которое используется вызовом Dataverse для получения конфигурации сценария.
В SuccessFactors System Update Common Execution случае успешного выполнения copilot ответит, что обновление прошло успешно. В случае сбоя обновления пользователь получает сообщение об ошибке.
Настройки
Для настройки конфигурации шаблона обычно требуются следующие изменения:
Добавление полей в Get Config:
После добавления поля в конфигурацию шаблона необходимо обновить схему modelResponse узла синтаксического анализа.
Свойство адаптивная карточка label задается значением, хранящимся в анализируемой переменной метки. Свойство value задается с помощью переменной var_veteranInfo , в которой хранятся проанализированные данные пользователя.
Если другой тип входных данных, добавляемый в адаптивная карточка для сбора данных для другого поля, используйте следующий код элемента управления входными данными:
{
type: "Input.ChoiceSet",
placeholder: "No Selection",
id: "id_veteran",
label: Lookup(Topic.var_parsedLabel, key="genericNumber1").value,
value: First(Topic.var_veteranInfo).genericNumber1,
choices: Topic.var_veteranPicklist
}
После этого обновите схему выходной привязки строкой, указанной в свойстве id . Следовательно, id = id_veteran в предыдущем примере схема выходной привязки должна иметь переменную с тем же именем с правильным типом данных, как показано ниже:
kind: Record
properties:
actionSubmitId: String
id_challenged_veteran: String
id_special_disabled_veteran: String
id_veteran: String
Добавление полей для обновления
После добавления нового поля для обновления конфигурации оно должно быть обновлено , var_requestParam чтобы включить добавленное поле, и значения, отправляемые для обновления.
Дополнительные рекомендации по расширению сценариев см. во "write" встроенных сценариях.
Авторизация:
- Авторизация выполняется с помощью
permissionsMetadata/rolePermission, который является частью конфигурации шаблона. ИpermissionsMetadataUser Idиспользуются для создания строки запроса дляOData Connector in SuccessFactors Check User Permissions flow. ЕслиSuccessFactors Check User Permissions flowне выполняетсяpermissionsMetadataroleBased Permissions flowс помощью разрешения роли и переменной ролей пользователя. - Важно включить
permissionMetadataилиrolePermissionв файл конфигурации шаблона, так как нет других проверка авторизации, если оба этих поля отсутствуют.
Центр затрат
| Центр затрат. | Сведения |
|---|---|
| Описание | Извлекает текущий центр затрат руководителя, отображает его, а затем предлагает руководителю выбрать прямой и ввести новый центр затрат с датой начала. Диспетчер также может включать в запрос прямую и должность. |
| Запросы | [EmployeeName][EmployeeName]центр затрат?[id_costCenter][EmployeeName]центр затрат на [id_costCenter] |
Получение конфигураций — Центр затрат
Получение существующего центра затрат — это первый шаг в потоке.
| Получение конфигураций | Описание |
|---|---|
| Конфигурация шаблона | HRSAPSuccessFactorsHCMGetManagerCostCenter |
| Имя сценария | sdyn_HRSAPSuccessFactorsHCMGetManagerCostCenter |
| Фильтр | Фильтры по personIdExternal использованию ESS_UserContext_Employee_Id, userId используя ESS_UserContext_User_Id, и isContingentWorker задайте для параметра falseзначение .
isContingentWorker используется для получения только данных о сотрудниках. |
| Запрашиваемые значения | DisplayName: задает текущее предпочтительное имя.UserId: направляет userId, который используется в upsert для сопоставления данных.CostCenterCode: направляет центр затрат в качестве значения идентификатора.CostCenterName: направляет центр затрат в качестве имени, связанного со значением идентификатора.Company: направляет код компании, используемый для проверки центра затрат, отправленного руководителем. |
Конфигурация:
{
"scenario": "ManagerReadCostCenter",
"rootEntity": "EmpEmployment",
"filter": "isContingentWorker eq {isContingentWorkerValue} and userNav/manager/empInfo/personIdExternal eq '{personIdExternalVal}' and userNav/manager/empInfo/userId eq '{userIdVal}'",
"requestEntities": [
{
"key": "UserId",
"valuePath": "userNav/userId",
"labelPath": "User/userId"
},
{
"key": "DisplayName",
"valuePath": "userNav/displayName",
"labelPath": "User/displayName"
},
{
"key": "CostCenterCode",
"valuePath": "jobInfoNav/costCenter",
"labelPath": "EmpJob/costCenter"
},
{
"key": "CostCenterName",
"valuePath": "jobInfoNav/costCenterNav/name",
"labelPath": ""
},
{
"key": "Company",
"valuePath": "jobInfoNav/company",
"labelPath": "EmpJob/company"
}
],
"permissionsMetadata": [],
"rolePermissions": [
{
"roleId": "115",
"permissions": [{ "permStringValue": "$_jobInfo_cost-center_read" }]
}
]
}
Проверка центра затрат
Эта конфигурация используется для проверки введенного центра затрат руководителя. После того как руководитель отправит адаптивная карточка, эта конфигурация используется с get Common Orchestrator для запроса к центру затрат и просмотра, существует ли он в коде компании, в который находится менеджер.
| Проверка центра затрат | Описание |
|---|---|
| Конфигурация шаблона | HRSAPSuccessFactorsHCMEmployeeValidateCostCenter |
| Имя сценария | msdyn_HRSAPSuccessFactorsHCMEmployeeValidateCostCenter |
| Фильтр | Фильтры по коду центра затрат (externalCode) с помощью costCentervalue и кода компании (cust_LegalEntity/externalCode) |
| Запрашиваемые значения | CostCenterCode: центр затрат в качестве значения идентификатора CostCenterName: центр затрат в качестве имени, связанного со значением идентификатора |
Конфигурация:
{
"scenario": "ValidateCostCenter",
"rootEntity": "FOCostCenter",
"filter": "externalCode eq '{costCenterValue}' and cust_LegalEntity/externalCode eq '{companyCodeValue}'",
"requestEntities": [
{
"key": "costCenterCode",
"valuePath": "externalCode",
"labelPath": ""
},
{
"key": "costCenterName",
"valuePath": "name",
"labelPath": ""
}
],
"permissionsMetadata": [],
"rolePermissions": []
}
Обновление центра затрат
Обновление адреса электронной почты контакта
| Проверка центра затрат | Описание |
|---|---|
| Конфигурация шаблона | HRSAPSuccessFactorsHCMManagerUpdateCostCenter |
| Имя сценария | msdyn_HRSAPSuccessFactorsHCMManagerUpdateCostCenter |
| Текст запроса | userId: идентификатор пользователя обновляемого прямого объектаstartDate: дата начала вступления изменения в силуcostCenter: новые входные данные идентификатора центра затрат менеджером. |
Конфигурация
{
"scenario": "UpdateCostCenter",
"requestBody": '{
"__metadata": {
"uri": "EmpJob"
},
"userId": "userIdVal",
"startDate": "/Date(startDateVal)/",
"costCenter": "costCenterVal"
}',
"permissionsMetadata": [{
"permType": "DATA_MODEL",
"permLongValue": -1,
"permStringValue": "$_eventReason_DATACOST_write"
}
],
"rolePermissions": []
}
должность;
Получение конфигураций — сведения о задании
Получение существующих сведений о задании — это первый шаг в потоке
| Получение конфигураций | Описание |
|---|---|
| Конфигурация шаблона | HRSAPSuccessFactorsHCMGetManagerJobInfo |
| Имя сценария | msdyn_HRSAPSuccessFactorsHCMGetManagerJobInfo |
| Фильтр | Фильтры по personIdExternal использованию ESS_UserContext_Employee_Id, userId используя ESS_UserContext_User_Id, и isContingentWorker задайте для параметра falseзначение .
isContingentWorker используется для получения только данных о сотрудниках. |
| Запрашиваемые значения | DisplayName: задает текущее предпочтительное имя.UserId: указывает, userId что используется в upsert для сопоставления данных.JobTitle: направление должностиJobCode: не используется в этом разделе, но запрашивается, так как здесь повторно используется сведения о задании чтения диспетчера конфигураций шаблонов.JobFunctionType: не используется в этом разделе, но запрашивается, так как здесь повторно используются сведения о задании чтения диспетчера конфигураций шаблонов.JobFunction: не используется в этом разделе, но запрашивается, так как здесь повторно используются сведения о задании чтения диспетчера конфигураций шаблонов. |
Конфигурация:
{
"scenario": "ManagerReadJobInfo",
"rootEntity": "EmpEmployment",
"filter": "isContingentWorker eq {isContingentWorkerValue} and userNav/manager/empInfo/personIdExternal eq '{personIdExternalVal}' and userNav/manager/empInfo/userId eq '{userIdVal}'",
"requestEntities": [
{
"key": "DisplayName",
"valuePath": "userNav/displayName",
"labelPath": "User/displayName"
},
{
"key": "UserId",
"valuePath": "userNav/userId",
"labelPath": "User/userId"
},
{
"key": "JobTitle",
"valuePath": "jobInfoNav/jobTitle",
"labelPath": "User/jobTitle"
},
{
"key": "JobCode",
"valuePath": "jobInfoNav/jobCode",
"labelPath": "User/jobCode"
},
{
"key": "JobFunctionType",
"valuePath": "jobInfoNav/jobCodeNav/jobFunctionNav/jobFunctionType",
"labelPath": "FOJobFunction/jobFunctionType"
},
{
"key": "jobFunction",
"valuePath": "jobInfoNav/jobCodeNav/jobFunction",
"labelPath": "FOJobCode/jobFunction"
}
],
"permissionsMetadata": [],
"rolePermissions": [
{
"roleId": "115",
"permissions": [
{
"permStringValue": "$_jobInfo_job-title_read"
},
{
"permStringValue": "$_jobInfo_job-code_read"
}
]
}
]
}
Обновление названия задания
Обновление названия задания
| должность; | Описание |
|---|---|
| Конфигурация шаблона | HRSAPSuccessFactorsHCMManagerUpdateJobTitle |
| Имя сценария | msdyn_HRSAPSuccessFactorsHCMEmployeeUpdatePreferredName |
| Текст запроса | userId: идентификатор пользователя direct, который обновляется.startDate: дата начала, когда изменение должно вступить в силу, полученное от руководителя.jobTitle: новое название должности, полученное от руководителя |
Конфигурация
"scenario": "UpdateJobTitle",
"requestBody": '{
"__metadata": {
"uri": "EmpJob"
},
"userId": "userIdVal",
"startDate": "/Date(startDateVal)/",
"jobTitle": "jobTitleVal"
}',
"permissionsMetadata": [{
"permType": "DATA_MODEL",
"permLongValue": -1,
"permStringValue": "$_eventReason_JOBTITLE_write"
}
],
"rolePermissions": []
}