기능 필드
Now Platform에서 함수 필드와 스크립트를 생성하여 일반적인 데이터베이스 변환 및 계산을 수행합니다.
일반 필드는 데이터베이스에 값을 저장합니다. 함수 필드는 데이터를 저장하는 대신 데이터베이스 쿼리의 결과를 표시합니다. 함수 필드에는 연결된 데이터베이스 열이 없습니다. 대신, 함수 필드는 다른 필드와 상수의 간단한 계산을 기반으로 값을 생성합니다. 폼, 목록, 쿼리 조건, 보고서 등 시스템의 다른 필드와 마찬가지로 사용할 수 있습니다.
사용 사례
10자 미만의 쓸모없는 짧은 설명이 있는 모든 인시던트를 식별하려고 합니다.지정된 기준에 맞는 기록을 확인하기 위해 모든 기록을 쿼리하는 대신, 기준을 충족하는 기록만 검색하는 함수 필드 또는 함수 스크립트를 생성합니다.
간단한 계산의 경우 계산된 값을 저장하는 것보다 함수 필드 또는 함수 스크립트를 사용하는 것이 좋습니다. 이 값은 검색 시 항상 계산됩니다. 함수 필드 사용의 또 다른 이점은 애플리케이션 노드가 아닌 데이터베이스 서버가 변환을 수행한다는 것입니다.
함수 필드와 계산된 필드 비교
계산된 필드의 값은 데이터베이스에 저장됩니다. 함수 필드 또는 함수 스크립트의 값은 데이터베이스에 저장되지 않지만 검색 시 계산됩니다. 함수 필드 값은 항상 최신 상태입니다.
기능 필드와 비즈니스 규칙 비교
비즈니스 논리가 하나 이상의 기존 필드의 단순 변환을 기반으로 하는 경우 함수 필드 또는 스크립트를 사용합니다. 기능 필드와 스크립트를 사용하면 변환 결과를 저장하고 유지관리하지 않고도 비즈니스 논리를 구현할 수 있습니다.
함수 필드 대 필터, 쿼리 문자열, Rhino
문자열 변환을 수행하기 위해 Rhino를 호출하는 대신, 함수 필드나 함수 스크립트를 사용하여 변환을 수행할 수 있습니다. 함수 필드와 함수 스크립트는 효율성이 더 높으며 저장하거나 유지관리할 필요가 없는 최신 값을 생성합니다.
함수 필드 제한사항
- 기능 필드는 직접 감사하거나 인덱싱할 수 없습니다.주:함수 필드를 일반 필드처럼 인덱싱하려면 함수에서 사용하는 개별 필드가 인덱싱되어야 합니다. 또는 최상의 성능을 위해 함수에 사용되는 모든 필드를 포함하는 복합 인덱스가 있는지 확인합니다.
- 함수 필드 값은 데이터베이스에 저장되지 않으므로 함수 필드를 암호화할 수 없습니다.
- 함수 필드는 일반 필드로 변환하거나 그 반대로 변환할 수 없습니다.
- 보고 UI에서 생성하는 함수 필드는 닷워킹을 지원하지 않습니다. 자세한 내용은 Reporting에서 기능 필드 구성을 참조하십시오.
- 보안은 함수의 구성 요소와 필드의 계산된 값에 대해 평가됩니다. 시각화에서 사용되는 경우 사용자가 볼 수 없는 정보가 포함된 섹션은 사용자에게 숨겨집니다.
- 필드 기능 이름은 고유해야 합니다.
플랫폼 기능 정의
- 다음 API(애플리케이션 프로그래밍 인터페이스)를 사용하여 스크립트에서 함수를 빌드하고 사용합니다.
표 1. 함수 API API 설명 범위 지정 GlideDBFunctionBuilder SQL 작업을 수행할 함수를 생성합니다. GlideRecord - addFunction(객체 함수) 함수를 GlideRecord에 적용합니다. GlideDBFunctionCaseBuilder - Global 케이스 문을 작성합니다. - 다음 예와 같이 함수 정의를 포함하는 필드를 만듭니다.
딕셔너리 항목 [sys_dictionary] 양식에서 함수 필드 확인란을 선택합니다. 이 작업은 필드가 값을 저장하는 대신 기능을 실행하도록 지정합니다.
Glidefunction 운영
glidefunction:<operation> 구문을 사용하여 다음 작업을 수행할 수 있습니다. 필드를 인수로 제공하면 관련 필드로 닷워킹할 수 있습니다. 예: cmdb_ci.name.| 운영 | 설명 | 예 |
|---|---|---|
| 추가() | 두 개의 숫자 필드를 입력으로 취하고, 추가하고, 결과를 필드 값으로 반환 합니다. 이 함수는 또한 두 입력 중 하나에 대해 숫자 값을 사용합니다. 숫자 값을 작은따옴표 또는 큰따옴표로 묶습니다. |
glidefunction:add(child_incidents, parent_incident) 인시던트에 5개의 하위 인시던트와 1개의 상위 인시던트가 있는 경우 6을 반환합니다. 가능한 반환 형식: 10진수, 부동 소수점 숫자, 큰 정수, 정수 |
| 병합() | 쉼표로 구분된 필드 수를 입력으로 받고 첫 번째 비어 있지 않은 값을 반환합니다. | 활공 기능 : 병합 (closed_at, resolved_at, sys_updated_on) closed_at의 값이 비어 있으면 함수는 resolved_at의 값을 반환합니다. resolved_at의 값도 비어 있으면 함수는 sys_updated_on의 값을 반환합니다. 반환 유형: Text |
| concat()을 사용합니다. | 쉼표로 구분된 필드와 상수의 수를 입력으로 받고, 입력을 연결하고, 단일 문자열을 필드 값으로 반환합니다. | glidefunction:concat(incident_number, '/', short_description) 숫자 필드의 값이 "INC0001"이고 short_description "내 클라이언트에는 새 노트북이 필요함"인 경우 "INC0001 / 내 클라이언트는 새 노트북이 필요합니다."를 반환합니다. 반환 유형: Text |
| datediff()를 사용합니다. | 두 날짜/시간 필드를 입력으로 받으며 날짜와 일, 분, 초 사이의 차이를 계산하여 결과를 기간 필드 값으로 반환합니다. | glidefunction:datediff(closed_at, sys_created_on) 인시던트의 생성 날짜부터 종료 날짜까지의 기간을 반환합니다. 결과 예: 10일 8시간 23분 11초 반환 유형: 기간 |
| dayofweek()를 호출합니다. | 두 개의 인수를 취합니다: 날짜 필드와 '1' (주가 일요일에 시작) 또는 '2' (주가 월요일에 시작)의 상수입니다. 요일을 나타내는 정수 값으로 결과를 반환합니다. dayofweek() 함수는 UTC 날짜를 사용하지만 인스턴스의 시간대에 따라 비교 값을 조정합니다. |
glidefunction:dayofweek(resolved_at, '1')입니다. resolved_at 수요일에 발생하는 경우 정수가 1이면 4를 반환하고 정수가 2이면 3을 반환합니다. 반환 유형: 정수 |
| distance_sphere() | 두 위치를 가져와서 두 위치 사이의 거리를 미터 단위로 반환합니다. |
반환 유형: 10진수 |
| 나누기() | 두 개의 숫자 필드를 입력으로 취하고, 추가하여 결과를 필드 값으로 반환합니다. 이 함수는 또한 두 입력 중 하나에 대해 숫자 값을 사용합니다. 숫자 값을 작은따옴표 또는 큰따옴표로 묶습니다. |
활공 기능 : 나누기 (u_num2, u_num1) num2 = 10이고 num1 = 2이면 5를 반환합니다. 가능한 반환 형식: 10진수, 부동 소수점 숫자, 큰 정수, 정수 |
| 가장 큰() | 두 개 이상의 값을 입력으로 받고 인수 목록의 가장 큰 값을 반환합니다. | 활공 기능 : 가장 큰 (10,100,1000) 1000을 반환합니다. 가능한 숫자 반환 형식: 10진수, 부동 소수점 숫자, 큰 정수, 정수 이 함수는 날짜 및 문자열 필드에도 사용할 수 있습니다. |
| 최소() | 두 개 이상의 값을 입력으로 받고 인수 목록의 가장 낮은 값을 반환합니다. | 활공 기능 : 최소 (10,100,1000) 10을 반환합니다. 가능한 숫자 반환 형식: 10진수, 부동 소수점 숫자, 큰 정수, 정수 이 함수는 날짜 및 문자열 필드에도 사용할 수 있습니다. |
| 길이() | 문자열 필드를 입력으로 취하고, 문자로 필드 길이를 계산하고, 결과를 필드 값으로 반환합니다. | glidefunction:length(short_description) short_description = "이 응용 프로그램이 테스트를 수행하고 있습니다"인 경우 37을 반환합니다. 반환 유형: 정수 |
| 곱하기() | 두 개의 숫자 필드를 입력으로 취하고, 곱셈을 수행하고, 결과를 필드 값으로 반환합니다. 이 함수는 또한 두 입력 중 하나에 대해 숫자 값을 사용합니다. 숫자 값을 작은따옴표 또는 큰따옴표로 묶습니다. |
활공 기능 : 곱하기 (u_num1, u_num2) num1 = 8이고 num_2 = 6이면 48을 반환합니다. 가능한 반환 형식: 10진수, 부동 소수점 숫자, 큰 정수, 정수 |
| 위치() | 두 개의 텍스트 필드 또는 두 개의 텍스트 필드와 정수를 입력으로 가져옵니다. 텍스트 필드 중 하나 또는 둘 다 문자열일 수도 있습니다.
첫 번째 텍스트 필드가 두 번째 텍스트 필드(지정된 경우 정수의 위치 다음)에 없으면 0을 반환합니다. |
반환 유형: 정수 |
| substring()을 사용합니다. | 텍스트 필드와 두 개의 정수를 입력으로 가져옵니다. 첫 번째 정수의 위치에서 시작하여 두 번째 정수의 길이인 문자열의 첫 번째 인스턴스를 반환합니다. | glidefunction:substring(short_description, '7', '2') short_description 필드의 값이 'We're going to the store'인 경우 'go'를 반환합니다. 반환 유형: Text |
| 빼기() | 두 개의 숫자 필드를 입력으로 취하고, 첫 번째 숫자에서 두 번째 숫자를 뺀 다음 결과를 필드 값으로 반환합니다. 이 함수는 또한 두 입력 중 하나에 대해 숫자 값을 사용합니다. 숫자 값을 작은따옴표 또는 큰따옴표로 묶습니다. |
활공 기능 : 빼기 (u_num1, u_num2) num1 = 8이고 num_2 = 6이면 2를 반환합니다. 가능한 반환 형식: 10진수, 부동 소수점 숫자, 큰 정수, 정수 |
데이터베이스 기능을 수행할 함수 필드 만들기
데이터베이스 함수의 결과(예: 수학 연산, 필드 길이 계산 또는 요일 계산)를 표시하는 필드를 만듭니다. 프로덕션 인스턴스에 배포하기 전에 하위 프로덕션 인스턴스에서 테스트합니다.
시작하기 전에
프로시저
결과
함수 정의가 유효하지 않은 경우, 함수 필드가 문자열 유형 필드이거나 다른 필드 유형의 경우 빈 값인 경우 예상 값 대신 잘못된 함수 메시지가 표시됩니다.