Opções de mapeamento
Você pode mapear campos de várias maneiras, dependendo das circunstâncias da importação e se os dados devem ser transformados antes de serem carregados em uma tabela de produção.
Também é importante observar que qualquer operação de importação pode exigir o uso de vários métodos de mapeamento, e esses métodos podem ser usados prontamente em conjunto.
Utilitário de mapeamento automático
O método de mapeamento mais simples é quando todos os nomes de campos dos conjuntos para importação correspondem aos nomes dos campos nas tabelas de produção nas quais os dados serão transformados. Nesse caso, basta clicar em Mapear automaticamente os campos correspondentes na lista relacionada no formulário Mapa de transformação da tabela e confirmar a correspondência apropriada. Se houver discrepâncias em termos de como os campos foram correspondidos automaticamente, use o utilitário de assistência de mapeamento para corrigi-los. Quando todos os campos estiverem correspondidos corretamente, clique no link relacionado Transformar para começar a transformar os dados na tabela de destino.
Utilitário de assistência de mapeamento
Alterando o formato de data
| Formato de data | Descrição |
|---|---|
| dd-MM-aaaa | Dia-mês-ano |
| dd-MM-aaaa hh:mm:ss | Dia-mês-ano horas-minutos-segundos |
| dd-MM-aaaa hh:mm:ss z | Fuso horário de horas-minutos-segundos dia-mês-ano |
| MM-dd-aaaa | Mês-dia-ano |
| MM-dd-aaaa hh:mm:ss | Mês-dia-ano horas-minutos-segundos |
| MM-dd-aaaa hh:mm:ss z | Fuso horário de horas-minutos-segundos mês-dia-ano |
| aaaa-dd-MM | Ano-dia-mês |
| aaaa-MM-dd | Ano-mês-dia |
| aaaa-MM-dd hh:mm:ss | Ano-mês-dia horas-minutos-segundos |
Para denotar o formato de 24 horas, especifique um formato de data personalizado usando HH:mm:ss em vez de hh:mm:ss.
A conversão de um formato de data de 24 horas para 12 horas pode fazer com que as horas de 12:00 a 23:59 sejam formatadas como 00:00 a 11:59.
Mapeamento para um campo de duração
- Calcular a duração a partir de uma data de início e de término
- Converter um valor de duração existente em um valor de duração ServiceNow
Calculando um valor de duração a partir de uma data de início e de término
- Navegar até .
- Selecione o mapa de transformação para o qual você deseja calcular um valor de duração. Por exemplo, o mapa de transformação de notificação que é importado para a tabela Incidente.
- Marque a caixa de seleção Executar script.
- Insira JavaScript para transformar as datas de início e término em uma duração. Consulte o script de exemplo.
- Clique em Atualizar.
target.duration = gs.dateDiff(source.u_start.getDisplayValue(), source.u_end.getDisplayValue(), false);Converter um valor de duração em um valor de duração da ServiceNow
- Navegar até .
- Selecione um mapa de transformação.
Por exemplo, o mapa de transformação de notificação que é importado para a tabela Incidente.
- Marque a caixa de seleção Executar script.
- Insira JavaScript para converter valores de duração existentes em valores de duração ServiceNow. Consulte o script de exemplo.
- Clique em Atualizar.
//Transform the value in source.u_duration from seconds to milliseconds
target.duration.setDateNumericValue(source.u_duration * 1000);//Transform the value in source.u_duration to ServiceNow format
target.duration.setDateNumericValue(source.u_duration);Usando um script para calcular um valor de origem
- O valor de origem não está no formato do valor de destino mapeado.
- Você deseja pesquisar um valor antes de mapear para o campo de destino.
- O valor de origem deve ser calculado a partir de vários campos.
- Você precisa criar um valor de aglutinação composto ou calculado no campo de destino.
Um script de origem espera que o valor calculado seja definido na variável global answer.
Mapeamento de campos binários ou BLOB
ServiceNow usa um processo especial para importar dados binários e de objetos binários grandes (BLOB) de fontes de dados JDBC. Todos os dados binários são convertidos automaticamente em um registro na tabela Anexo [sys_attachment] antes que a transformação ocorra. A tabela de conjunto de importação armazena somente o valor sys_id do registro de anexo no campo da tabela de importação em vez do valor binário real. Por exemplo, suponha que você use uma fonte de dados JDBC para importar dados de um sistema do CA Service Desk, que armazena o valor de chave de cada registro como dados binários. Quando você importa os valores de chave da Central de serviços para uma tabela ServiceNow, o campo ServiceNow contém apenas uma referência sys_id para os dados binários correspondentes na tabela Registro de anexo [sys_attachment] em vez dos dados binários reais.
onAfter. O script precisa ser executado em um evento onAfter porque o objeto target.sys_id só está disponível depois que os dados são colocados na tabela de conjunto de importação. Por exemplo, para mapear o anexo resultante para o registro de transformação de destino, você pode usar o script a seguir.var agr = new GlideRecord("sys_attachment");
agr.addQuery("sys_id", source.u_blob_field);
// the source field needs to be mapped to the source that is the BLOB
agr.query();
if(agr.next()) {
agr.table_name = "cmdb_ci"; // the target table of the transform map
agr.table_sys_id = target.sys_id; // the target record
agr.content_type = source.u_contentype;
// the content type string if available,
// this becomes the mime encoding when clicking an attachment link
agr.update(); // finally, move/re-attach the attachment to the target row }db_image, execute o seguinte script onAfter para exibir a imagem:var strTemp = source.u_file_name;
var fType = strTemp.substr(- 3);
var iCont = "" ;
if(fType == 'jpg') {
iCont = 'jpeg' ; }
else {
iCont = fType; }
var agr = new GlideRecord("sys_attachment");
agr.addQuery("sys_id", source.u_blob_field);
agr.query();
if(agr.next()) {
agr.table_name = "ZZ_YYdb_image";
agr.table_sys_id = target.sys_id;
agr.content_type = 'image/' + iCont;
agr.file_name = 'image';
agr.update(); }