기능 필드
Now Platform에서 기능 필드와 스크립트를 생성하여 공통 데이터베이스 변환 및 계산을 수행합니다.
일반 필드는 데이터베이스에 값을 저장합니다. 함수 필드는 데이터를 저장하는 대신 데이터베이스 쿼리의 결과를 표시합니다. 함수 필드에 연결된 데이터베이스 열이 없습니다. 대신, 함수 필드는 다른 필드와 상수의 단순 계산을 기반으로 값을 생성합니다. 시스템의 다른 필드와 마찬가지로 폼, 목록, 쿼리 조건, 보고서 등에서 사용할 수 있습니다.
사용 케이스
10자 미만의 쓸모없는 짧은 설명으로 모든 인시던트를 식별하려고 합니다.지정된 기준을 충족하는 기록을 확인하기 위해 모든 기록을 쿼리하는 대신, 기준을 충족하는 기록만 검색하는 기능 필드 또는 기능 스크립트를 생성합니다.
간단한 계산의 경우 계산된 값을 저장하는 것보다 함수 필드 또는 함수 스크립트를 사용하는 것이 좋습니다. 값은 항상 검색 시 계산됩니다. 함수 필드 사용의 또 다른 이점은 데이터베이스 서버가 애플리케이션 노드 대신 변환을 수행한다는 것입니다.
함수 필드와 계산된 필드 비교
계산된 필드의 값은 데이터베이스에 저장됩니다. 함수 필드 또는 함수 스크립트의 값은 데이터베이스에 저장되지 않지만 검색 시 계산됩니다. 함수 필드 값은 항상 최신 상태입니다.
기능 필드와 비즈니스 규칙 비교
비즈니스 논리가 하나 이상의 기존 필드의 단순 변환을 기반으로 하는 경우 기능 필드 또는 스크립트를 사용합니다. 함수 필드와 스크립트를 사용하면 변환 결과를 저장하고 유지 관리하지 않고도 비즈니스 논리를 구현할 수 있습니다.
함수 필드와 필터, 쿼리 문자열, Rhino
문자열 변환을 수행하기 위해 Rhino를 호출하는 대신, 함수 필드나 함수 스크립트를 사용하여 변환을 수행할 수 있습니다. 함수 필드와 함수 스크립트가 더 효율적이며 저장하거나 유지 관리할 필요가 없는 최신 값을 생성합니다.
기능 필드 제한 사항
- 함수 필드는 직접 감사하거나 인덱싱할 수 없습니다.주:함수 필드를 일반 필드인 것처럼 인덱싱하려면 함수에서 사용하는 개별 필드가 인덱싱되어야 합니다. 또는 최상의 성능을 위해 함수에 사용되는 모든 필드를 포함하는 복합 인덱스가 있는지 확인합니다.
- 함수 필드 값이 데이터베이스에 저장되지 않으므로 함수 필드를 암호화할 수 없습니다.
- 함수 필드는 일반 필드로 또는 그 반대로 변환할 수 없습니다.
- 보고 UI에서 생성하는 기능 필드는 닷워킹을 지원하지 않습니다. 자세한 내용은 보고에서 함수 필드 구성을 참조하십시오.
- 보안은 함수의 구성요소와 필드의 계산된 값에 대해 평가됩니다. 시각화에서 사용되는 경우 사용자에게 볼 수 없는 정보가 포함된 섹션은 사용자에게 숨겨집니다.
- 필드 기능 이름은 고유해야 합니다.
플랫폼 기능 정의
- 다음 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진수, 부동 소수점 숫자, 큰 정수, 정수 |
| 병합() | 쉼표로 구분된 필드 수를 입력으로 받고 첫 번째 비어 있지 않은 값을 반환합니다. | GlideFunction:Coalesce(closed_at, resolved_at, sys_updated_on) closed_at 값이 비어 있으면 함수는 resolved_at 값을 반환합니다. resolved_at 값도 비어 있으면 함수는 sys_updated_on 값을 반환합니다. 반환 유형: 텍스트 |
| concat() | 쉼표로 구분된 필드와 상수의 수를 입력으로 받고, 입력을 연결하고, 단일 문자열을 필드 값으로 반환합니다. | 글라이드 함수:concat(incident_number, '/', short_description) 숫자 필드의 값이 'INC0001'이고 short_description '내 클라이언트에 새 노트북이 필요합니다'인 경우 "INC0001/내 클라이언트에게 새 노트북이 필요합니다."를 반환합니다. 반환 유형: 텍스트 |
| datediff() | 두 날짜/시간 필드를 입력으로 받으며 날짜와 일, 분, 초 사이의 차이를 계산하여 결과를 기간 필드 값으로 반환합니다. | 글라이드 함수:datediff(closed_at, sys_created_on) 생성 날짜부터 종결 날짜까지의 인시던트 기간을 반환합니다. 결과 예시: 10일 8시간 23분 11초 반환 유형: 기간 |
| 요일()요일() | 두 개의 인수를 취합니다. 날짜 필드와 '1' 의 상수 (일요일에는 주 시작) 또는 '2' (주 월은 월요일에 시작)입니다. 요일을 나타내는 정수 값으로 결과를 반환합니다. dayofweek() 함수는 UTC 날짜를 사용하지만 인스턴스의 시간대에 따라 비교 값을 조정합니다. |
GlideFunction:dayOfWeek(resolved_at, '1')입니다. resolved_at 수요일에 발생하는 경우 정수가 1이면 4를 반환하고 정수가 2이면 3을 반환합니다. 반환 유형: 정수 |
| distance_sphere() | 두 위치를 가져와 두 위치 사이의 거리를 미터 단위로 반환합니다. |
반환 유형: 10진수 |
| 나누다() | 두 개의 숫자 필드를 입력으로 취하고, 추가하여 결과를 필드 값으로 반환합니다. 또한 이 함수는 두 입력 중 하나에 대해 숫자 값을 사용합니다. 숫자 값을 작은따옴표 또는 큰따옴표로 묶습니다. |
GlideFunction:Divide(u_num2,u_num1) num2 = 10이고 num1 = 2인 경우 5를 반환합니다. 가능한 반환 형식: 10진수, 부동 소수점 숫자, 큰 정수, 정수 |
| get_latitude() | 지리적 지점 열, 숫자 필드 또는 숫자 상수를 가져와 [-90,90] 범위 내의 유효한 위도 값으로 변환합니다. |
반환 유형: 부동 소수점 숫자 |
| get_longitude() | 지리적 지점 열, 숫자 필드 또는 숫자 상수를 가져와 [-179,180] 범위 내의 유효한 경도 값으로 변환합니다. |
반환 유형: 부동 소수점 숫자 |
| 가장 큰() | 두 개 이상의 값을 입력으로 받고 인수 목록 중 가장 큰 값을 반환합니다. | 글라이드 기능 : 가장 큼 (10,100,1000) 1000을 반환합니다. 가능한 숫자 반환 형식: 10진수, 부동 소수점 숫자, 큰 정수, 정수 이 함수는 날짜 및 문자열 필드에서도 작동합니다. |
| 최소() | 두 개 이상의 값을 입력으로 받고 인수 목록 중 가장 낮은 값을 반환합니다. | GlideFunction:least(10,100,1000) 10을 반환합니다. 가능한 숫자 반환 형식: 10진수, 부동 소수점 숫자, 큰 정수, 정수 이 함수는 날짜 및 문자열 필드에서도 작동합니다. |
| 길이() | 문자열 필드를 입력으로 취하고, 문자로 필드 길이를 계산하고, 결과를 필드 값으로 반환합니다. | 글라이드 기능:길이(short_description) short_description = "이 애플리케이션이 테스트를 수행하고 있습니다"인 경우 37을 반환합니다. 반환 유형: 정수 |
| 곱하기() | 두 개의 숫자 필드를 입력으로 취하고, 곱셈을 수행하고, 결과를 필드 값으로 반환합니다. 또한 이 함수는 두 입력 중 하나에 대해 숫자 값을 사용합니다. 숫자 값을 작은따옴표 또는 큰따옴표로 묶습니다. |
GlideFunction:Multiply(u_num1, u_num2) num1 = 8이고 num_2 = 6인 경우 48을 반환합니다. 가능한 반환 형식: 10진수, 부동 소수점 숫자, 큰 정수, 정수 |
| 위치() | 두 개의 텍스트 필드 또는 두 개의 텍스트 필드와 정수를 입력으로 가져옵니다. 텍스트 필드 중 하나 또는 둘 모두 문자열일 수도 있습니다.
첫 번째 텍스트 필드가 두 번째 텍스트 필드에 없는 경우(지정된 경우 정수의 위치 다음에) 0을 반환합니다. |
반환 유형: 정수 |
| 하위 문자열() | 텍스트 필드와 두 개의 정수를 입력으로 가져옵니다. 첫 번째 정수의 위치에서 시작하여 두 번째 길이의 문자열의 첫 번째 인스턴스를 반환합니다. | GlideFunction:substring(short_description, '7', '2') short_description 필드의 값이 '스토어에 갑니다'인 경우 'go'를 반환합니다. 반환 유형: 텍스트 |
| 빼기() | 두 개의 숫자 필드를 입력으로 취하고, 첫 번째 숫자에서 두 번째 숫자를 뺀 다음 결과를 필드 값으로 반환합니다. 또한 이 함수는 두 입력 중 하나에 대해 숫자 값을 사용합니다. 숫자 값을 작은따옴표 또는 큰따옴표로 묶습니다. |
GlideFunction:Subtract(u_num1, u_num2) num1 = 8이고 num_2 = 6인 경우 2를 반환합니다. 가능한 반환 형식: 10진수, 부동 소수점 숫자, 큰 정수, 정수 |
| to_geopoint() | 위도 및 경도 열 또는 숫자 값을 가져와 지리적 지점 열로 변환합니다. |
반환 유형: 지리적 지점 |
데이터베이스 기능을 수행할 함수 필드를 작성합니다.
수학 연산, 필드 길이 계산 또는 요일 계산과 같은 데이터베이스 함수의 결과를 표시하는 필드를 생성합니다. 프로덕션 인스턴스에 배포하기 전에 하위 프로덕션 인스턴스에서 테스트합니다.
시작하기 전에
프로시저
결과
함수 정의가 잘못되면 예상 값 대신 함수 필드가 문자열 유형 필드이거나 다른 필드 유형에 대한 값이 비어 있으면 함수가 잘못되었습니다 라는 메시지가 나타납니다.