Руководитель SAP SuccessFactors считывает сценарии & записи с помощью Self-Service сотрудников

В следующей статье описаны различные сценарии чтения и записи для агента 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]
  • Обновление центра затрат для моей команды
  • Отклик Ниже приведены коды компании для ваших прямых отчетов:
  • Мануэла Торрес: 2000 (Contoso UK)
  • Херардо Паласиос: 2000 (Contoso UK)
  • Сян Тао: 2000 (Contoso UK)
    Если вам нужна дополнительная помощь, не стесняйтесь спросить!
  • Конфигурация шаблона 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]
  • Отклик Ниже приведены центры затрат для ваших прямых отчетов:
  • Мануэла Торрес: 2000-4200 (Contoso UK Production)
  • Gerardo Palacios: 2000-4200 (Contoso UK Production)
  • Сян Тао: 2000–2200 (Contoso UK HR)
    Если вам нужна дополнительная помощь, не стесняйтесь спросить!
  • Конфигурация шаблона 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]?
  • Отклик Ниже приведены сведения о задании для ваших прямых отчетов:
    Мануэла Торрес:
  • Должность: Инженер по программному обеспечению II
  • Код задания: 50071001
  • Тип функции задания: DL
  • Функция задания: 50070986

    Херардо Паласиос:
  • Должность: Инженер программного обеспечения III
  • Код задания: 50071001
  • Тип функции задания: DL
  • Функция задания: 50070986

    Сян Тао:
  • Должность: CTO
  • Код задания: 50070999
  • Тип функции задания: MT
  • Функция задания: 50070905
    Если вам нужна дополнительная помощь, не стесняйтесь спросить!
  • Конфигурация шаблона HRSAPSuccessFactorsHCMGetManagerJobInfo
    Имя сценария msdyn_HRSAPSuccessFactorsHCMGetManagerJobInfo
    Фильтр Фильтры по personIdExternal использованию ESS_UserContext_Employee_Id, userId используя ESS_UserContext_User_Id, и isContingentWorker задайте для параметра falseзначение . isContingentWorker для обеспечения получения только данных о сотрудниках.
    Запрашиваемые значения
  • DisplayName: задает текущее предпочтительное имя.
  • UserId: направляет userId, который используется в upsert для сопоставления данных.
  • JobTitle: направление должности
  • JobCode: направляет код задания/positionNumber
  • 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" 
            } 
          ] 
        } 
      ] 
    } 
    
    Получение сведений о конкретном сотруднике или руководстве по заданию

    Эта конфигурация используется, когда имя 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)
    Если дата годовщины не в прошлом, она возвращает вычисляемую дату годовщины для текущего года.
    Отклик Ниже приведены годовщины службы для ваших прямых отчетов:
    Мануэла Торрес:
  • Дата найма: 01.01.2014 г.
  • Дата предстоящего юбилея службы: 2025-12-31
  • Предстоящий этап: 12 лет

    Херардо Паласиос:
  • Дата найма: 01.01.2014 г.
  • Дата предстоящего юбилея службы: 2025-12-31
  • Предстоящий этап: 12 лет

    Сян Тао:
  • Дата найма: 01.01.2014 г.
  • Дата предстоящего юбилея службы: 2025-12-31
  • Предстоящий этап: 12 лет
    Если вам нужна дополнительная помощь, не стесняйтесь спросить!
  • Конфигурация шаблона 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 узла синтаксического анализа.

    Снимок экрана: поле значения синтаксического анализа.

    Снимок экрана: окно

    Снимок экрана: JSON с выделенной функцией LookUp.

    Свойство адаптивная карточка 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]
  • Обновление центра затрат для моей команды
  • Конкретный центр затрат Сведения
    Описание Извлекает текущий центр затрат руководителя, отображает его, а затем предлагает руководителю выбрать прямой и ввести новый центр затрат с датой начала. Диспетчер также может включать в запрос прямую и должность, и он будет заполнен слотом
    Запросы
  • Обновление центра затрат для [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": []
        }
    

    должность;

    должность; Описание
    Описание Извлекает руководителей, направляет текущие названия заданий, отображает его, а затем предлагает руководителю выбрать прямой и ввести новое название с датой начала. Диспетчер также может включать в запрос прямую и должность.
    Запросы
  • Я хочу изменить должность для [EmployeeName]
  • Обновите [EmployeeName]название должности на [newJobTitle]
  • Можно ли изменить должность члена команды?
  • Я хотел бы изменить [EmployeeName]должность
  • Обновление названия задания для моих прямых отчетов
  • Измените должность участника команды на [newJobTitle]?
  • Адаптивная карточка Снимок экрана: адаптивная карточка в чате.

    Получение конфигураций — сведения о задании

    Получение существующих сведений о задании — это первый шаг в потоке

    Получение конфигураций Описание
    Конфигурация шаблона 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": []
    }