xMova Android

Instruções

  • actionbarsubtitle: Exibe mensagens abaixo do título da tela. Para remover o texto deve usar o arroba (@).
  • addDate: Função para somar ou subtrair tempo de um campo Date. Recebe uma data, um tempo e um tipo (h, m, s). O tempo pode ser positivo ou negativo. Método retorna um date com a soma dos dois valores.

Exemplo:

Entidade
      id inc
      dataAtual now
      data Date
      fieldEvents
              autoFill
                      data
                              return addDate dataAtual 1 @m
  • bluetooth: Usada para receber ou enviar arquivos via bluetooth. (default: sender) (veja: Sincronismo Off-line por Bluetooth)
  • bluetooth - sender: Define que será aberta a opção para enviar dados (ex.: bluetooth sender).
  • bluetooth - receiver: Define que será aberta a opção para receber dados (ex.: bluetooth receiver).
  • bluetooth - fileReceiver: Define que será a opção para receber arquivos (ex.: bluetooth fileReceiver). Para usar esta opção deve ser criada uma entidade de nome ReceivedFiles com os seguintes campos (id String uuid, name String notFill, date Now, content bytes)
  • clear: Realiza a limpeza (apaga todos os dados) do aplicativo.
  • concat: Faz a junção de dois textos.

Exemplo:

Entidade
      id inc
      campo1 long
      campo2 int
      campo3 String
      fieldEvents
              autoFill
                      campo3
                              return concat campo1 campo2
  • cryptography: Retorna um texto encriptografado conforme um algoritmo definido (apenas os suportados pelo Java: SHA-1, SHA-256 e MD5). Recebe dois parâmetros (ambos strings): algoritmo e field/string.

Exemplo:

Entidade
        String encrypt = cryptography @SHA-1 senha
  • replaceall: Retorna uma string modificada de acordo com a regex e o replace. Recebe três parâmetros, todos strings: element, regex e replacement. Caso não detecte algum padrão, retorna a String vazia.

Exemplo:

Entidade
        String telephone = replaceall "1239101234" "(/d{2})(/d{4})(/d*)" "($1)-$2-$3"
  • matches: Retorna um boleano que identifica se uma string contém um padrão de expressão regular. Recebe dois parâmetros, todos strings: element e regex.

Exemplo:

Entidade
        matches "1239101234" "(/d{2})(/d{4})(/d*)"
  • confirm: Retorna tela para confirmação do campo. O retorno false, não permite prosseguir com o fluxo.
  • confirm - password: Retorna tela para confirmação do campo através do input numérico.

Note

Da versão 2.7 do Core em diante, deve ser usada a funcionalidade input para requisição de password

Caso o parametro passado seja igual a 0(zero), é gerado um número aleatório com 4 digitos, e o usuário deve repetir este número no input (ex.: confirm password=0). Caso o parametro passado seja maior que 0(zero), é gerado um número aleatório com 4 digitos a partir do número passado, e o usuário deve informar um número de 4 digitos chamado contra-senha (ex.: confirm password=123).

Note

Algoritmo para gerar Contra Senha: Usa-se a senha que foi gerada de forma randômica, e o número passado como parametro no password que é carregado na constante Password. Faz-se a concatenação da soma de cada unidade dos números da senha randômica com cada unídate dos números do Password com a ordem invertida e pega os últimos 4 números. Senha randômica terá sempre 4 números, Password terá no máximo 4 números e pode ser complementada com zeros a esquerda.

Exemplo:

Password=> 1206
Password invertido=> 6021
Senha gerada=> 9999

soma => (6 + 9),(0 + 9),(2 + 9),(1 + 9)
concatenação=> 1591110
contra-senha=> 1110
  • confirm- lang: É passado uma chave presente no Lang, que contém o texto que será apresentado na tela.
  • confirm- lang - vars: Variáveis passadas para compor a mensagem presente no custom lang passado.

Exemplo:

Entidade
  campo1 long
  fieldEvents
        onValidate
          campo1
            return confirm password=0 lang=custom.msgCampo1 vars=var1:campo1
  • crud - Entity: Indica que sera aberto um crud para preencher uma entidade, criando um novo registro.
  • crud - finishRecord: Indica que a entidade aberta será finalizada.
  • finishRecord: Quando executado em conjunto com um record finaliza o record que foi passado.

Exemplo:

Boletim sync=out
if inc
apontamento List<Apontamento> transient
crudActions
        agendarFechamento
                schedule time=8h
                        Boletim boletim = selectLast from Boletim
                        finishRecord boletim
  • string - getGCMIdentifier: Retorna o identificador do Google correspondente ao dispositivo do usuário. Caso não tenha conseguido obter, por falta de Google Play Services instalado, retorna uma string vazia.
  • currentDate: Retorna a data atual.
  • currentDateType: Retorna o tipo da data no celular no momento. Valores retornados: “S”, “G”, “M”, “D” e “U”.
  • currentDateTypeIsValid: Retorna se o tipo da data é válida. Retorna true se for do Servidor ou GPS. Retorna false para qualquer outro tipo.
  • {date} - getYear: Retorna um inteiro correspondente ao ano atual, de acordo com a data do aplicativo.
  • {date} - getMonth: Retorna um inteiro correspondente ao mês atual, de acordo com a data do aplicativo.
  • {date} - getDay: Retorna um inteiro correspondente ao dia atual, de acordo com a data do aplicativo.
  • {date} - getHour: Retorna um inteiro correspondente a hora atual, de acordo com a data do aplicativo.
  • {date} - getMinutes: Retorna um inteiro correspondente ao minuto atual, de acordo com a data do aplicativo.
  • {date} - getSeconds: Retorna um inteiro correspondente ao segundo atual, de acordo com a data do aplicativo.
  • {date} - getWeekDay: Retorna um inteiro correspondente ao dia da semana atual, de acordo com a data do aplicativo. (Domingo: 1, Segunda: 2, Terça: 3, Quarta: 4, Quinta: 5, Sexta: 6, Sábado: 7)
  • difDateMilli: Retorna diferença entre duas datas em milissegundos. Informar data menor seguido de data maior.
  • getYearWeek: Retorna um valor inteiro representando o dia da semana do ano.
  • Long - generateuuid: Retorna um valor randômico baseado na data/hora válida que representa um uuid sequencial (igual presente nos apontamentos) para o fluxo.

Exemplo:

Entidade
      data1 now
      data2 date
  campo1 long
  fieldEvents
        onValidate
          campo1
            return difDateMilli data1 data2
  • dateToMilli: Transforma um valor Date em Millissegundos do Java. Entrada com timezone aplicado (obra/parametro) => Saída em UTC. Entrada pode ser no timezone definido pelo usuário. Se nenhum timezone for passado como parâmetro, utilizará o timezone da obra. Timezones suportados no seguinte endereço: TimeZones

Exemplo:

Entidade
  data1 now
  dataMilli1 long
  dataMilli2 long
  fieldEvents
    autoFill
      dataMilli1
        return dateToMilli data1
      dataMilli2
        return dateToMilli data1 @"America/Campo_Grande"
  • milliToDate: Transforma um valor Millissegundos em Date. Entrada em UTC => Saída com timezone aplicado (obra/parametro). Saída pode ser no timezone definido pelo usuário. Se nenhum timezone for passado como parâmetro, utilizará o timezone da obra. Timezones suportados no seguinte endereço: TimeZones

Exemplo:

Entidade
  data1 now
  longData1 long
  date2 Date
  date3 Date
  fieldEvents
    autoFill
      longData1
        return difDateMilli 0 data1
      date2
        return milliToDate longData1
      dataMilli2
        return milliToDate longData1 @"America/Campo_Grande"
  • dropTable: Exclui a entidade passada. (ex.: dropTable Servico)
  • exit: Fecha o aplicativo.
  • fill: Indica o preenchimento de um campo.
  • finishRecord: Para ser usado em eventos de CRUD ou em um action de entidade para iniciar o processo de finalização do registro.

Por exemplo: após preencher algum campo da entidade Boletim, o desenvolvedor pode chamar esta instrução para iniciar o processo de finalização do Boletim.

Exemplo:

Boletim sync=out confirm=Finish cleanupDays=20 noSyncAction noFinishAction
  id inc
  status int
  turno Turno
  apontServico ApontServico transient notFill add
  crudActions
    EncerrarTurno
      isVisible
        return status == %StatusInicioServico
      finishRecord
  • formatDateMilli: Recebe millisegundos e retorna uma string no formato hh:mm:ss.
  • goToField: Indica o preenchimento de um campo.
  • isBetweenDates: Recebe 3 datas, e verifica que se 3ª data está entre a 1ª e a 2ª data. Se estiver retorna 1, caso contrário retorna 0.
  • isBetweenDates - include: Inclue as datas de inicio e fim na validação. (ex.: include=true)
  • isOnline: Retorna um inteiro indicando se o aplicativo está online (1) ou offline (0)
  • log: Imprime no log o texto passado.
  • msg: Mostra tela com mensagem.
  • msg - wait: Pausa o fluxo de execução até que a tela da mensagem seja fechada.(ex.: msg wait=true)
  • msg- lang: É passado uma chave presente no Lang, que contém o texto que será apresentado na tela.
  • msg- lang - vars: Variáveis passadas para compor a mensagem presente no custom lang passado.
  • percentage: Usada para calcular porcentagens no fluxo.
  • playSound: Usada para execução de sons no fluxo. (default: BarcodeBeep).
  • playSound - name: Usado para definir qual será o som a ser tocado. Opções disponíveis: BarcodeBeep, BarcodeError, AlertTimer, BarcodeRead. (ex.: playSound name=BarcodeBeep).
  • playSound - loop: Usado para definir quantas vezes o som deverá ser executado. (default: 0 - Tocado uma vez sem repetição). (ex.: playSound loop=2).
  • printEntity: Imprime no console todos os registros da entidade.
  • restart: Fecha e abre o aplicativo.
  • save [record]: Salva no banco o registro informado como parâmetro. Todas as telas que tiverem uma instância desse registro receberão o novo registro salvo.
  • save [saveSyncOut]: Se presente, e a entidade for SyncOut, grava também uma cópia do registro na entidade de sync. Isso fará com que o registro que acabou de ser alterado e salvo vá para o servidor no próximo sync.
  • save [syncOutOnly]: Se a entidade for SyncOut, grava o registro apenas na entidade de _SyncOut. Isso fará com que o registro que acabou de ser alterado e salvo vá para o servidor no próximo sync.
  • simpledateformat: Usado para formatar uma data no padrão Java. Utiliza uma string de formato e recebe um long de data e horas. (ex.: simpledateformat @”hh:mm:ss” variavel_long).
  • ``hoursformat ``: Usado para gerar uma String em formatado contador/decorrer de tempo da forma: hh*:mm:ss. A entrada esperada é do tipo long, do qual representa o tempo em millisegundos.

Exemplo:

Apontamento sync=out
  id inc
  boletim Boletim
  operador Operador
  servico Servico
  events
      afterInsert
          Boletim registroBoletim = boletim
          registroBoletim.status = %StatusIdaCarga
          save registroBoletim saveSyncOut
          sync type=background //Envia o registro que acabou de ser alterado para o server
  • setAlertTimer: Inicia o processo de alerta. Que após passado o tempo total de tolerancia mostra uma mensagem de alerta na tela.
  • setAlertTimer - message: É passado uma chave presente no Lang, que contém o texto que será apresentado na tela.
  • setAlertTimer - time: Define o tempo de tolerancia do ultimo alertTimer.
  • setAlertTimer - snooze: Define o tempo de espera entre a execução de um alerta e outro. Caso este valor não seja passado é usado o valor da variável do app timerInterval que por padrão tem o valor de 1m.
  • setAlertTimer - repeat: Define quantas vezes o alerta deve se repetir, caso seja passado ‘-1’ ou nenhum valor seja passado o alerta vai se repetir até que seja cancelado.

Exemplo:

Boletim sync=out openFinish
      id inc
      tolerancia int
      dataAbertura Now
      idTurno Turno
      apontamento List<Apontamento> transient
      dataFechamento Now fill=Finish
      events
              afterInsert
                      if tolerancia > 0
                              setAlertTimer lang=custom.msgTempoPrimeiroApont totalTime=tolerancia
                      else
                              stopAlertTimer
  • stopAlertTimer: Finaliza o preocesso de alerta se ele estiver iniciado.
  • {showProgressUIDialog} - starWait: Inicia do processo que mostra o progresso.
  • {showProgressUIDialog} - stopWait: Finaliza o processo de progresso.
  • {showProgressUIDialog} - stopWait - after: Determina quanto tempo a instrução deve aguardar para executar.
  • {showProgressUIDialog} - stop: Determina quanto tempo depois a instrução stopWait deve ser chamada automaticamente. (ex.: startWait stop=20s)
  • speech: Usada para falar algum texto no fluxo. (ex.: speech ola, speech @”ola mundo”).
  • speech: (2.17+) Usada para falar algum texto no fluxo. (ex.: speech ola, speech @”ola mundo”, speech value=@”Ola”, speech value=value entity=_MARTE_TTS fieldToSearch=message_id messageField=message).

Exemplo:

Boletim sync=out  cleanupDays=1 notSavedMessage confirm=create|finish
id inc
crudActions
        speech
                Object fromDatabase = confirm text=@"Carregar frase do banco?"
                if fromDatabase == true
                        Object value= input type=Integer text=@"Id para busca" backAfterOk
                        Object result = speech value=value entity=@"Phrases" fieldToSearch=@"id" messageField=@"message"
                        toast result
                else
                        String phrase = input type=String text=@"Digite a frase" backAfterOk
                        speech phrase
                        toast phrase
  • show: Indica que será apresentada uma tela.
  • {sql} - delete: DELETE FROM Entidade WHERE id == :campo
  • {sql} - insert: INSERT INTO Entidade (id,descricao) VALUES (:campo1,:campo2)
  • {sql} - rowCount table=: Integer count = rowCount table=Entidade
  • {sql} - select: SELECT * FROM Entidade WHERE id == :campo
  • {sql} - select count: SELECT COUNT FROM Entidade WHERE id == :campo, retorna a quantidade de registros que foram selecionados.
  • {sql} - selectDistinctField: selectDistinctField id FROM Entidade WHERE id == :campo
  • {sql} - selectField: selectField id FROM Entidade WHERE id == :campo
  • {sql} - selectFirst: selectFirst FROM Entidade WHERE id == :campo
  • {sql} - selectLast: selectLast FROM Entidade WHERE id == :campo
  • {sql} - sumField: Integer count = SumField campo FROM Entidade WHERE id == :campo
  • {sql} - update: UPDATE Entidade SET campo = :campo1 WHERE id == :campo
  • subStr: Retorna uma parte de um texto.

Exemplo:

Entidade
      id inc
      valor Str notFill
      inicio int
      fim int
      texto Str
      substring Str OnGetDefaultInputValue="valor"
      fieldEvents
              onValidate
                      texto
                              valor = substr inicio fim texto
                              return true
  • strLen: Retorna a quantidade de caracteres de um texto.

Exemplo:

Entidade
      id inc
      valor int notFill
      texto Str
      length int OnGetDefaultInputValue="valor"
      fieldEvents
              onValidate
                      texto
                              valor = strlen texto
                              return true
  • sync: Efetua um sincronismo Background. Não permite prosseguir caso esteja offline.
  • sync - background: Efetua um sincronismo Background. Permite prosseguir caso esteja offline.
  • sync - noBack: Efetua um sincronismo Foreground. Permite prosseguir caso esteja offline.
  • toast: Exibe mensagens rápidas e temporais no cabeçalho da tela.
  • verifyemptyentity: Verifica se existe alguma entidade do tipo sync=in que esteja vazia. Não verifica entidade que contém o atributo emptyVerify=false.
  • for: Usado para iterar sobre uma lista de registros. Sempre que é criado um for é adicionada uma variável cujo nome é o nome da variável de iteração do loop acrescido de ‘Idx’ e cujo valor é o índice de cada iteração do loop.

Exemplo:

Entidade
id inc
valor int notFill
texto Str
options
        option1
                _grupos = SELECT * FROM Grupo
                _funcionarios = SELECT * FROM Funcionario
                for g in _grupos
                        log g
                        log gIdx //recebe o valor do índice de cada iteração
                        for f in _funcionarios
                                log f
                                log g
                                log gIdx
                                log fIdx
  • roundFloat: (roundFloat valorfloat numero_casas_decimais). Faz o arredondamento de um valor do tipo ponto flutuante deixando com o máximo de casas definidos. Sua implementação é uma manipulação matemática: multiplicação do número de casas estipulados em potência de base 10, em seguida divisão pelo mesmo valor, arredondando para o mais próximo (teto, não piso).

Exemplo:

roundFloat value 3
  • getUuid: retorna uma String representando o valor do device uuid
  • hasOfflineData: retorna um Boolean representando se há dados pendentes no aplicativo para enviar a web. Retorna True se houver dados a enviar e False se não tiver. Ele verifica nas tabelas de sync_out e nos dados recebidos via bluetooth.

Exemplo:

Boletim
        temDadosOffline boolean
        fieldEvents
                autoFill
                        temDadosOffline
                                return hasOfflineData
  • schedule: Agenda um conjunto de código para ser executado em um determinado período de tempo, podendo conter repetição ou não.
  • schedule - time: determina a quantidade em milisegundos que a ação deverá ser executada a partir da hora atual. (Aceita o tempo no formato time=1h (s|m|h) digitado diretamente na instrução ou pode receber uma variável do tipo long que represente os millisegundos, uma variável do tipo String no mesmo formato dos valores que podem ser digitados diretamente ou um campo do tipo date)
  • schedule - hour: determina um horário no formato HH:mm ou HH:mm:ss em que a ação deverá ocorrer, por padrão a ação é repetida sempre no mesmo horário todos os dias. (O valor pode ser digitado diretamente na instrução ou então pode ser recebido de uma variável)
  • schedule - repeatIn: determina a quantidade de tempo que a instrução deve aguardar para se repetir. (Aceita o tempo no formato time=1h (s|m|h) digitado diretamente na instrução ou pode receber uma variável do tipo long que represente os millisegundos ou então uma variável do tipo String no mesmo formato dos valores que podem ser digitados diretamente)

Exemplo:

schedule time=1m
        log Executing from schedule

Exemplo:

Boletim
        id int
        apontamentos List<Apontamento> transient
        timeToExecute Date notFill
        crudActions
                agendar
                        fill timeToExecute
        fieldEvents
                afterFill
                        timeToExecute
                                schedule time=timeToExecute
                                        Boletim boletim = selectLast Boletim
                                        finishRecord boletim

Exemplo:

Boletim sync=out notSavedMessage
        id inc
        text String
        primeiroNivel List<PrimeiroNivel> transient
        dateToExecute Date notFill
        timeToExecute String notFill
        hourToExecute String notFill
        repeatInStr String notFill
        repeatInMillis Long notFill
        actionToCancel Integer notFill

        crudActions
                agendarTime
                        schedule time=20s
                                toast scheduled time
                                log scheduledActionTest time
                                log execute
                                log scheduled
                                log id
                agendarDate
                        fill dateToExecute
                agendarStr
                        fill timeToExecute
                agendarHour
                        fill hourToExecute
                agendaRepeatInMillis
                        schedule time=20s repeatIn=3m
                                toast agendaRepeatInMillis
                                log scheduledActionTest agendaRepeatInMillis
                                log execute
                                log scheduled
                                log id
                                log repeatIn
                agendarRepeatInValueStr
                        fill repeatInStr
                agendarRepeatInValueMillis
                        fill repeatInMillis
  • cancelSchedule: Usado para cancelar uma ação previamente agendada usando a instrução schedule, caso não seja passada nenhuma valor para o atributo action todas as ações agendadas do fluxo são canceladas
  • cancelSchedule - actions: Atributo usado para definir quais ações do fluxo devem ser canceladas. Pode ser passado um record, uma lista de records ou uma lista de ids.

Exemplo:

Boletim sync=out notSavedMessage
        id inc
        text String
        primeiroNivel List<PrimeiroNivel> transient
        dateToExecute Date notFill
        timeToExecute String notFill
        hourToExecute String notFill
        repeatInStr String notFill
        repeatInMillis Long notFill
        actionToCancel Integer notFill

        crudActions
                agendarTime
                        schedule time=20s
                                toast scheduled time
                                log scheduledActionTest time
                                log execute
                                log scheduled
                                log id
                agendarDate
                        fill dateToExecute
                agendarStr
                        fill timeToExecute
                agendarHour
                        fill hourToExecute
                agendaRepeatInMillis
                        schedule time=20s repeatIn=3m
                                toast agendaRepeatInMillis
                                log scheduledActionTest agendaRepeatInMillis
                                log execute
                                log scheduled
                                log id
                                log repeatIn
                agendarRepeatInValueStr
                        fill repeatInStr
                agendarRepeatInValueMillis
                        fill repeatInMillis
                cancelAll
                        cancelSchedule
                cancelAction
                        fill actionToCancel
                cancelSelectLast
                        _SCHEDULED_ACTION actionsValue = selectLast from _SCHEDULED_ACTION
                        cancelSchedule actions=actionsValue
                cancelSelectAll
                        _SCHEDULED_ACTION actionsValue = select * from _SCHEDULED_ACTION
                        cancelSchedule actions=actionsValue
  • isGpsEnabled: (2.7.49+) Retorna um boolean indicando se o GPS está ou não ativo
  • hasFixedPoint: (2.17+) Retorna um boolean indicando se existe ou não fixed point para o fluxo corrente
  • ´changeDrawerState`: (2.17+) Permite alterar o estado do drawer. Exemplo: changeDrawerState open right, changeDrawerState close
  • cancelEvent: (2.17+) Permite cancelar a execução dos eventos OnMovimentStop e OnMovimentStart. Exemplo: cancelEvent OnMovimentStop.
  • setStatusColor: (2.17+) Permite definir uma cor no formato RGB (#123456) para o fundo da imagem do capitão Simova que fica na barra de status. (Cores Padrões: green, orange, red, inactive, black, blue e grey) Exemplo: setStatusColor #001144, setStatusColor inactive. Pode ser usado o valor de um campo que contenha o valor da cor.