From WeBWorK_wiki
Jump to navigation Jump to search

WeBWorK Applet interface

This page describes a common interface between WeBWorK questions and Java, Flash and Geogebra applets.

Applets should respond when called by these functions

  1. getXML() - the WW question is asking for an XML description of the applet's state. The description is text -- it is not base64 encoded. The XML description of the applet state should be suitable for use in setXML
  2. setXML(state) - the applet receives an XML description string to reset the applet's state. The description is text -- it is not base64 encoded.
  3. setConfig(configuration) - the WeBWorK is sending an initial configuration for the applet. The description is text -- it is not base64 encoded.
  4. getAnswer() -- the applet responds with a string simulating an answer entered by the student. This is typically called when the submit button is pressed.
  5. isActive() - a 1 or "true" response by the applet indicates that the applet is loaded, initialized and ready to go.
  6. debug() - set when the applet is called from WW. If debug=1 the WW question is in debug mode and if the applet has the ability to issue extra error messages these should be turned on. If debug=0 then these error messages should be turned off.


Demos of applets can be found at (login as guest)

Demos of bleeding edge development of applets can be observed at (login as guest)

Not all of these applets will be functional

A comprehensive example of how to construct a GeoGebra applet, include it in a WeBWorK PG file, and have WeBWorK set parameters in the GeoGebra applet is now available in the WeBWorK Problem Techniques authoring section "GeoGebra Applets in WeBWorK" (as of Nov. 7, 2010)

A tutorial of how to construct a WeBWork problem containing a Flash applet is now available: Flash Applets Tutorial (as of July 28, 2011)

Additional documentation

More specialized pages about applets can be found at at JavaApplets, FlashApplets and GeogebraApplets

POD documentation can be found at:,


and the javaScript glue can be found at

The interface is still being tweaked and so expect minor changes to continue along with significant new features.

Request additional features from the FlashObject working group: