Examples

Overview

This page contains coding examples for using the HUGIN Web Service API from C# and Java programs and PHP scripting, as well as examples for using the JavaScript for HUGIN Web Service API and the HUGIN Widgets Library from a web browser.  All examples are based on the simple and well-known Build and Propagate demo which can be found in the other HUGIN APIs as well.

Summary
ExamplesThis page contains coding examples for using the HUGIN Web Service API from C# and Java programs and PHP scripting, as well as examples for using the JavaScript for HUGIN Web Service API and the HUGIN Widgets Library from a web browser.
C# ExampleThis example demonstrates how to use the HUGIN Web Service API from C#.
Java ExampleThis example demonstrates how to use the HUGIN Web Service API from Java.
PHP ExampleThis example demonstrates how to use the HUGIN Web Service API from a PHP script.
Browser example using JavaScriptThis example demonstrates how to use the JavaScript for HUGIN Web Service API and the HUGIN Widgets Library from a web browser.

C# Example

This example demonstrates how to use the HUGIN Web Service API from C#.  Interaction with the decision engine is performed over HTTP using System.Net.WebRequest, the .NET Framework’s request/response model for accessing data from the Internet.

Prerequisites

  • Server Process configured and running (requires Java 8)
  • Example source code saved in file WebService.cs
  • .NET Framework + C# compiler

Code WebService.cs

using System;
using System.Net;
using System.IO;
using System.Text;
using System.Globalization;

namespace Example
{
    public class WebService
    {
        //service method for performing an HTTP POST request
        public static String POST(String url, String data)
        {
            WebRequest request = WebRequest.Create(url);
            request.Method = "POST";
            if (data != null)
            {
                data = data.Replace("+", "%2b");
                byte[] byteData = Encoding.UTF8.GetBytes(data);
                request.ContentType = "application/x-www-form-urlencoded";
                request.ContentLength = byteData.Length;
                using (Stream dataStream = request.GetRequestStream())
                {
                    dataStream.Write(byteData, 0, byteData.Length);
                }
            }
            else
            {
                request.ContentLength = 0;
            }

            using (WebResponse response = request.GetResponse())
            {
                return GetResponseString(response);
            }
        }


        //service method for performing an HTTP GET request
        public static String GET(String url)
        {
            WebRequest request = WebRequest.Create(url);
            request.Method = "GET";
            using (WebResponse response = request.GetResponse())
            {
                return GetResponseString(response);
            }
        }


        //service method for extracting server response as a string
        private static String GetResponseString(WebResponse response)
        {
            if (response == null)
                return null;
            using (Stream responseStream = response.GetResponseStream())
            {
                using (StreamReader reader = new StreamReader(responseStream))
                {
                    string responseFromServer = reader.ReadToEnd();
                    return responseFromServer.Trim();
                }
            }
        }

        //entry point
        public static void Main(String[] args)
        {
            if (args.Length == 0)
            {
                Console.WriteLine("HUGIN WebService Example");
                Console.WriteLine("Usage: WebService <SERVER-URL>   (e.g., webservice http://192.168.0.100:8001)");
                return;
            }
            String wshome = args[0];
            BAP(wshome);
        }


        //Build a Bayesian network and print node marginals.
        private static void BAP(String wshome) {
            try
            {
                //create domain
                String domain = POST(wshome + "/rest/newDomain", null);

                //create nodes
                String nodeA = POST(wshome + domain + "/getNewNode", "=chance&=discrete&=number");
                POST(wshome + nodeA + "/setName", "=A");
                POST(wshome + nodeA + "/setLabel", "=A1234567890123");
                POST(wshome + nodeA + "/setNumberOfStates", "=3");
                for (int i = 0; i < 3; i++)
                {
                    POST(wshome + nodeA + "/setStateValue", "=" + i + "&=" + i);
                }

                String nodeB = POST(wshome + domain + "/getNewNode", "=chance&=discrete&=number");
                POST(wshome + nodeB + "/setName", "=B");
                POST(wshome + nodeB + "/setLabel", "=B");
                POST(wshome + nodeB + "/setNumberOfStates", "=3");
                for (int i = 0; i < 3; i++)
                {
                    POST(wshome + nodeB + "/setStateValue", "=" + i + "&=" + i);
                }

                String nodeC = POST(wshome + domain + "/getNewNode", "=chance&=discrete&=number");
                POST(wshome + nodeC + "/setName", "=C");
                POST(wshome + nodeC + "/setLabel", "=C");
                POST(wshome + nodeC + "/setNumberOfStates", "=5");
                for (int i = 0; i < 5; i++)
                {
                    POST(wshome + nodeC + "/setStateValue", "=" + i + "&=" + i);
                }

                //build structure
                POST(wshome + nodeC + "/addParent", "=" + nodeA);
                POST(wshome + nodeC + "/addParent", "=" + nodeB);

                //build expression for C
                String model = POST(wshome + domain + "/getNewModel", "=" + nodeC + "&=");
                String expression = "A + B";
                POST(wshome + model + "/setExpression", "=0&=" + expression);

                //tables
                String tableA = GET(wshome + nodeA + "/getTable");
                POST(wshome + tableA + "/setData", "=0&=0.1 0.2 0.7");

                String tableB = GET(wshome + nodeB + "/getTable");
                POST(wshome + tableB + "/setData", "=0&=0.2 0.2 0.6");

                //compile
                POST(wshome + domain + "/compile", null);

                //print node marginals
                String nodes = GET(wshome + domain + "/getNodes");
                foreach (String node in nodes.Split(new char[] {' '})) {
                    int states = int.Parse(GET(wshome + node + "/getNumberOfStates"), CultureInfo.InvariantCulture);
                    String label = GET(wshome + node + "/getLabel");
                    Console.WriteLine(label);
                    for (int i = 0; i < states; i++)
                    {
                        String stateLabel = GET(wshome + node + "/getStateLabel?=" + i);
                        double belief = double.Parse(GET(wshome + node + "/getBelief?=" + i), CultureInfo.InvariantCulture);
                        Console.WriteLine("-" + stateLabel + " " + belief);
                    }
                }

                //clean up after ourselves on the server
                POST(wshome + domain + "/delete", null);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error: " + ex.Message);
                if (ex is WebException)
                    Console.WriteLine("Response: " + GetResponseString(((WebException)ex).Response));
            }
        }
    }
}

Run Example

java -classpath huginws.jar;<PATH-hapi.jar> -Djava.library.path=<PATH-.dll/.so-DIR> COM.hugin.WEBSERVICE.Main
  • Compile the WebService.cs file
csc WebService.cs
  • Run the executable, specify the URL to the Server Process (e.g., localhost if running on the same computer).
webservice.exe http://localhost:8080

Java Example

This example demonstrates how to use the HUGIN Web Service API from Java.  Interaction with the decision engine is performed over HTTP using Java.Net.HttpURLConnection, for representing a communications link between the application and HTTP URL.

Prerequisites

  • Server Process configured and running (requires Java 8)
  • Example source code saved in file WebService.java
  • Java JDK

Code WebService.java

import java.net.*;
import java.io.*;

public class WebService
{
    //service class for handling HTTP errors
    private static class WebError extends Throwable {
        private int result;
        private String message;
        public WebError(int argResult, String argMessage) {
            result = argResult;
            message = argMessage;
        }

        public String getMessage() {
            return message;
        }

        public int getResult() {
            return result;
        }
    }


    //service method for performing an HTTP POST request
    public static String POST(String url, String data) throws WebError, Exception
    {
        String response = "";
        int result = 0;
        URL u = new URL(url);
        HttpURLConnection conn = (HttpURLConnection)u.openConnection();
        conn.setDoInput (true);
        conn.setDoOutput (data != null);
        conn.setUseCaches (false);
        conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
        conn.setRequestMethod("POST");
        if (data != null) {
            data = data.replaceAll("\\+", "%2b");
            DataOutputStream out = new DataOutputStream (conn.getOutputStream ());
            out.writeBytes(data);
            out.flush ();
            out.close ();
        }
        result = conn.getResponseCode();
        BufferedReader in = null;
        if (result == 200)
            in = new BufferedReader (new InputStreamReader(conn.getInputStream ()));
        else
            in = new BufferedReader (new InputStreamReader(conn.getErrorStream ()));
        String temp;
        while ((temp = in.readLine()) != null){
            response += temp + "\n";
        }
        in.close ();
        if (result != 200)
            throw new WebError(result, response);
        return response.trim();
    }


    //service method for performing an HTTP GET request
    public static String GET(String url) throws WebError, Exception
    {
        String response = "";
        int result = 0;
        URL u = new URL(url);
        HttpURLConnection conn = (HttpURLConnection)u.openConnection();
        conn.setDoInput (true);
        conn.setDoOutput (false);
        conn.setUseCaches (false);
        conn.setRequestMethod("GET");

        result = conn.getResponseCode();
        BufferedReader in = null;
        if (result == 200)
            in = new BufferedReader (new InputStreamReader(conn.getInputStream ()));
        else
            in = new BufferedReader (new InputStreamReader(conn.getErrorStream ()));
        String temp;
        while ((temp = in.readLine()) != null) {
            response += temp + "\n";
        }
        in.close ();
        if (result != 200)
            throw new WebError(result, response);
        return response.trim();
    }


    //entry point
    public static void main(String[] args)
    {
        if (args.length == 0) {
            System.out.println("HUGIN WebService Example");
            System.out.println("Usage: java WebService <SERVER-URL>   (e.g., java WebService http://192.168.0.100:8001)");
            return;
        }
        String wshome = args[0];
        BAP(wshome);
    }


    //Build a Bayesian network and print node marginals.
    private static void BAP(String wshome) {
        try {
            //create domain
            String domain = POST(wshome + "/rest/newDomain", null);

            //create nodes
            String nodeA = POST(wshome + domain + "/getNewNode", "=chance&=discrete&=number");
            POST(wshome + nodeA + "/setName", "=A");
            POST(wshome + nodeA + "/setLabel", "=A1234567890123");
            POST(wshome + nodeA + "/setNumberOfStates", "=3");
            for (int i = 0; i < 3; i++) {
                POST(wshome + nodeA + "/setStateValue", "=" + i + "&=" + i);
            }

            String nodeB = POST(wshome + domain + "/getNewNode", "=chance&=discrete&=number");
            POST(wshome + nodeB + "/setName", "=B");
            POST(wshome + nodeB + "/setLabel", "=B");
            POST(wshome + nodeB + "/setNumberOfStates", "=3");
            for (int i = 0; i < 3; i++) {
                POST(wshome + nodeB + "/setStateValue", "=" + i + "&=" + i);
            }

            String nodeC = POST(wshome + domain + "/getNewNode", "=chance&=discrete&=number");
            POST(wshome + nodeC + "/setName", "=C");
            POST(wshome + nodeC + "/setLabel", "=C");
            POST(wshome + nodeC + "/setNumberOfStates", "=5");
            for (int i = 0; i < 5; i++) {
            POST(wshome + nodeC + "/setStateValue", "=" + i + "&=" + i);
            }

            //build structure
            POST(wshome + nodeC + "/addParent", "=" + nodeA);
            POST(wshome + nodeC + "/addParent", "=" + nodeB);

            //build expression for C
            String model = POST(wshome + domain + "/getNewModel", "=" + nodeC + "&=");
            String expression = "A + B";
            POST(wshome + model + "/setExpression", "=0&=" + expression);

            //tables
            String tableA = GET(wshome + nodeA + "/getTable");
            POST(wshome + tableA + "/setData", "=0&=0.1 0.2 0.7");

            String tableB = GET(wshome + nodeB + "/getTable");
            POST(wshome + tableB + "/setData", "=0&=0.2 0.2 0.6");

            //compile
            POST(wshome + domain + "/compile", null);

            //print node marginals
            String nodes = GET(wshome + domain + "/getNodes");
            for (String node : nodes.split(" ")) {
            int states = Integer.parseInt(GET(wshome + node + "/getNumberOfStates"));
            String label = GET(wshome + node + "/getLabel");
            System.out.println(label);
                for (int i = 0; i < states; i++) {
                    String stateLabel = GET(wshome + node + "/getStateLabel?=" + i);
                    double belief = Double.parseDouble(GET(wshome + node + "/getBelief?=" + i));
                    System.out.println("-" + stateLabel + " " + belief);
                }
            }

            //clean up after ourselves on the server
            POST(wshome + domain + "/delete", null);
        }
        catch (WebError err) {
            System.out.println("Error: " + err.result + " " + err.getMessage());
        }
        catch (Exception ex) {
            System.out.println(ex.getMessage());
        }
    }
}

Run Example

java -classpath huginws.jar;<PATH-hapi.jar> -Djava.library.path=<PATH-.dll/.so-DIR> COM.hugin.WEBSERVICE.Main
  • Compile the WebService.java file
javac WebService.java
  • Run the executable, specify the URL to the Server Process (e.g., localhost if running on the same computer).
java WebService http://localhost:8080

PHP Example

This example demonstrates how to use the HUGIN Web Service API from a PHP script.  Interaction with the decision engine is performed over HTTP using internet socket connection (see fsockopen http://www.php.net/manual/en/function.fsockopen.php).

Prerequisites

  • Server Process configured and running (requires Java 8)
  • Example source code saved in files WebService.php and BAP.php
  • PHP capable web server (with allow_url_fopen = On)

Code WebService.php

<?php
//NOTE:
//php.ini must have allow_url_fopen = On

//helper functions for performing POST and GET requests
class WebService {
  public static $HTTPSTATUS = 0;
  public static $HTTPMESSAGE = '';
  public static $RESPONSE = '';

  private static function Error($statuscode, $str) {
    WebService::$HTTPSTATUS = $statuscode;
    WebService::$HTTPMESSAGE = $str;
    WebService::$RESPONSE = '';
    throw new Exception($statuscode . ' ' . $str);
  }

  private static function HTTP($method, $url, $data) {
    $statuscode = -1;
    $statusstring = '';
    $contents = '';
    WebService::$HTTPSTATUS = 0;
    WebService::$HTTPMESSAGE = '';
    WebService::$RESPONSE = '';

    try {
      $HOST = parse_url($url, PHP_URL_HOST);
      $PORT = parse_url($url, PHP_URL_PORT);
      if ($PORT == NULL)
    $PORT = 80;
      $PATH = parse_url($url, PHP_URL_PATH);
      if ($PATH == NULL)
    $PATH = "/";
      $QUERY = parse_url($url, PHP_URL_QUERY);
      if ($QUERY == NULL)
    $QUERY = "";
      else
    $QUERY = "?" . $QUERY;

      if ($HOST == NULL) {
    $statuscode = 500;
    $statusstring = "Invalid URL specified: " . $url;
      } else if ($method == 'GET' || $method == 'POST') {
    $fp = fsockopen($HOST, $PORT, $errno, $errstr, 30);
    if (!$fp) {
      $statuscode = 500;
      $statusstring = "Could not open socket! " . $errstr . "(" . $errno . ")";
    } else {
      $out = '';
      if ($method == 'GET')
        $out .= "GET " . $PATH . $QUERY . " HTTP/1.1\r\n";
      else
        $out .= "POST " . $PATH . " HTTP/1.1\r\n";
      $out .= "Host: " . $HOST . "\r\n";


      if ($method == 'POST') {
        $data = str_replace("+", "%2b", $data);
        $encoded = utf8_encode($data);
        $out .= "Content-Type: application/x-www-form-urlencoded; charset=UTF-8\r\n";
        $out .= "Content-Length: " . strlen($encoded) . "\r\n";
        $out .= "Connection: Close\r\n\r\n";
        fwrite($fp, $out);
        fwrite($fp, $data);
      } else {
        $out .= "Connection: Close\r\n\r\n";
        fwrite($fp, $out);
      }

      $emptylines = 0;
      while (!feof($fp)) {
        $hs = fgets($fp, 128);
        if ($hs != "\r\n") {
          if ($statuscode < 0) {
        $httpstatus = explode(' ', $hs, 3);
        $statuscode = (int)$httpstatus[1];
        $statusstring = $httpstatus[2];
          }
        } else {
          $emptylines++;
          if ($emptylines==1)
        break;
        }
      }
      while (!feof($fp)) {
        $contents .= fread($fp, 8192);
      }
      fclose($fp);
      WebService::$HTTPSTATUS = $statuscode;
      WebService::$HTTPMESSAGE = $statusstring;
      WebService::$RESPONSE = trim($contents);
    }
      }
    } catch (Exception $e) {
      $statuscode = 500;
      $statusstring = $e->getMessage();
    }
    if ($statuscode != 200) {
      WebService::Error($statuscode, $statusstring);
    }
  }

  public static function POST($url, $data) {
    WebService::HTTP("POST", $url, $data);
    return WebService::$RESPONSE;
  }

  public static function GET($url) {
    WebService::HTTP("GET", $url, '');
    return WebService::$RESPONSE;
  }
}
?>

Code BAP.php

<?php
require_once('WebService.php');

//Build a Bayesian network and print node marginals.
function BAP($wshome) {
  try
    {
      //create domain
      $domain = WebService::POST("$wshome/rest/newDomain", "");

      //create nodes
      $nodeA = WebService::POST("$wshome$domain/getNewNode", "=chance&=discrete&=number");
      WebService::POST("$wshome$nodeA/setName", "=A");
      WebService::POST("$wshome$nodeA/setLabel", "=A1234567890123");
      WebService::POST("$wshome$nodeA/setNumberOfStates", "=3");
      for ($i = 0; $i < 3; $i++)
    {
      WebService::POST("$wshome$nodeA/setStateValue", "=$i&=$i");
    }

      $nodeB = WebService::POST("$wshome$domain/getNewNode", "=chance&=discrete&=number");
      WebService::POST("$wshome$nodeB/setName", "=B");
      WebService::POST("$wshome$nodeB/setLabel", "=B");
      WebService::POST("$wshome$nodeB/setNumberOfStates", "=3");
      for ($i = 0; $i < 3; $i++)
    {
      WebService::POST("$wshome$nodeB/setStateValue", "=$i&=$i");
    }

      $nodeC = WebService::POST("$wshome$domain/getNewNode", "=chance&=discrete&=number");
      WebService::POST("$wshome$nodeC/setName", "=C");
      WebService::POST("$wshome$nodeC/setLabel", "=C");
      WebService::POST("$wshome$nodeC/setNumberOfStates", "=5");
      for ($i = 0; $i < 5; $i++)
    {
      WebService::POST("$wshome$nodeC/setStateValue", "=$i&=$i");
    }

      //build structure
      WebService::POST("$wshome$nodeC/addParent", "=$nodeA");
      WebService::POST("$wshome$nodeC/addParent", "=$nodeB");

      //build expression for C
      $model = WebService::POST("$wshome$domain/getNewModel", "=$nodeC&=");
      $expression = "A + B";
      WebService::POST("$wshome$model/setExpression", "=0&=$expression");

      //tables
      $tableA = WebService::GET("$wshome$nodeA/getTable");
      WebService::POST("$wshome$tableA/setData", "=0&=0.1 0.2 0.7");

      $tableB = WebService::GET("$wshome$nodeB/getTable");
      WebService::POST("$wshome$tableB/setData", "=0&=0.2 0.2 0.6");

      //compile
      WebService::POST("$wshome$domain/compile", "");

      //print node marginals
      $nodes = WebService::GET("$wshome$domain/getNodes");
      foreach (explode(' ', $nodes) as $node) {
    $states = (int)WebService::GET("$wshome$node/getNumberOfStates");
    $label = WebService::GET("$wshome$node/getLabel");
    echo $label . "\n";
    for ($i = 0; $i < $states; $i++)
      {
        $stateLabel = WebService::GET("$wshome$node/getStateLabel?=$i");
        $belief = (double)WebService::GET("$wshome$node/getBelief?=$i");
        echo "-$stateLabel $belief\n";
      }
      }

      //clean up after ourselves on the server
      WebService::POST("$wshome$domain/delete", "");
    }
  catch (Exception $ex)
    {
      echo "Error: " . $ex->getMessage() . "\n";
      echo "HTTP STATUS: " . WebService::$HTTPSTATUS . "\n";
      echo "HTTP MESSAGE: " . WebService::$HTTPMESSAGE . "\n";
      echo "RESPONSE: " . WebService::$RESPONSE . "\n";
    }
}

header("Content-Type: text/plain");

BAP("http://127.0.0.1:8080");

?>

Run Example

java -classpath huginws.jar;<PATH-hapi.jar> -Djava.library.path=<PATH-.dll/.so-DIR> COM.hugin.WEBSERVICE.Main
  • Edit BAP.php and specify correct URL to web service
  • point browser to BAP.php on the web server http://<web-server>/<path-to>/BAP.php

Browser example using JavaScript

This example demonstrates how to use the JavaScript for HUGIN Web Service API and the HUGIN Widgets Library from a web browser.  Interaction with the decision engine is performed over HTTP using the HAPI object by including the HUGIN library file hugin.js.

The script inside <HEAD> corresponds to the Build-and-propagate example found in the other coding samples on this page.  The scripting inside the <BODY> demonstrates how to use the HUGIN Widgets Library (included in the library file hwidgets.js).

Prerequisites

  • Server Process configured and running (requires Java 8)
  • a functional Apache+PHP installation - with apache and php configuration files properly configured
  • The hugin.php proxy script (see proxy source code under JavaScript for HUGIN Web Service API).
  • Example source code saved in file test.html
  • A web browser capable of JavaScript (e.g., Internet Explorer, FireFox).

Code test.html

<!DOCTYPE HTML>

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <script type="text/javascript" src="/webservice/hugin.php/hugin.js"></script>
  <script type="text/javascript" src="/webservice/hugin.php/hwidgets.js"></script>
  <script type="text/javascript">
        try {
                alert("Start building and propagate code");

                //create an HAPI instance - point it to the correct URL for the HUGIN Web Service entry point
                hapi = new HAPI("/webservice/hugin.php");

                //create domain
                domain = hapi.getNewDomain();

                //create nodes
                A = domain.getNewNode(HAPI.H_CATEGORY_CHANCE, HAPI.H_KIND_DISCRETE, HAPI.H_SUBTYPE_NUMBER);
                A.setName("A");
                A.setLabel("A1234567890123");
                A.setNumberOfStates(3);
                for (var i = 0; i < 3; i++) {
                        A.setStateValue(i, i);
                }

                B = domain.getNewNode(HAPI.H_CATEGORY_CHANCE, HAPI.H_KIND_DISCRETE, HAPI.H_SUBTYPE_NUMBER);
                B.setName("B");
                B.setLabel("B");
                B.setNumberOfStates(3);
                for (var i = 0; i < 3; i++) {
                        B.setStateValue(i, i);
                }

                C = domain.getNewNode(HAPI.H_CATEGORY_CHANCE, HAPI.H_KIND_DISCRETE, HAPI.H_SUBTYPE_NUMBER);
                C.setName("C");
                C.setLabel("C");
                C.setNumberOfStates(5);
                for (var i = 0; i < 5; i++) {
                        C.setStateValue(i, i);
                }

                //build structure
                C.addParent(A);
                C.addParent(B);

                //build expression for C
                model = domain.getNewModel(C, []);
                model.setExpression(0, "A + B");

                //tables
                tableA = A.getTable();
                tableA.setData([0.1, 0.2, 0.7], 0, 3);

                tableB = B.getTable();
                tableB.setData([0.2, 0.2, 0.6], 0, 3);

                //compile
                domain.compile();

                //print node marginals
                var result = "";
                nodes = domain.getNodes();
                for (var i = 0; i < nodes.length; i++) {
                        var node = nodes[i];
                        var states = node.getNumberOfStates();
                        var label = node.getLabel();
                        result += label + "\n";
                        for (var j = 0; j < states; j++) {
                                var statelabel = node.getStateLabel(j);
                                var belief = node.getBelief(j);
                                result += "-" + statelabel + " " + belief + "\n";
                        }
                }
                alert(result);
        } catch (e) {
                alert("An error occured: " + e.name + "\n" + e.message);
        }
  </script>

  <title>Build And Propagate</title>
</head>

<body>
  <h1>Build And Propagate</h1><script type="text/javascript">
  try {
        //create a widget manager instance - we need it for adding widgets
        widMan = new HuginWidgetManager(domain, { prefetch_by_name: ["A", "B", "C"] });
  } catch (e) {
        alert("An error occured: " + e.name + "\n" + e.message);
  }
  </script>

  <p>Node A</p>

  <p><script type="text/javascript">
  widMan.addStateSelectOption(A, { labels: ["state 0", "state 1", "state 2"] });
  </script></p>

  <p>P(state 0)=<script type="text/javascript">
  widMan.addBeliefLabel(A, 0, {});
  </script><br />
  P(state 1)=<script type="text/javascript">
  widMan.addBeliefLabel(A, 1, {});
  </script><br />
  P(state 2)=<script type="text/javascript">
  widMan.addBeliefLabel(A, 2, {});
  </script></p>

  <p>Node B</p>

  <p><script type="text/javascript">
  widMan.addStateSelectOption(B, { labels: ["state 0", "state 1", "state 2"] });
  </script></p>

  <p>P(state 0)=<script type="text/javascript">
  widMan.addBeliefLabel(B, 0, {});
  </script><br />
  P(state 1)=<script type="text/javascript">
  widMan.addBeliefLabel(B, 1, {});
  </script><br />
  P(state 2)=<script type="text/javascript">
  widMan.addBeliefLabel(B, 2, {});
  </script></p>

  <p>Node C</p>

  <p>P(state 0)=<script type="text/javascript">
  widMan.addBeliefLabel(C, 0, {});
  </script><br />
  P(state 1)=<script type="text/javascript">
  widMan.addBeliefLabel(C, 1, {});
  </script><br />
  P(state 2)=<script type="text/javascript">
  widMan.addBeliefLabel(C, 2, {});
  </script><br />
  P(state 3)=<script type="text/javascript">
  widMan.addBeliefLabel(C, 3, {});
  </script><br />
  P(state 4)=<script type="text/javascript">
  widMan.addBeliefLabel(C, 4, {});
  </script></p>

  <p><script type="text/javascript">
  widMan.addButtonInitialize({});
  </script></p>
</body>
</html>

Run Example

java -classpath huginws.jar;<PATH-hapi.jar> -Djava.library.path=<PATH-.dll/.so-DIR> COM.hugin.WEBSERVICE.Main
The HUGIN Web Service API exposes a RESTful HTTP interface for interacting with the HUGIN decision engine.
The JavaScript for HUGIN Web Service API provides a scripting interface to the HUGIN Web Service API for using HUGIN in a browser context.
The HUGIN Widgets Library is a tool-box of UI elements for exercising the Javascript for HUGIN Web services API through point-and-click on a web page.
The HUGIN decision engine lives in the server process.
Close