1. 通过WPF创建一个访问数据库的项目,并为这个项目添加REST支持
2. 创建项目后, WPF 会自动的为数据库获取到的数据集合生成 schema ,将这个 schema 保存为 xsd 文件。
3. 打开 Lotus Forms Designer ,创建一个支持 XForm 的表单,导入上面步骤创建的 xsd 文件。注意,要先清除上一步骤生成的 xsd 文件中的中文。才可以成功导入。
4. 根据导入的 schema 生成数据实例
5. 直接拖拽 instance 到表单上生成主表的显示控件,通过 table 向导生成子表的显示控件
6. 通过简单的程序将数据预填写到表单中,同样可以通过程序将数据写回。这两个过程都是通过程序调用 WPF 生成的 REST API 实现。
try { XFDL xfdl = IFSSingleton.getXFDL(); //从输入流中读出提交的Form FormNodeP form = xfdl.readForm(arg0.getPortletInputStream(), XFDL.UFL_SERVER_SPEED_FLAGS); ByteArrayOutputStream bos = new ByteArrayOutputStream(); //从表单对象中读出instance数据 form.extractXFormsInstance("", "instance('instance')", false, true, null, bos); String model = new String(bos.toString("UTF-8")); System.out.println("+++++xmlmodel is " + model); DBHelper.getInstance().save2db(model); } catch (UWIException e) { e.printStackTrace(); }
public void save2db(String model) {
System.out.println("DBHelper.save2db");
//使用HTTPClient调用REST API
HttpClient httpClient = new HttpClient();
//创建GET方法的实例,URL是REST API的URL
String url = "http://localhost:10000/FormsWithDB/webengine/dbServiceProvider/Action!getMainDBDataRest
";
PostMethod postMethod = new PostMethod(url);
// 填入各个表单域的值
try {
NameValuePair[] data = { new NameValuePair("strXML", new String(model.getBytes(),"8859-1"))};
// 将表单的值放入postMethod中
postMethod.setRequestBody(data);
// 执行postMethod
int statusCode = httpClient.executeMethod(postMethod);
System.out.println("+++++++++http statusCode is "+ statusCode);
} catch (HttpException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
postMethod.releaseConnection();
}