Nas regras de cálculo para tipos de atributo ou funções de cálculo, os tipos de operandos individuais (conjuntos de valores, valores, constantes) são vinculados entre si por meio de operadores. Ao vincular tipos de atributo, se todos os operandos tiverem o mesmo tipo de dados, os resultados dos cálculos de atributo serão retornados como esse tipo de dados.
Pode utilizar, para cada operador, o atributo XML mode para especificar como as exceções devem ser tratadas (por exemplo, <addtimespan mode="PPM4">). Os valores válidos são PPM3 para o comportamento, até e incluindo o PPM 3.2.1 e PPM4 para o comportamento mais tolerante a falhas, a partir do PPM 4.0.
Por razões de compatibilidade com versões anteriores, o valor padrão PPM3.
Nas regras de cálculo que você cria usando o PPM Customizing Toolkit os operadores usados são associados ao valor PPM4 por padrão.
O cálculo e comportamento de erro dos dois modos diferentes são descritos para cada operador, a partir do capítulo Operadores matemáticos.
Em seus cálculos de tipo de atributo, defina um valor de retorno padrão defaultvalue, que é associado ao tipo de atributo a ser calculado se o cálculo de atributo falhar.
Aviso
Não combine valores numéricos com valores não numéricos em uma regra de cálculo (por exemplo, TEXT com DOUBLE) porque essas regras de cálculo levam ao cancelamento do cálculo.
Os tipos de dados numéricos podem ser combinados livremente entre si (por exemplo, usando o operador set). Os valores recebem sempre a unidade base para o tipo de atributo. Para cálculos de tipo de atributo com tipos de dados numéricos mistos (por exemplo, DOUBLE, TIMESPAN, FACTORYTIMESPAN) todos os valores são usados sem unidades e o resultado é salvo como tipo de dados DOUBLE. Pode então salvar esse valor na unidade base relevante como um atributo de destino PPM de outro tipo de dados.
Uma operação é especificada na forma de notação polonesa invertida, ou seja, o tipo de operador é especificado em primeiro lugar, seguido pelos operandos. Em notação XML, tem a seguinte aparência:
<operator 1>
<operand m>
...
</operand m>
<operand m+1>
...
</operand m+1>
<operator 2>
<operand n>
...
</operand n>
<operand n+1>
...
</operand n+1>
</operator 2>
</operator 1>
O elemento XML operator retorna o valor numérico calculado (resultado numérico dos operandos vinculados pelo operador). A unidade do resultado é determinada pelo tipo de dados do tipo de atributo ao qual o valor do resultado é associado. Os próprios operadores podem fazer parte de um operador de nível superior.
Exemplo
Cálculo da circunferência de um círculo com um raio de 6
(circunferência = 2 * p * raio):
<times>
<constant>
<dataitem value="2">
<datatype name="DOUBLE"/>
</dataitem>
</constant>
<constant>
<dataitem value="3,1415">
<datatype name="DOUBLE"/>
</dataitem>
</constant>
<constant>
<dataitem value="6">
<datatype name="DOUBLE"/>
</dataitem>
</constant>
</times>
Uma opção alternativa que leva ao mesmo resultado é criar um conjunto a partir dos operandos e multiplicar todos os elementos do conjunto entre si:
<product>
<set>
<constant>
<dataitem value="2">
<datatype name="DOUBLE"/>
</dataitem>
</constant>
<constant>
<dataitem value="3,1415">
<datatype name="DOUBLE"/>
</dataitem>
</constant>
<constant>
<dataitem value="6">
<datatype name="DOUBLE"/>
</dataitem>
</constant>
</set>
<product>
Os operadores descritos nos capítulos seguintes estão disponíveis para o cálculo de valores de tipo de atributo.