SAIL Events Field

Overview

Enterprise applications often rely on legacy or complex data sources that struggle to provide real-time responses. By blocking the loading of an interface while waiting for these slow sources, the user experience is degraded. This component allows your interfaces to load immediately with data that's available already and receive push updates once the slow to request data is available. This allows the user to start working with the data they have immediately without being blocked by the slowest data source.

Key Features & Functionality

  • Push events to interfaces that are waiting for them (see documentation for implementation consideration)
  • To add consistency to the user experience where unreliable data sources are involved. Such as slow APIs or database queries.
  • A call center where a specific integration is known to block the interface loading, but the rest of the interface can load now while it waits.
  • A user submitting a request that won't return immediately, but will return reasonably swiftly (within 60 seconds). Such as requesting a document to be generated.
  • Refresh a stale cache in the background.
Anonymous
Parents
  • Hello. I am having problems, regardless of the browser I am using. I have tried Edge, Chrome or Firefox). It has started to occur recently.

    The onError parameter is always executed with the value '<!DOCTYPE html>' in the save!value variable.

    The database where the events are written is jdbc/Appian and they are high availability Appian Cloud environments. Sail Events Field and Sail Events Servlet are in the latest versions.

    Checking the http call log in the browser, the response is the login html in Appian. It looks as if the communication between call and response is lost, including the user's session in Appian.

    I look forward to hearing from you. Thank you very much.

    <!DOCTYPE html>
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    <link rel="stylesheet" href="https://web-assets.appian-cdn.com/YWUtMjQuMy4yMDAuMA/portal/css/banner.css?appian_environment=tempo" type="text/css" />
    
    <script type="text/javascript">
      var hasSiteWideBanner = "false";
      if (window.APPIAN) {
        window.APPIAN.bannerInfo = {
          hasSiteWideBanner: hasSiteWideBanner === 'true',
          bannerMessage: "",
          bannerColor: "#666666",
          bannerTextColor: "#ffffff"
        };
      }
    </script>
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    <html lang="en" dir="ltr">
    <head>
      <!-- IMPORTANT: this cannot have any style/script between it and the top of the head! IE requires it to handle
        versions properly. See http://www.modern.ie/en-us/performance/how-to-use-x-ua-compatible for more -->
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta http-equiv="content-type" content="text/html" />
    <meta http-equiv="Content-Style-Type" content="text/css" />
    <meta name="apple-mobile-web-app-status-bar-style"
          content="black-translucent" />
    <meta name="viewport"
          content="width=device-width, initial-scale=1.0" />
    
    
      
        
          
          
            <link rel="stylesheet" href="https://web-assets.appian-cdn.com/YWUtMjQuMy4yMDAuMA/portal/css/standard_styles_static.css?appian_environment=tempo" type="text/css" />
          
        
    
      
      
    
    
    <script type="text/javascript">
    function isInIframe() {
      try {
        return window.self !== window.top;
      } catch (exception) {
        // if in cross-origin, cannot access window.top
        return true;
      }
    }
    </script>
    
    
      
      
        <link rel="stylesheet" href="https://web-assets.appian-cdn.com/YWUtMjQuMy4yMDAuMA/portal/css/login.css?appian_environment=tempo" type="text/css" />
      
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
      <link rel="shortcut icon" href="https://XXXXXXXXX.appiancloud.com/suite/rest/a/content/latest/branding/favicon/1538660930000" />
    
    
    
    
    <style>
      body.appian-body {
      background: #ebf1f7;
    }
    
    body.appian-body.mobile-landing {
      background: #fff;
    }
    
    .appian-body .message {
      color: red;
    }
    
    .appian-body form .field input {
      color: #333;
      border-color: #ccc;
    }
    
    .appian-body .submitButton {
      background-color: #E8E8E8;
      border: 1px solid #B0B0B0;
      color: #333333;
      font-size: 11px;
      font-weight: bold;
    }
    
    .appian-body .login_background {
      background-color: #ec0000;
    }
    
    .appian-body .login_box input[type=text]:focus,
    .appian-body .login_box input[type=password]:focus {
      border: 1px solid #ec0000;
    }
    
    .appian-body .button_box_links a:active {
      border-color: #ec0000;
    }
    
    .appian-body #back_link,
    .appian-body .button_box_links a,
    .appian-body .logoutForm #returnLink {
      color: #ec0000;
    }
    
    .appian-body .button_box_links a:hover,
    .appian-body .button_box_links a:focus {
      border-bottom: 1px solid #ec0000;
      color: #ec0000;
    }
    
    .appian-body .btn {
      color: #ec0000;
      border: 1px solid #ec0000;
    }
    
    .appian-body input.iBlueButton {
      border: 1px solid #ec0000;
      background-color: #ec0000;
    }
    
    .appian-body .btn.primary {
      background-color: #ec0000;
    }
    
    .appian-body .btn:active,
    .appian-body .btn:focus,
    .appian-body .btn:hover,
    .appian-body .choice_pair input[type=checkbox]:focus + label:before,
    .appian-body input.iBlueButton:active,
    .appian-body input.iBlueButton:focus,
    .appian-body input.iBlueButton:hover {
      box-shadow: 0 0px 5px #ec0000;
    }
    
    .appian-body input.iText:focus {
      border: 1px solid #ec0000 !important; /* ASI styles using !important to set blue border color */
    }
    
    .appian-body .logoutForm #returnLink:hover {
      border-bottom: 1px solid #ec0000
    }
    
    .appian-body #back_link:hover {
      color: #ec0000;
      border-bottom: 1px solid #ec0000;
    }
    
    .appian-body .choice_pair input[type=checkbox]:checked + label:before {
      background-color: #ec0000;
      border-color: #ec0000;
    }
    
    .appian-body .mobile_landing_links {
      color: #777;
    }
    
    .appian-body .mobile_landing_links a {
      color: #ec0000;
    }
    
    .appian-body a.mobile_landing_button.primary {
      color: #fff;
      background-color: #ec0000;
    }
    
    .appian-body a.mobile_landing_button.secondary {
      color: #ec0000;
      border: 1px solid #ec0000;
    }
    
    </style>
    
    
    <title>Appian for XXXXXXXXX Espana (CERT)</title>
    
    
    
    
    
    <script>
    var isEmbeddedLogin = location.pathname.indexOf('/suite/cors/wc') === 0;
    (function() {
      // frame buster; make sure we are not loaded within a frameset
      if (!location.origin){
        location.origin = location.protocol+"//"+location.hostname;
        if (location.port && (location.port != 80 && location.port != 443)) {
          location.origin = location.origin +":"+location.port;
        }
      }
    
      if (top != self) { 
        if (
    /https*[:][/][/]XXXXXXXXX.XXXXXXXXX.cert.corp[/].*/.test(document.referrer)
     || /https*[:][/][/]cloudsoppre-dynamic.XXXXXXXXX.pre.corp[/].*/.test(document.referrer)
     || /https*[:][/][/]cloudsoppre-static.XXXXXXXXX.pre.corp[/].*/.test(document.referrer)
     || /https*[:][/][/]cloudsoppre.XXXXXXXXX.pre.corp[/].*/.test(document.referrer)
     || /https*[:][/][/]sestructurales.pru.bsch[/].*/.test(document.referrer)
    ){
    } else 
    
        if (document.referrer.indexOf(location.origin+'/') != 0 ||
          !isEmbeddedLogin) {
          top.location.replace(self.location.href);
        }
      }
      // if redirection to login occurs in a window opened from
      // the main one, then redirect the main window to the login
      // page and close the child
      var ENVIRONMENT_PARAM_NAME = 'appian_environment';
      try{
          if(top.opener && top.opener.location.href && !isEmbeddedLogin) {
            var environmentRegex = new RegExp(ENVIRONMENT_PARAM_NAME + "=\\S+$");
            top.opener.location.replace(location.pathname.replace(environmentRegex, top.opener.location.pathname.match(environmentRegex)));
            top.close();
          }
        }
      catch(e){}
    })();
    
    function getCookieValue(name) {
      var name = name + "=";
      var cookieArray = document.cookie.split(';');
      for(var i=0; i<cookieArray.length; i++) {
        var currentCookie = cookieArray[i];
        while (currentCookie.charAt(0)==' ') {
          currentCookie = currentCookie.substring(1);
        }
        if (currentCookie.indexOf(name) != -1) {
          return currentCookie.substring(name.length,currentCookie.length);
        }
      }
      return "";
    }
    
    function addClass(el, newClassName){
      el.className += ' ' + newClassName;
    }
    
    function removeClass(el, removeClassName){
      var elClass = el.className;
      while(elClass.indexOf(removeClassName) != -1) {
          elClass = elClass.replace(removeClassName, '');
      }
      el.className = elClass;
    }
    
    
    function acceptTermsOfService() {
      addClass(document.getElementById("notification"),"not_visible");
      removeClass(document.getElementById("loginForm"),'not_visible');
      removeClass(document.getElementById("loginBox"),'notification_form');
      document.getElementById("un").focus();
    }
    
    function supportsSameSiteNone() {
      return true;
    
    }
    
    function getCookieAppend() {
      if (!window.isSecureContext) {
        return '';
      }
    
      var append = '; Secure; Partitioned';
    
      if (!supportsSameSiteNone()) {
        return append;
      }
    
      return append + '; SameSite=None';
    }
    
    var hasSubmitted = false;
    
    var login_jsp = {
      validateForCookiesAndSecureRequest : function() {
        if (hasSubmitted) {
            return false;
        }
        var sameSiteAppend = getCookieAppend();
        document.cookie = '__appianCookieCheck=isEnabled' + sameSiteAppend;
        var re = new RegExp('__appianCookieCheck=([^;]*);?','gi');
        var appianCookie = re.exec(document.cookie)||[];
        var isCookieEnabled = 'isEnabled' === (appianCookie.length>1?appianCookie[1]:'');
        document.cookie = '__appianCookieCheck=;expires=Fri, 02-Jan-1970 00:00:00 GMT' + sameSiteAppend;
        if (!isCookieEnabled) {
          var noCookieMsg = document.getElementById('login_jsp_cookiesMsg');
          noCookieMsg.style.display = '';
          return false;
        }
        var csrfTokenField = document.createElement("input");
        csrfTokenField.setAttribute("type", "hidden");
        csrfTokenField.setAttribute("name", "X-APPIAN-CSRF-TOKEN");
        csrfTokenField.setAttribute("value", getCookieValue("__appianCsrfToken"));
        document.getElementById("loginForm").appendChild(csrfTokenField);
        if(isEmbeddedLogin) {
          const embeddedOriginField = document.createElement("input");
          embeddedOriginField.setAttribute("type", "hidden");
          embeddedOriginField.setAttribute("name", "embeddedOrigin");
          embeddedOriginField.setAttribute("value", location.origin);
          document.getElementById("loginForm").appendChild(embeddedOriginField);
    
    
          const embeddedQueryStringField = document.createElement("input");
          embeddedQueryStringField.setAttribute("type", "hidden");
          embeddedQueryStringField.setAttribute("name", "embeddedQueryString");
          embeddedQueryStringField.setAttribute("value", location.search);
          document.getElementById("loginForm").appendChild(embeddedQueryStringField);
        }
        hasSubmitted = true;
        return true;
      }
    };
    window.sessionStorage && location.hash && sessionStorage.setItem("hash", location.hash);
    </script>
    </head>
    
    <body onload="try{if(document.getElementsByName('un')[0].value.length>0) {document.getElementsByName('pw')[0].focus();} else { document.getElementsByName('un')[0].focus();}}catch(e){}" class="appian-body">
    
      <div id="systemMessages" style="display: none">
        
    
        
      </div>
      <script type="text/javascript">
        if (!isInIframe()) {
          document.getElementById("systemMessages").style.display="block";
        }
      </script>
    
      <div class="appian_logo">
        
      </div>
    
      
      
    
    
    
    
    
    
            
    
    
      <div class="login_background">
      </div>
      <div id="loginBox" class="login_box  ">
        <div class="login_box_inner">
        <div class="login_logo">
          <img id="logo" src="https://XXXXXXXXX.appiancloud.com/suite/rest/a/content/latest/branding/logo/1538660930000"
               alt="Logo"/>
        </div>
          <form id="notification" class="not_visible">
            <div id="notificationText"></div>
            <div class="button_box">
              <div class="button_box_content">
                <div class="button_box_buttons">
                  <input type="button" class="btn primary" value="Acepto"
                    onclick="acceptTermsOfService()" />
                </div>
              </div>
            </div>
          </form>
          <form id="loginForm" class="" action="/suite/auth?appian_environment=tempo"
            method="post" onsubmit="return login_jsp.validateForCookiesAndSecureRequest();">
            
            
            
            
            
            <div class="field_layout">
              <label class="accessibilityhidden" for="un">Nombre de usuario</label>
              
                
                
                  <div class="input_below">
                  <input placeholder="Nombre de usuario" id="un" name="un" type="text" value="" size="34" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" aria-required="true" aria-describedby="errorMsg" />
                  </div>
                
              
            </div>
            <div class="field_layout">
              <label class="accessibilityhidden" for="pw">Contraseña</label>
              <div class="input_below">
                <input placeholder="Contraseña" id="pw" name="pw" type="password" size="34" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" aria-required="true" aria-describedby="errorMsg" />
              </div>
            </div>
            
              <div class="field_layout">
                <div>
                  <div class="choice_pair">
                    <input id="remember" name="_spring_security_remember_me" type="checkbox"/>
                    <label for="remember">Recordarme</label>
                  </div>
                </div>
              </div>
            
            
              
                <script>
    var key = 'REMEMBER_ME_ENABLED',
    cookieKey = '__localStorage.'+key;
    setTimeout(function(){
      var el = document.getElementById('remember');
      el.checked = localStorage ?
        'off' != localStorage.getItem(key) :
        document.cookie.indexOf(cookieKey+'=off') != -1;
      window.login_jsp.saveRemember = function() {
        if (el.checked) {
          if (localStorage) {
            localStorage.setItem(key, 'on');
          } else {
            document.cookie = cookieKey+'=on';
          }
        } else {
          if (localStorage) {
            localStorage.setItem(key, 'off');
          } else {
            document.cookie = cookieKey+'=off;';
          }
        }
        return true;
      };
    }, 1);
                </script>
              
              
            
            <div class="button_box">
              <div class="button_box_content">
                <div class="button_box_links">
                  
                  <div class="button_box_link_wrapper">
                    <a id="forgotPasswordLink" href="/suite/forgotpasswordrequest?appian_environment=tempo">
                      ¿Olvidó su contraseña?
                    </a>
                  </div>
                  
                  
                </div>
                <div class="button_box_buttons">
                  <input type="submit" class="btn primary" value="Entrar"
                    onclick="return login_jsp.saveRemember && login_jsp.saveRemember() || true;" />
                </div>
              </div>
            </div>
          </form>
        </div>
      </div>
      <div id="copyright">
        ©2003-2024 Appian Corporation
      </div>
      <link rel="stylesheet" href="https://web-assets.appian-cdn.com/YWUtMjQuMy4yMDAuMA/portal/css/fonts/open-sans.css?appian_environment=tempo" type="text/css" />
    </body>
    </html>
    

Comment
  • Hello. I am having problems, regardless of the browser I am using. I have tried Edge, Chrome or Firefox). It has started to occur recently.

    The onError parameter is always executed with the value '<!DOCTYPE html>' in the save!value variable.

    The database where the events are written is jdbc/Appian and they are high availability Appian Cloud environments. Sail Events Field and Sail Events Servlet are in the latest versions.

    Checking the http call log in the browser, the response is the login html in Appian. It looks as if the communication between call and response is lost, including the user's session in Appian.

    I look forward to hearing from you. Thank you very much.

    <!DOCTYPE html>
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    <link rel="stylesheet" href="https://web-assets.appian-cdn.com/YWUtMjQuMy4yMDAuMA/portal/css/banner.css?appian_environment=tempo" type="text/css" />
    
    <script type="text/javascript">
      var hasSiteWideBanner = "false";
      if (window.APPIAN) {
        window.APPIAN.bannerInfo = {
          hasSiteWideBanner: hasSiteWideBanner === 'true',
          bannerMessage: "",
          bannerColor: "#666666",
          bannerTextColor: "#ffffff"
        };
      }
    </script>
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    <html lang="en" dir="ltr">
    <head>
      <!-- IMPORTANT: this cannot have any style/script between it and the top of the head! IE requires it to handle
        versions properly. See http://www.modern.ie/en-us/performance/how-to-use-x-ua-compatible for more -->
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta http-equiv="content-type" content="text/html" />
    <meta http-equiv="Content-Style-Type" content="text/css" />
    <meta name="apple-mobile-web-app-status-bar-style"
          content="black-translucent" />
    <meta name="viewport"
          content="width=device-width, initial-scale=1.0" />
    
    
      
        
          
          
            <link rel="stylesheet" href="https://web-assets.appian-cdn.com/YWUtMjQuMy4yMDAuMA/portal/css/standard_styles_static.css?appian_environment=tempo" type="text/css" />
          
        
    
      
      
    
    
    <script type="text/javascript">
    function isInIframe() {
      try {
        return window.self !== window.top;
      } catch (exception) {
        // if in cross-origin, cannot access window.top
        return true;
      }
    }
    </script>
    
    
      
      
        <link rel="stylesheet" href="https://web-assets.appian-cdn.com/YWUtMjQuMy4yMDAuMA/portal/css/login.css?appian_environment=tempo" type="text/css" />
      
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
      <link rel="shortcut icon" href="https://XXXXXXXXX.appiancloud.com/suite/rest/a/content/latest/branding/favicon/1538660930000" />
    
    
    
    
    <style>
      body.appian-body {
      background: #ebf1f7;
    }
    
    body.appian-body.mobile-landing {
      background: #fff;
    }
    
    .appian-body .message {
      color: red;
    }
    
    .appian-body form .field input {
      color: #333;
      border-color: #ccc;
    }
    
    .appian-body .submitButton {
      background-color: #E8E8E8;
      border: 1px solid #B0B0B0;
      color: #333333;
      font-size: 11px;
      font-weight: bold;
    }
    
    .appian-body .login_background {
      background-color: #ec0000;
    }
    
    .appian-body .login_box input[type=text]:focus,
    .appian-body .login_box input[type=password]:focus {
      border: 1px solid #ec0000;
    }
    
    .appian-body .button_box_links a:active {
      border-color: #ec0000;
    }
    
    .appian-body #back_link,
    .appian-body .button_box_links a,
    .appian-body .logoutForm #returnLink {
      color: #ec0000;
    }
    
    .appian-body .button_box_links a:hover,
    .appian-body .button_box_links a:focus {
      border-bottom: 1px solid #ec0000;
      color: #ec0000;
    }
    
    .appian-body .btn {
      color: #ec0000;
      border: 1px solid #ec0000;
    }
    
    .appian-body input.iBlueButton {
      border: 1px solid #ec0000;
      background-color: #ec0000;
    }
    
    .appian-body .btn.primary {
      background-color: #ec0000;
    }
    
    .appian-body .btn:active,
    .appian-body .btn:focus,
    .appian-body .btn:hover,
    .appian-body .choice_pair input[type=checkbox]:focus + label:before,
    .appian-body input.iBlueButton:active,
    .appian-body input.iBlueButton:focus,
    .appian-body input.iBlueButton:hover {
      box-shadow: 0 0px 5px #ec0000;
    }
    
    .appian-body input.iText:focus {
      border: 1px solid #ec0000 !important; /* ASI styles using !important to set blue border color */
    }
    
    .appian-body .logoutForm #returnLink:hover {
      border-bottom: 1px solid #ec0000
    }
    
    .appian-body #back_link:hover {
      color: #ec0000;
      border-bottom: 1px solid #ec0000;
    }
    
    .appian-body .choice_pair input[type=checkbox]:checked + label:before {
      background-color: #ec0000;
      border-color: #ec0000;
    }
    
    .appian-body .mobile_landing_links {
      color: #777;
    }
    
    .appian-body .mobile_landing_links a {
      color: #ec0000;
    }
    
    .appian-body a.mobile_landing_button.primary {
      color: #fff;
      background-color: #ec0000;
    }
    
    .appian-body a.mobile_landing_button.secondary {
      color: #ec0000;
      border: 1px solid #ec0000;
    }
    
    </style>
    
    
    <title>Appian for XXXXXXXXX Espana (CERT)</title>
    
    
    
    
    
    <script>
    var isEmbeddedLogin = location.pathname.indexOf('/suite/cors/wc') === 0;
    (function() {
      // frame buster; make sure we are not loaded within a frameset
      if (!location.origin){
        location.origin = location.protocol+"//"+location.hostname;
        if (location.port && (location.port != 80 && location.port != 443)) {
          location.origin = location.origin +":"+location.port;
        }
      }
    
      if (top != self) { 
        if (
    /https*[:][/][/]XXXXXXXXX.XXXXXXXXX.cert.corp[/].*/.test(document.referrer)
     || /https*[:][/][/]cloudsoppre-dynamic.XXXXXXXXX.pre.corp[/].*/.test(document.referrer)
     || /https*[:][/][/]cloudsoppre-static.XXXXXXXXX.pre.corp[/].*/.test(document.referrer)
     || /https*[:][/][/]cloudsoppre.XXXXXXXXX.pre.corp[/].*/.test(document.referrer)
     || /https*[:][/][/]sestructurales.pru.bsch[/].*/.test(document.referrer)
    ){
    } else 
    
        if (document.referrer.indexOf(location.origin+'/') != 0 ||
          !isEmbeddedLogin) {
          top.location.replace(self.location.href);
        }
      }
      // if redirection to login occurs in a window opened from
      // the main one, then redirect the main window to the login
      // page and close the child
      var ENVIRONMENT_PARAM_NAME = 'appian_environment';
      try{
          if(top.opener && top.opener.location.href && !isEmbeddedLogin) {
            var environmentRegex = new RegExp(ENVIRONMENT_PARAM_NAME + "=\\S+$");
            top.opener.location.replace(location.pathname.replace(environmentRegex, top.opener.location.pathname.match(environmentRegex)));
            top.close();
          }
        }
      catch(e){}
    })();
    
    function getCookieValue(name) {
      var name = name + "=";
      var cookieArray = document.cookie.split(';');
      for(var i=0; i<cookieArray.length; i++) {
        var currentCookie = cookieArray[i];
        while (currentCookie.charAt(0)==' ') {
          currentCookie = currentCookie.substring(1);
        }
        if (currentCookie.indexOf(name) != -1) {
          return currentCookie.substring(name.length,currentCookie.length);
        }
      }
      return "";
    }
    
    function addClass(el, newClassName){
      el.className += ' ' + newClassName;
    }
    
    function removeClass(el, removeClassName){
      var elClass = el.className;
      while(elClass.indexOf(removeClassName) != -1) {
          elClass = elClass.replace(removeClassName, '');
      }
      el.className = elClass;
    }
    
    
    function acceptTermsOfService() {
      addClass(document.getElementById("notification"),"not_visible");
      removeClass(document.getElementById("loginForm"),'not_visible');
      removeClass(document.getElementById("loginBox"),'notification_form');
      document.getElementById("un").focus();
    }
    
    function supportsSameSiteNone() {
      return true;
    
    }
    
    function getCookieAppend() {
      if (!window.isSecureContext) {
        return '';
      }
    
      var append = '; Secure; Partitioned';
    
      if (!supportsSameSiteNone()) {
        return append;
      }
    
      return append + '; SameSite=None';
    }
    
    var hasSubmitted = false;
    
    var login_jsp = {
      validateForCookiesAndSecureRequest : function() {
        if (hasSubmitted) {
            return false;
        }
        var sameSiteAppend = getCookieAppend();
        document.cookie = '__appianCookieCheck=isEnabled' + sameSiteAppend;
        var re = new RegExp('__appianCookieCheck=([^;]*);?','gi');
        var appianCookie = re.exec(document.cookie)||[];
        var isCookieEnabled = 'isEnabled' === (appianCookie.length>1?appianCookie[1]:'');
        document.cookie = '__appianCookieCheck=;expires=Fri, 02-Jan-1970 00:00:00 GMT' + sameSiteAppend;
        if (!isCookieEnabled) {
          var noCookieMsg = document.getElementById('login_jsp_cookiesMsg');
          noCookieMsg.style.display = '';
          return false;
        }
        var csrfTokenField = document.createElement("input");
        csrfTokenField.setAttribute("type", "hidden");
        csrfTokenField.setAttribute("name", "X-APPIAN-CSRF-TOKEN");
        csrfTokenField.setAttribute("value", getCookieValue("__appianCsrfToken"));
        document.getElementById("loginForm").appendChild(csrfTokenField);
        if(isEmbeddedLogin) {
          const embeddedOriginField = document.createElement("input");
          embeddedOriginField.setAttribute("type", "hidden");
          embeddedOriginField.setAttribute("name", "embeddedOrigin");
          embeddedOriginField.setAttribute("value", location.origin);
          document.getElementById("loginForm").appendChild(embeddedOriginField);
    
    
          const embeddedQueryStringField = document.createElement("input");
          embeddedQueryStringField.setAttribute("type", "hidden");
          embeddedQueryStringField.setAttribute("name", "embeddedQueryString");
          embeddedQueryStringField.setAttribute("value", location.search);
          document.getElementById("loginForm").appendChild(embeddedQueryStringField);
        }
        hasSubmitted = true;
        return true;
      }
    };
    window.sessionStorage && location.hash && sessionStorage.setItem("hash", location.hash);
    </script>
    </head>
    
    <body onload="try{if(document.getElementsByName('un')[0].value.length>0) {document.getElementsByName('pw')[0].focus();} else { document.getElementsByName('un')[0].focus();}}catch(e){}" class="appian-body">
    
      <div id="systemMessages" style="display: none">
        
    
        
      </div>
      <script type="text/javascript">
        if (!isInIframe()) {
          document.getElementById("systemMessages").style.display="block";
        }
      </script>
    
      <div class="appian_logo">
        
      </div>
    
      
      
    
    
    
    
    
    
            
    
    
      <div class="login_background">
      </div>
      <div id="loginBox" class="login_box  ">
        <div class="login_box_inner">
        <div class="login_logo">
          <img id="logo" src="https://XXXXXXXXX.appiancloud.com/suite/rest/a/content/latest/branding/logo/1538660930000"
               alt="Logo"/>
        </div>
          <form id="notification" class="not_visible">
            <div id="notificationText"></div>
            <div class="button_box">
              <div class="button_box_content">
                <div class="button_box_buttons">
                  <input type="button" class="btn primary" value="Acepto"
                    onclick="acceptTermsOfService()" />
                </div>
              </div>
            </div>
          </form>
          <form id="loginForm" class="" action="/suite/auth?appian_environment=tempo"
            method="post" onsubmit="return login_jsp.validateForCookiesAndSecureRequest();">
            
            
            
            
            
            <div class="field_layout">
              <label class="accessibilityhidden" for="un">Nombre de usuario</label>
              
                
                
                  <div class="input_below">
                  <input placeholder="Nombre de usuario" id="un" name="un" type="text" value="" size="34" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" aria-required="true" aria-describedby="errorMsg" />
                  </div>
                
              
            </div>
            <div class="field_layout">
              <label class="accessibilityhidden" for="pw">Contraseña</label>
              <div class="input_below">
                <input placeholder="Contraseña" id="pw" name="pw" type="password" size="34" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" aria-required="true" aria-describedby="errorMsg" />
              </div>
            </div>
            
              <div class="field_layout">
                <div>
                  <div class="choice_pair">
                    <input id="remember" name="_spring_security_remember_me" type="checkbox"/>
                    <label for="remember">Recordarme</label>
                  </div>
                </div>
              </div>
            
            
              
                <script>
    var key = 'REMEMBER_ME_ENABLED',
    cookieKey = '__localStorage.'+key;
    setTimeout(function(){
      var el = document.getElementById('remember');
      el.checked = localStorage ?
        'off' != localStorage.getItem(key) :
        document.cookie.indexOf(cookieKey+'=off') != -1;
      window.login_jsp.saveRemember = function() {
        if (el.checked) {
          if (localStorage) {
            localStorage.setItem(key, 'on');
          } else {
            document.cookie = cookieKey+'=on';
          }
        } else {
          if (localStorage) {
            localStorage.setItem(key, 'off');
          } else {
            document.cookie = cookieKey+'=off;';
          }
        }
        return true;
      };
    }, 1);
                </script>
              
              
            
            <div class="button_box">
              <div class="button_box_content">
                <div class="button_box_links">
                  
                  <div class="button_box_link_wrapper">
                    <a id="forgotPasswordLink" href="/suite/forgotpasswordrequest?appian_environment=tempo">
                      ¿Olvidó su contraseña?
                    </a>
                  </div>
                  
                  
                </div>
                <div class="button_box_buttons">
                  <input type="submit" class="btn primary" value="Entrar"
                    onclick="return login_jsp.saveRemember && login_jsp.saveRemember() || true;" />
                </div>
              </div>
            </div>
          </form>
        </div>
      </div>
      <div id="copyright">
        ©2003-2024 Appian Corporation
      </div>
      <link rel="stylesheet" href="https://web-assets.appian-cdn.com/YWUtMjQuMy4yMDAuMA/portal/css/fonts/open-sans.css?appian_environment=tempo" type="text/css" />
    </body>
    </html>
    

Children
No Data