程序型IsoBean
# FastWeb 程序型IsoBean
本章节中,我们将学习如何制作一个程序型的IsoBean模块。程序型的IsoBean模块可配合其他Bean模块进行数据传输操作,比如可以使用程序型IsoBean模块读取数据库的数据并向其他IsoBean发送WebSocket消息,从而实现主动推送更新的效果。程序型的IsoBean通常也不需要绑定Bean模块。
数据型IsoBean模块的设计顺序如下:
- 配置节点数据库
- 设计IsoBean模块
- 发布IsoBean模块
以下程序型IsoBean的模块示例是配合 战情型IsoBean 示例使用的,在查看此示例前,请先查看战情型报表的示例说明,结合查看此处的设定可助于理解。
# 1. 配置节点数据库
配置节点数据库的方式请参考 Node节点数据库。如要使用的节点数据库已创建,则可跳过此步骤。本示例中使用的FastWeb数据库已内置于示例库中,故此步骤省略。
# 2. 设计IsoBean模块
点击 [云服务工具]
- [IsoBean模块管理]
,打开IsoBean模块管理界面,点击 [添加]
按钮,按照以下提示创建一个IsoBean模块。其他信息中请注意要将 是否激活?
选项进行勾选。填写完成后,点击 [保存]
按钮。


创建完成后,选择创建的IsoBean,点击 [API设计]
,创建的API请按照以下方式进行设置。
function RestAPI()
{
var D,Q,eventname,msg,l,s;
eventname = IIF(URLParams.Values["eventname"]=="",APIParams.Values["eventname"],URLParams.Values["eventname"]);
//获取节点数据库
Try
D = GetNodeDataLink("FastWeb");
Except{
//报错时组装JSON错误信息
var DE = new TJSONObject();
DE.AddPair("status","error");
DE.AddPair("message","NodeData "+db+" not found.");
return(DE.ToString);
}
Q = new TFDQuery(nil);
Q.Connection = D;
l = new TStringList();
Try{
//更新表头的数据
if (SameText(eventname,"updateheader"))
{
//以随机数代替数据读取
Q.SQL.Text = "select cast(floor(RAND() * 20000) AS INT) as dataMonthOrder,cast(floor(RAND() * 2000) AS INT) as dataNewMeber,cast(floor(RAND() * 8000) AS INT) as dataOnceConsume";
Q.Open;
msg = "{" +
"\"username\": \"demo\"," + //WebSocket消息发送的目标用户
"\"action\": \"callback\"," + //WebSocket消息告知IsoBean执行的动作
"\"data\": {" +
"\"callbackcomponent\": \"dashboard-demo1\"," + //执行动作的目标组件名称
"\"callbackeventname\": \"updateheader\"," + //执行触发OnAjaxEvent事件的 eventname(事件名称)
"\"callbackparams\": [" + //传输的键值,可以有一对或者多对
"{" +
"\"paramname\": \"dataMonthOrder\"," +
"\"paramvalue\": \"" + Q.FieldByName("dataMonthOrder").asString + "\"" +
"}," +
"{" +
"\"paramname\": \"dataNewMember\"," +
"\"paramvalue\": \"" + Q.FieldByName("dataNewMeber").asString + "\"" +
"}," +
"{" +
"\"paramname\": \"dataOnceConsume\"," +
"\"paramvalue\": \"" + Q.FieldByName("dataOnceConsume").asString + "\"" +
"}" +
"]" +
"}" +
"}";
//注意,此处的"https://"根据访问的类型进行调整,如果使用http访问FastWeb,此处应改为"http://";如果使用https访问的,则此处应修改为"https://"
s = UGCM.NetHttpPost("http://"+RequestInfo.Host+"?restapi=sendwsmsg",msg);
return s;
}
//更新图表1
if (SameText(eventname,"updatechart1"))
{
//以随机数代替数据读取
Q.SQL.Text = "select cast(floor(RAND() * 20000) AS INT) as one,cast(floor(RAND() * 20000) AS INT) as two,cast(floor(RAND() * 20000) AS INT) as three," +
"cast(floor(RAND() * 20000) AS INT) as four,cast(floor(RAND() * 20000) AS INT) as five";
Q.Open;
msg = "{" +
"\"username\": \"demo\"," + //WebSocket消息发送的目标用户
"\"action\": \"callback\"," + //WebSocket消息告知IsoBean执行的动作
"\"data\": {" +
"\"callbackcomponent\": \"dashboard-demo1\"," + //执行动作的目标组件名称
"\"callbackeventname\": \"updatechart1\"," + //执行触发OnAjaxEvent事件的 eventname(事件名称)
"\"callbackparams\": [" + //传输的键值,可以有一对或者多对
"{" +
"\"paramname\": \"dataChart1\"," +
"\"paramvalue\": \"" + Q.FieldByName("one").asString + "," +
Q.FieldByName("two").asString + "," +
Q.FieldByName("three").asString + "," +
Q.FieldByName("four").asString + "," +
Q.FieldByName("five").asString + "," +
"\"" +
"}" +
"]" +
"}" +
"}";
//注意,此处的"https://"根据访问的类型进行调整,如果使用http访问FastWeb,此处应改为"http://";如果使用https访问的,则此处应修改为"https://"
s = UGCM.NetHttpPost("http://"+RequestInfo.Host+"?restapi=sendwsmsg",msg);
return s;
}
//更新图表2
if (SameText(eventname,"updatechart2"))
{
//以随机数代替数据读取
Q.SQL.Text = "select cast(floor(RAND() * 2000) AS INT) as s1e1,cast(floor(RAND() * 2000) AS INT) as s1e2,cast(floor(RAND() * 2000) AS INT) as s1e3," +
"cast(floor(RAND() * 2000) AS INT) as s1e4,cast(floor(RAND() * 2000) AS INT) as s1e5,cast(floor(RAND() * 2000) AS INT) as s1e6," +
"cast(floor(RAND() * 2000) AS INT) as s1e7,cast(floor(RAND() * 2000) AS INT) as s1e8,cast(floor(RAND() * 2000) AS INT) as s1e9," +
"cast(floor(RAND() * 2000) AS INT) as s1e10,cast(floor(RAND() * 2000) AS INT) as s1e11,cast(floor(RAND() * 2000) AS INT) as s1e12," +
"cast(floor(RAND() * 2000) AS INT) as s2e1,cast(floor(RAND() * 2000) AS INT) as s2e2,cast(floor(RAND() * 2000) AS INT) as s2e3," +
"cast(floor(RAND() * 2000) AS INT) as s2e4,cast(floor(RAND() * 2000) AS INT) as s2e5,cast(floor(RAND() * 2000) AS INT) as s2e6," +
"cast(floor(RAND() * 2000) AS INT) as s2e7,cast(floor(RAND() * 2000) AS INT) as s2e8,cast(floor(RAND() * 2000) AS INT) as s2e9," +
"cast(floor(RAND() * 2000) AS INT) as s2e10,cast(floor(RAND() * 2000) AS INT) as s2e11,cast(floor(RAND() * 2000) AS INT) as s2e12";
Q.Open;
msg = "{" +
"\"username\": \"demo\"," + //WebSocket消息发送的目标用户
"\"action\": \"callback\"," + //WebSocket消息告知IsoBean执行的动作
"\"data\": {" +
"\"callbackcomponent\": \"dashboard-demo1\"," + //执行动作的目标组件名称
"\"callbackeventname\": \"updatechart2\"," + //执行触发OnAjaxEvent事件的 eventname(事件名称)
"\"callbackparams\": [" + //传输的键值,可以有一对或者多对
"{" +
"\"paramname\": \"dataChart2series1\"," +
"\"paramvalue\": \"" + QuotedStr(Q.FieldByName("s1e1").asString) + "," + QuotedStr(Q.FieldByName("s1e2").asString) + "," + QuotedStr(Q.FieldByName("s1e3").asString) + "," +
QuotedStr(Q.FieldByName("s1e4").asString) + "," + QuotedStr(Q.FieldByName("s1e5").asString) + "," + QuotedStr(Q.FieldByName("s1e6").asString) + "," +
QuotedStr(Q.FieldByName("s1e7").asString) + "," + QuotedStr(Q.FieldByName("s1e8").asString) + "," + QuotedStr(Q.FieldByName("s1e9").asString) + "," +
QuotedStr(Q.FieldByName("s1e10").asString) + "," + QuotedStr(Q.FieldByName("s1e11").asString) + "," + QuotedStr(Q.FieldByName("s1e12").asString) + "," +
"\"" +
"}," +
"{" +
"\"paramname\": \"dataChart2series2\"," +
"\"paramvalue\": \"" + QuotedStr(Q.FieldByName("s2e1").asString) + "," + QuotedStr(Q.FieldByName("s2e2").asString) + "," + QuotedStr(Q.FieldByName("s2e3").asString) + "," +
QuotedStr(Q.FieldByName("s2e4").asString) + "," + QuotedStr(Q.FieldByName("s2e5").asString) + "," + QuotedStr(Q.FieldByName("s2e6").asString) + "," +
QuotedStr(Q.FieldByName("s2e7").asString) + "," + QuotedStr(Q.FieldByName("s2e8").asString) + "," + QuotedStr(Q.FieldByName("s2e9").asString) + "," +
QuotedStr(Q.FieldByName("s2e10").asString) + "," + QuotedStr(Q.FieldByName("s2e11").asString) + "," + QuotedStr(Q.FieldByName("s2e12").asString) + "," +
"\"" +
"}" +
"]" +
"}" +
"}";
//注意,此处的"https://"根据访问的类型进行调整,如果使用http访问FastWeb,此处应改为"http://";如果使用https访问的,则此处应修改为"https://"
s = UGCM.NetHttpPost("http://"+RequestInfo.Host+"?restapi=sendwsmsg",msg);
return s;
}
//更新图表3
if (SameText(eventname,"updatechart3"))
{
//以随机数代替数据读取
Q.SQL.Text = "select cast(floor(RAND() * 5) AS INT) as s1,cast(floor(RAND() * 5) AS INT) as s2,cast(floor(RAND() * 5) AS INT) as s3," +
"cast(floor(RAND() * 5) AS INT) as s4,cast(floor(RAND() * 5) AS INT) as s5,cast(floor(RAND() * 5) AS INT) as s6," +
"cast(floor(RAND() * 5) AS INT) as s7,cast(floor(RAND() * 5) AS INT) as s8,cast(floor(RAND() * 5) AS INT) as s9," +
"cast(floor(RAND() * 5) AS INT) as s10,cast(floor(RAND() * 5) AS INT) as s11,cast(floor(RAND() * 5) AS INT) as s12";
Q.Open;
msg = "{" +
"\"username\": \"demo\"," + //WebSocket消息发送的目标用户
"\"action\": \"callback\"," + //WebSocket消息告知IsoBean执行的动作
"\"data\": {" +
"\"callbackcomponent\": \"dashboard-demo1\"," + //执行动作的目标组件名称
"\"callbackeventname\": \"updatechart3\"," + //执行触发OnAjaxEvent事件的 eventname(事件名称)
"\"callbackparams\": [" + //传输的键值,可以有一对或者多对
"{" +
"\"paramname\": \"dataChart3\"," +
"\"paramvalue\": \"" + Q.FieldByName("s1").asString + "," + Q.FieldByName("s2").asString + "," + Q.FieldByName("s3").asString + "," +
Q.FieldByName("s4").asString + "," + Q.FieldByName("s5").asString + "," + Q.FieldByName("s6").asString + "," +
Q.FieldByName("s7").asString + "," + Q.FieldByName("s8").asString + "," + Q.FieldByName("s9").asString + "," +
Q.FieldByName("s10").asString + "," + Q.FieldByName("s11").asString + "," + Q.FieldByName("s12").asString +
"\"" +
"}" +
"]" +
"}" +
"}";
//注意,此处的"https://"根据访问的类型进行调整,如果使用http访问FastWeb,此处应改为"http://";如果使用https访问的,则此处应修改为"https://"
s = UGCM.NetHttpPost("http://"+RequestInfo.Host+"?restapi=sendwsmsg",msg);
return s;
}
//更新图表4
if (SameText(eventname,"updatechart4"))
{
//以随机数代替数据读取
Q.SQL.Text = "select cast(floor(RAND() * 19+1) AS INT) as one,cast(floor(RAND() * 19+1) AS INT) as two,cast(floor(RAND() * 19+1) AS INT) as three," +
"cast(floor(RAND() * 19+1) AS INT) as four,cast(floor(RAND() * 19+1) AS INT) as five";
Q.Open;
msg = "{" +
"\"username\": \"demo\"," + //WebSocket消息发送的目标用户
"\"action\": \"callback\"," + //WebSocket消息告知IsoBean执行的动作
"\"data\": {" +
"\"callbackcomponent\": \"dashboard-demo1\"," + //执行动作的目标组件名称
"\"callbackeventname\": \"updatechart4\"," + //执行触发OnAjaxEvent事件的 eventname(事件名称)
"\"callbackparams\": [" + //传输的键值,可以有一对或者多对
"{" +
"\"paramname\": \"dataChart4\"," +
"\"paramvalue\": \"{value:" + Q.FieldByName("one").asString + ",name:'No.1'}," +
"{value:" + Q.FieldByName("two").asString + ",name:'No.2'}," +
"{value:" + Q.FieldByName("three").asString + ",name:'No.3'}," +
"{value:" + Q.FieldByName("four").asString + ",name:'No.4'}," +
"{value:" + Q.FieldByName("five").asString + ",name:'No.5'}" +
"\"" +
"}" +
"]" +
"}" +
"}";
//注意,此处的"https://"根据访问的类型进行调整,如果使用http访问FastWeb,此处应改为"http://";如果使用https访问的,则此处应修改为"https://"
s = UGCM.NetHttpPost("http://"+RequestInfo.Host+"?restapi=sendwsmsg",msg);
return s;
}
//更新图表5
if (SameText(eventname,"updatechart5"))
{
//以随机数代替数据读取
Q.SQL.Text = "select cast(floor(RAND() * 50000) AS INT) as one,cast(floor(RAND() * 50000) AS INT) as two,cast(floor(RAND() * 50000) AS INT) as three," +
"cast(floor(RAND() * 50000) AS INT) as four,cast(floor(RAND() * 50000) AS INT) as five";
Q.Open;
msg = "{" +
"\"username\": \"demo\"," + //WebSocket消息发送的目标用户
"\"action\": \"callback\"," + //WebSocket消息告知IsoBean执行的动作
"\"data\": {" +
"\"callbackcomponent\": \"dashboard-demo1\"," + //执行动作的目标组件名称
"\"callbackeventname\": \"updatechart5\"," + //执行触发OnAjaxEvent事件的 eventname(事件名称)
"\"callbackparams\": [" + //传输的键值,可以有一对或者多对
"{" +
"\"paramname\": \"dataChart5\"," +
"\"paramvalue\": \"" + Q.FieldByName("one").asString + "," +
Q.FieldByName("two").asString + "," +
Q.FieldByName("three").asString + "," +
Q.FieldByName("four").asString + "," +
Q.FieldByName("five").asString + "," +
"\"" +
"}" +
"]" +
"}" +
"}";
//注意,此处的"https://"根据访问的类型进行调整,如果使用http访问FastWeb,此处应改为"http://";如果使用https访问的,则此处应修改为"https://"
s = UGCM.NetHttpPost("http://"+RequestInfo.Host+"?restapi=sendwsmsg",msg);
return s;
}
//更新图表6
if (SameText(eventname,"updatechart6"))
{
//以随机数代替数据读取
Q.SQL.Text = "select cast(floor(RAND() * 6000) AS INT) as s1e1,cast(floor(RAND() * 6000) AS INT) as s1e2,cast(floor(RAND() * 6000) AS INT) as s1e3," +
"cast(floor(RAND() * 6000) AS INT) as s1e4,cast(floor(RAND() * 6000) AS INT) as s1e5,cast(floor(RAND() * 6000) AS INT) as s1e6," +
"cast(floor(RAND() * 6000) AS INT) as s1e7,cast(floor(RAND() * 6000) AS INT) as s1e8,cast(floor(RAND() * 6000) AS INT) as s1e9," +
"cast(floor(RAND() * 6000) AS INT) as s1e10,cast(floor(RAND() * 6000) AS INT) as s1e11,cast(floor(RAND() * 6000) AS INT) as s1e12," +
"cast(floor(RAND() * 6000) AS INT) as s2e1,cast(floor(RAND() * 6000) AS INT) as s2e2,cast(floor(RAND() * 6000) AS INT) as s2e3," +
"cast(floor(RAND() * 6000) AS INT) as s2e4,cast(floor(RAND() * 6000) AS INT) as s2e5,cast(floor(RAND() * 6000) AS INT) as s2e6," +
"cast(floor(RAND() * 6000) AS INT) as s2e7,cast(floor(RAND() * 6000) AS INT) as s2e8,cast(floor(RAND() * 6000) AS INT) as s2e9," +
"cast(floor(RAND() * 6000) AS INT) as s2e10,cast(floor(RAND() * 6000) AS INT) as s2e11,cast(floor(RAND() * 6000) AS INT) as s2e12";
Q.Open;
msg = "{" +
"\"username\": \"demo\"," + //WebSocket消息发送的目标用户
"\"action\": \"callback\"," + //WebSocket消息告知IsoBean执行的动作
"\"data\": {" +
"\"callbackcomponent\": \"dashboard-demo1\"," + //执行动作的目标组件名称
"\"callbackeventname\": \"updatechart6\"," + //执行触发OnAjaxEvent事件的 eventname(事件名称)
"\"callbackparams\": [" + //传输的键值,可以有一对或者多对
"{" +
"\"paramname\": \"dataChart6series1\"," +
"\"paramvalue\": \"" + QuotedStr(Q.FieldByName("s1e1").asString) + "," + QuotedStr(Q.FieldByName("s1e2").asString) + "," + QuotedStr(Q.FieldByName("s1e3").asString) + "," +
QuotedStr(Q.FieldByName("s1e4").asString) + "," + QuotedStr(Q.FieldByName("s1e5").asString) + "," + QuotedStr(Q.FieldByName("s1e6").asString) + "," +
QuotedStr(Q.FieldByName("s1e7").asString) + "," + QuotedStr(Q.FieldByName("s1e8").asString) + "," + QuotedStr(Q.FieldByName("s1e9").asString) + "," +
QuotedStr(Q.FieldByName("s1e10").asString) + "," + QuotedStr(Q.FieldByName("s1e11").asString) + "," + QuotedStr(Q.FieldByName("s1e12").asString) + "," +
"\"" +
"}," +
"{" +
"\"paramname\": \"dataChart6series2\"," +
"\"paramvalue\": \"" + QuotedStr(Q.FieldByName("s2e1").asString) + "," + QuotedStr(Q.FieldByName("s2e2").asString) + "," + QuotedStr(Q.FieldByName("s2e3").asString) + "," +
QuotedStr(Q.FieldByName("s2e4").asString) + "," + QuotedStr(Q.FieldByName("s2e5").asString) + "," + QuotedStr(Q.FieldByName("s2e6").asString) + "," +
QuotedStr(Q.FieldByName("s2e7").asString) + "," + QuotedStr(Q.FieldByName("s2e8").asString) + "," + QuotedStr(Q.FieldByName("s2e9").asString) + "," +
QuotedStr(Q.FieldByName("s2e10").asString) + "," + QuotedStr(Q.FieldByName("s2e11").asString) + "," + QuotedStr(Q.FieldByName("s2e12").asString) + "," +
"\"" +
"}" +
"]" +
"}" +
"}";
//注意,此处的"https://"根据访问的类型进行调整,如果使用http访问FastWeb,此处应改为"http://";如果使用https访问的,则此处应修改为"https://"
s = UGCM.NetHttpPost("http://"+RequestInfo.Host+"?restapi=sendwsmsg",msg);
return s;
}
//更新图表7
if (SameText(eventname,"updatechart7"))
{
//以随机数代替数据读取
Q.SQL.Text = "select cast(floor(RAND() * 50) AS INT) as s1,cast(floor(RAND() * 50) AS INT) as s2,cast(floor(RAND() * 50) AS INT) as s3," +
"cast(floor(RAND() * 50) AS INT) as s4,cast(floor(RAND() * 50) AS INT) as s5,cast(floor(RAND() * 50) AS INT) as s6," +
"cast(floor(RAND() * 50) AS INT) as s7,cast(floor(RAND() * 50) AS INT) as s8,cast(floor(RAND() * 50) AS INT) as s9," +
"cast(floor(RAND() * 50) AS INT) as s10,cast(floor(RAND() * 50) AS INT) as s11,cast(floor(RAND() * 50) AS INT) as s12";
Q.Open;
msg = "{" +
"\"username\": \"demo\"," + //WebSocket消息发送的目标用户
"\"action\": \"callback\"," + //WebSocket消息告知IsoBean执行的动作
"\"data\": {" +
"\"callbackcomponent\": \"dashboard-demo1\"," + //执行动作的目标组件名称
"\"callbackeventname\": \"updatechart7\"," + //执行触发OnAjaxEvent事件的 eventname(事件名称)
"\"callbackparams\": [" + //传输的键值,可以有一对或者多对
"{" +
"\"paramname\": \"dataChart7\"," +
"\"paramvalue\": \"" + Q.FieldByName("s1").asString + "," + Q.FieldByName("s2").asString + "," + Q.FieldByName("s3").asString + "," +
Q.FieldByName("s4").asString + "," + Q.FieldByName("s5").asString + "," + Q.FieldByName("s6").asString + "," +
Q.FieldByName("s7").asString + "," + Q.FieldByName("s8").asString + "," + Q.FieldByName("s9").asString + "," +
Q.FieldByName("s10").asString + "," + Q.FieldByName("s11").asString + "," + Q.FieldByName("s12").asString +
"\"" +
"}" +
"]" +
"}" +
"}";
//注意,此处的"https://"根据访问的类型进行调整,如果使用http访问FastWeb,此处应改为"http://";如果使用https访问的,则此处应修改为"https://"
s = UGCM.NetHttpPost("http://"+RequestInfo.Host+"?restapi=sendwsmsg",msg);
return s;
}
//更新图表8
if (SameText(eventname,"updatechart8"))
{
//以随机数代替数据读取
Q.SQL.Text = "select cast(floor(RAND() * 5000000) AS INT) as one,cast(floor(RAND() * 5000000) AS INT) as two,cast(floor(RAND() * 5000000) AS INT) as three," +
"cast(floor(RAND() * 5000000) AS INT) as four,cast(floor(RAND() * 5000000) AS INT) as five";
Q.Open;
msg = "{" +
"\"username\": \"demo\"," + //WebSocket消息发送的目标用户
"\"action\": \"callback\"," + //WebSocket消息告知IsoBean执行的动作
"\"data\": {" +
"\"callbackcomponent\": \"dashboard-demo1\"," + //执行动作的目标组件名称
"\"callbackeventname\": \"updatechart8\"," + //执行触发OnAjaxEvent事件的 eventname(事件名称)
"\"callbackparams\": [" + //传输的键值,可以有一对或者多对
"{" +
"\"paramname\": \"dataChart8\"," +
"\"paramvalue\": \"{value:" + Q.FieldByName("one").asString + ",name:'No.1'}," +
"{value:" + Q.FieldByName("two").asString + ",name:'No.2'}," +
"{value:" + Q.FieldByName("three").asString + ",name:'No.3'}," +
"{value:" + Q.FieldByName("four").asString + ",name:'No.4'}," +
"{value:" + Q.FieldByName("five").asString + ",name:'No.5'}" +
"\"" +
"}" +
"]" +
"}" +
"}";
//注意,此处的"https://"根据访问的类型进行调整,如果使用http访问FastWeb,此处应改为"http://";如果使用https访问的,则此处应修改为"https://"
s = UGCM.NetHttpPost("http://"+RequestInfo.Host+"?restapi=sendwsmsg",msg);
return s;
}
}
Finally{
Q.Free;
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
API设计完成后,首先点击 [保存]
图标按钮保存,然后点击 [测试]
按钮打开接口测试界面。

在接口测试的界面中,新建参数,名称为 eventname
,设置的参数值见图中的说明。设置完成后,点击关闭按钮关闭界面。
# 3. 发布IsoBean模块
保存后,返回列表界面,选择刚才创建的IsoBean模块,点击 [IsoBean发布]
,打开 IsoBean 发布的界面。

选择要发布的用户,点击 [IsoBean 选择...]
,从打开的IsoBean列表中选择IsoBean模块,双击导入至发布列表中,点击 [保存]
按钮,然后点击 [确定]
按钮关闭发布界面。
重新返回API设计界面,参考 战情型IsoBean 的预览链接,点击 [测试]
图标按钮,打开界面。点击 [Send]
按钮查看运行的结果。如果返回的结果中包含执行成功的说明,且对应的战情型IsoBean的标头的数据内容发生变化时,则IsoBean的内容发布成功。
按照本节开头的方式将IsoBean发布给其他用户,之后,可使用 http://localhost:8888/?isobean=IB_nb-pro-0001_process_dashboarddemo1&userkey={user_guid}&eventname={eventname} (opens new window) 来发送更新战情型IsoBean的更新请求。示例中指定了9种类型的更新方式,说明如下。
eventname 参数取值 | 说明 |
---|---|
eventname=updateheader | 更新标头的数据,如果此参数未进行指定,则使用此作为默认参数值进行更新 |
eventname=updatechart1 | 更新图表1的数据 |
eventname=updatechart2 | 更新图表2的数据 |
eventname=updatechart3 | 更新图表3的数据 |
eventname=updatechart4 | 更新图表4的数据 |
eventname=updatechart5 | 更新图表5的数据 |
eventname=updatechart6 | 更新图表6的数据 |
eventname=updatechart7 | 更新图表7的数据 |
eventname=updatechart8 | 更新图表8的数据 |