Depurando em CPQ
Como usar o depurador para aperfeiçoar seus scripts antes da implantação.
Quando você precisa corrigir um script em CPQ, A ferramenta de depuração em Funções avançadas e scripts de aprimoramento pode ajudar. Este guia mostra como escrever JSONs de depuração para isolar e testar seus scripts antes da implantação. Ao seguir estas práticas recomendadas para depurar scripts defeituosos, você pode ajudar a garantir que seus blueprints sejam executados sem falhas.
Diretrizes gerais para depuração
Usando log() : Ao codificar um comportamento complexo, você pode ter que verificar se determinados valores estão definidos ou manipulados da maneira correta. Em vez de ver apenas o que é retornado pela regra, use Console.log([variableName]) em um script para mostrar o valor da variável nessa linha quando executado no depurador.
Comente blocos de códigos: Quando um script se torna longo, pode ser necessário comentar seções grandes de código para ver de onde o comportamento se origina. Geralmente, isso pode ser feito usando // ou /* */ e, em seguida, depurar.
Comente o JSON de depuração para uso futuro: Se você estiver atualizando continuamente uma regra durante a implementação, éʼs uma boa ideia salvar o JSON de depuração na parte superior ou inferior do script dentro de um bloco de comentários. Assim, quando o script for salvo, o JSON também poderá ser salvo para referência futura.
Para obter mais dicas sobre esses recursos, consulte Usando comentários e o console para depurar scripts.
Como usar o depurador
No editor de scripts:
- Alterne as opções do dubugger clicando no ícone de bug (A).
- Insira seu JSON na seção Entradas do depurador (b), como ele aparecerá quando sua regra for executada durante a configuração.
- Clique em para executar sua regra com as entradas do depurador Execute o Depurador No painel Saída do depurador.Nota:O script não precisa ser salvo para executar o depurador. O estado do script quando o botão é clicado é usado durante o teste.
- Os objetos retornados e as informações console.log aparecem no painel Saída do depurador (d).
. CPQ O depurador usa o formato JSON, que é escrito usando pares atributo-valor. Os atributos são os nomes de variáveis dos campos usados na regra, e o valor é o campoʼs dados em seu formato de objeto.
Observe também:
- O pacote JSON é encapsulado usando chaves
- Cada campo é separado por uma vírgula (,).
- Cada par atributo-valor é separado por dois pontos (:).
A estrutura do JSON que você usa depende do tipo de objeto de cada campo, bem como se o script está sendo usado para uma regra ou um aprimoramento.
Formatação JSON específica do campo
- Campos de texto, números, valores boolianos e listas de seleção única são os campos mais fáceis de depurar, pois correspondem a objetos simples de valor singular, como cadeias de caracteres, números e valores boolianos.
{ "cfg":{ "textField": "value", "singleSelect picklist": "value", "numberField": 123, "booleanField": true } } -
Os campos de data usam o padrão internacional ISO-8601 para manter informações de data. Se um campo inserir datas no depurador, os dados deverão ser uma cadeia de caracteres no formato
AAAA-MM-DDThh:mm:ss.sssZ.{ "cfg":{ "dateField": "2024-01-01T00:00:00.000Z" } } - As listas de seleção de seleção múltipla estão na forma de uma matriz que contém cadeias de caracteres. Mesmo com apenas uma opção selecionada, as cadeias de caracteres devem estar em um formato de matriz ao depurar, envoltas por chaves quadradas ([ ]) e separadas por vírgulas (,).
{ "cfg":{ "multiSelect picklist": [ "option 1", "option 2" ] } } - Os seletores de produto são exclusivos para referência em uma regra ou aprimoramento, pois eles têm seu próprio tipo de regras simples, ações em massa. Eles podem ser referenciados somente pela opção de lista de seleção, tratando-os como um campo de seleção única ou múltipla. Ou, o depurador pode fazer referência a um subcampo do seletor de produto ou agregar usando a chave
pkr.{ "cfg": { "productPickerSS": "selectedValue", "productPickerMS": [ "selectedValue1", "selectedValue2" ] }, "pkr": { "productPicker2": { "value": "productPicker2_option1", "select": true, "quantity": 100, "exampleSubfield": "Example Value", "aggregates": { "quantity_max": 100 } } } }Observe que, ao fazer referência a um subcampo do seletor de produto em uma regra, você precisa usar o.
pkrobjeto e nãocfg.let x = pkr.productPickerName.subFieldName - Os conjuntos não podem ser referenciados por funções avançadas, mas os campos contidos neles podem. Devido à natureza do campo Definir, um conjuntoʼs linhas pode ser determinado e referenciado somente no aprimoramento em Configurar/Reconfigurar. No entanto, você pode testar quando um campo como OptionValue estiver em uma regra.
{ "set": { "exampleSet": { "index": 1, "optionValue": "product1", "selectOption": true, "size": 2, "aggregateExample1": 1 } } }Para saber mais sobre como definir como padrão um conjunto de camposʼs, consulte Script: Como preencher valores definidos.
Formatação JSON específica do contexto
As entradas de campo são inseridas no formato JSON, usando o nome da variável de campo como a chave e o valor pretendido como o valor.
{
"cfg": {
"exampleField": "Example Value"
}
}
Na configuração e reconfiguração, as entradas são inseridas no formato JSON, usando o nome da variável de campo como chave. O valor é um objeto que consiste em duas propriedades: valuee. userEdited. valuedeve ser definido com o valor de campo pretendido. userEditedÉ um valor booliano.
Formatação JSON específica do contexto: Campos
{
"cfgRequest": {
"exampleField": {
"value": "Example Value",
"userEdited": false
},
"exampleMultiselect picklist": {
"value": [
"one",
"two"
],
"userEdited": false
}
}
}
Para obter mais informações sobre como usar o. userEditedpropriedade, consulte Script: Verificando as primeiras configurações e as subsequentes
Formatação JSON específica do contexto: Seletores de produto
"cfgRequest": {
"pkr": {
"productPicker1": {
"data": [
{
"value": {
"value": "productPicker1_option1",
"userEdited": false
},
"select": {
"value": true,
"userEdited": false
},
"quantity": {
"value": 100,
"userEdited": false
},
"exampleSubfield": {
"value": "Example Value",
"userEdited": false
}
}
],
"aggregates": {
"quantity_max": {
"value": 100
}
}
}
},
"productPicker2": {
"value": "productPicker2_option1",
"userEdited": false
}
}
}
Formatação JSON específica do contexto: Conjuntos
{
"cfgRequest": {
"set": {
"exampleSet": {
"data": [
{
"index": {
"value": 1
},
"optionValue": {
"value": "product1",
"userEdited": false
},
"selectOption": {
"value": true,
"userEdited": false
},
"textField": {
"value": "a",
"userEdited": false
}
}
],
"size": {
"value": 1,
"userEdited": false
},
"aggregateExample1": {
"value": 1
}
}
}
}
}
Formatação JSON específica do contexto: Seletores de produto em conjuntos
"cfgRequest": {
"set": {
"exampleSet": {
"data": [
{
"index": {
"value": 1
},
"optionValue": {
"value": "product1",
"userEdited": false
},
"selectOption": {
"value": true,
"userEdited": false
},
"productPicker1InSet": {
"value": [
"option1_Of_productPicker1InSet",
"option2_Of_productPicker1InSet"
],
"userEdited": false
},
"pkr": {
"productPicker2InSet": {
"data": [
{
"value": {
"value": "option1_Of_productPicker2InSet",
"userEdited": false
},
"select": {
"value": true,
"userEdited": false
},
"quantity": {
"value": 100,
"userEdited": false
}
}
],
"aggregates": {
"quantity_max": {
"value": 100
}
}
}
}
}
],
"size": {
"value": 1,
"userEdited": false
},
"aggregateExample1": {
"value": 1
}
}
}
}
}No aprimoramento de resposta da BOM:
Lista de produtos: As entradas são inseridas como uma matriz de objetos no formato JSON, usando o nome da variável de propriedade como a chave e o valor pretendido como o valor.
[
{
"id": "test product",
"quantity": 2
},
{
"id": "test product2",
"quantity": 5,
"bomType": "MANUFACTURING"
}
]Aprimoramento de preços da extensão da lista de seleção:
Solicitação de extensão da lista de seleção: As entradas são inseridas como uma matriz de objetos no formato JSON, usando o nome da variável de propriedade como a chave e o valor pretendido como o valor. No exemplo, "set" e "index" só são necessários se estiver usando um conjunto.[
{
"fieldVariableName": "myField1",
"set": "mySetVariableName1",
"index": 1,
"optionValue": "Option 1",
"productId": "myProduct1",
"productUniqueIdentifier": "myId"
}
]
Se o comportamento do depuradorʼs for diferente do comportamento do tempo de execução
Em quase todos os casos, o JSON de depuração precisa corresponder exatamente ao que normalmente seria inserido durante o tempo de execução como valores válidos para os campos. Certifique-se de que você está usando o tipo de dados correto ou as estruturas descritas acima.
Em outros casos, regras semelhantes podem estar agindo no mesmo campo. Nesse caso, o depurador não será útil, pois ele só pode mostrar o comportamento de uma regra de cada vez. Pode ser necessário desativar regras inteiras e reimplantar para descartar o comportamento indesejado.
Se tudo mais falhar, abra um caso com nossa equipe de suporte ou envie um e-mail para support@logik.io.