# 六、应用
# (一)应用与应用模板
门户系统中,在组织机构管理、运营他们负责的地区时,业务应用将是管理者最经常关注的"数据集合体"。业务应用旨在将多种数据集中到一个屏幕中显示,让管理者们一目了然的掌握整体情况。
门户系统向组织管理者提供多种预设模板,通过不同模板它们可自由选择自身关心的数据对象,以此来适应不同的应用场景。
在CoreSDK中,业务应用由应用类[Application]表示,模板数据根据模板类型不同,分别由抽象类模板数据[ModelData]的具象化子类表示。如地图模板数据由地图模板数据[MapModelData]表示、通讯模板关联的数据由通讯模板数据[CommModelData]表示。更多模板类参见预设模板。
# (二)应用[Application]
应用[Application]的常用属性如下:
属性名 | 值类型 | 属性描述 |
---|---|---|
name | String | 应用名称 |
remark | String | 备注 |
model | Model | 应用模板基础信息 |
data | ModelData | 模板数据配置信息 |
mapConfig | MapConfig | 地图默认配置 |
themeColor | Color | 应用主题色 |
titleColor | Color | 应用标题色 |
isShowApp | boolean | 是否同步到移动端 |
isPublish | boolean | 是否发布 |
常用方法如下:(get/set方法略)
方法名 | 返回类型 | 方法描述 |
---|---|---|
- | - | - |
# 1、获取应用
初始化成功后,可直接从Cellsys的organization对象中获取应用。具体代码示例如下:
List<Application> applications = Cellsys.organization.getApplications();//applications可能为null
if (applications != null && applications.size() > 0) {
Application application = applications.get(0);
/*属性获取*/
String name = application.getName();//应用名称
String remark = application.getRemark();//备注
Color themeColor = application.getThemeColor();//应用主题色
Color titleColor = application.getTitleColor();//应用标题字体颜色
boolean isShowApp = application.isShowApp();//是否在移动端上展示
boolean isPublish = application.isPublish();//是否发布
/*地图配置*/
MapConfig mapConfig = application.getMapConfig();//地图默认配置
int zoom = mapConfig.defaultZoom;//默认缩放级别
MapPoint center = mapConfig.defaultCenter;//默认中心点
/*模板信息*/
Model model = application.getModel();//模板信息
String modelName = model.getName();//模板名称
ModelType modelType = model.getType();//模板类型
CommonInfo modelSetInfo = model.getModelSetInfo();//模板所属集合的简易信息
/*模板数据配置类*/
ModelData modelData = application.getData();//模板数据配置信息
/*模板数据类可根据模板枚举类型转化为具体子类*/
switch (model.getType()) {
case ReportModel:
ReportModelData reportModelData = (ReportModelData) modelData;
break;
case ProgressModel:
ProgressModelData progressModelData = (ProgressModelData) modelData;
break;
case CommModel:
CommModelData commModelData = (CommModelData) modelData;
break;
case EventModel:
EventModelData eventModelData = (EventModelData) modelData;
break;
case NotesModel:
NotesModelData notesModelData = (NotesModelData) modelData;
break;
case MapModel:
MapModelData mapModelData = (MapModelData) modelData;
break;
default:
//异常:未定义的模板类型
}
}
1
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
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
# 2、创建应用
/*应用的地图配置*/
MapPoint defaultCenter = new MapPoint(23.2123, 113.532612);//打开应用时地图界面的默认中心点
int defaultZoom = 17;//打开应用时地图界面的默认缩放级别
MapConfig mapConfig = new MapConfig(defaultCenter, defaultZoom);
/*颜色配置*/
Color themeColor = new Color(Ribbon.GeekBlue, RibbonLevel.L3);//主题色
Color titleColor = new Color(Ribbon.Gray, RibbonLevel.L9);//标题字体颜色
/*其他配置*/
boolean isShowApp = true;//是否在移动端展示
/*关键:模板数据类。想创建什么类型的模板应用,就使用对应的模板数据类。如想创建地图模板,就使用地图模板数据类*/
List<Group> groups = new ArrayList<>();
groups.add(group1);
groups.add(group2);
//...
List<Map> maps = new ArrayList<>();
maps.add(map1);
maps.add(map2);
//...
MapModelData modelData = new MapModelData(groups, maps);
Cellsys.organization.createApp("应用名称", "备注", modelData, mapConfig, themeColor, titleColor, isShowApp, new CsCallback<Application>() {
@Override
public void onSuccess(Application object) {
/*创建成功*/
}
@Override
public void onFailure(ErrorMessage errorMessage) {
/*失败*/
int code = errorMessage.getCode();//错误码
String errMsg = errorMessage.getMessage();//错误信息
}
});
1
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
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
# 3、修改应用
application.setName("修改应用名称");
application.setRemark("修改备注");
application.setTitleColor(new Color(Ribbon.GeekBlue, RibbonLevel.L3));
application.setThemeColor(new Color(Ribbon.GeekBlue, RibbonLevel.L3));
application.setShowApp(true);
/*修改应用的默认地图配置*/
MapPoint defaultCenter = new MapPoint(23.2123, 113.532612);//打开应用时地图界面的默认中心点
int defaultZoom = 17;//打开应用时地图界面的默认缩放级别
MapConfig mapConfig = new MapConfig(defaultCenter, defaultZoom);
application.setMapConfig(mapConfig);
/*修改模板数据*/
ModelData modelData = application.getData();//模板数据配置信息
//根据ModelData的type或Model的type来判断ModelData的具体类型。具体判断同上述“获取应用”的代码示例。这里我们以地图模板举例进行模板数据的修改
if (modelData instanceof MapModelData) {
((MapModelData) modelData).addMap(map);//给该应用多配置数个专题
((MapModelData) modelData).addMap(map2);//给该应用多配置数个专题
((MapModelData) modelData).removeGroup(group);//移除某个指定群组的配置
}
/*修改完毕后,调用update方法*/
Cellsys.organization.updateApp(application, new CsCallback() {
@Override
public void onSuccess(Object object) {
/*成功,修改后的结果已同步到原参数application对象中*/
String name = application.getName();
//......
}
@Override
public void onFailure(ErrorMessage errorMessage) {
/*失败*/
int code = errorMessage.getCode();//错误码
String errMsg = errorMessage.getMessage();//错误信息
}
});
1
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
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
# 4、删除应用
Cellsys.organization.deleteApp(application, new CsCallback() {
@Override
public void onSuccess(Object object) {
/*成功*/
}
@Override
public void onFailure(ErrorMessage errorMessage) {
/*失败*/
int code = errorMessage.getCode();//错误码
String errMsg = errorMessage.getMessage();//错误信息
}
});
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
# (三)预设模板
# 1、预设模板总览
CoreSDK目前提供了以下预设模板(将会陆续追加):
- 地图模板
- 通讯模板
- 事件模板
- 随手记模板
- 进度模板
- 报告模板
# 2、模板数据类配置示例
# (1)地图模板数据类[MapModelData]
可自由配置专题、群组两种数据。
/*新建地图模板*/
List<Group> groups = new ArrayList<>();
groups.add(group1);
groups.add(group2);
//...
List<Map> maps = new ArrayList<>();
maps.add(map1);
maps.add(map2);
//...
MapModelData mapModelData = new MapModelData(groups, maps);//地图模板数据主要有群组与专题数据构成
/*修改模板数据配置*/
mapModelData.removeGroup(group1);//移除单个群组关联
mapModelData.addGroup(group2);//新增单个群组关联
mapModelData.setGroups(groups);//重新设置群组关联(之前的关联全部清除)
mapModelData.removeMap(map1);
mapModelData.addMap(map2);
mapModelData.setMaps(maps);//同上
/*获取模板数据
* 可从mapModelData获取到关联的群组、专题的具体对象*/
List<Group> groups1 = mapModelData.getGroup();
List<Map> maps1 = mapModelData.getMap();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# (2)通讯模板数据类[CommModelData]
可自由配置群组数据。
/*新建*/
List<Group> groups = new ArrayList<>();
groups.add(group1);
groups.add(group2);
CommModelData commModelData = new CommModelData(groups);
/*修改*/
commModelData.setGroups(groups);
/*查询*/
List<Group> groups1 = commModelData.getGroup();
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# (3)事件模板数据类[EventModelData]
可自由配置事件数据。
注:有部分模板在数据类型的配置上是一样的,但它们在界面呈现、使用场景上是有所区别的。例如:事件模板、随手记模板、进度模板等都是以事件为主的应用模板,但使用场景与界面呈现会有不同。
/*新建*/
List<EventSet> eventSets = new ArrayList<>();
eventSets.add(eventSet1);
eventSets.add(eventSet2);
EventModelData eventModelData = new EventModelData(eventSets);
/*修改*/
eventModelData.setEvents(eventSets);
/*获取/查询关联数据*/
List<EventSet> eventSets1 = eventModelData.getEventSets();
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# (4)随手记模板数据类[NotesModelData]
可自由配置事件数据。
/*新建*/
List<EventSet> eventSets = new ArrayList<>();
eventSets.add(eventSet1);
eventSets.add(eventSet2);
NotesModelData notesModelData = new NotesModelData(eventSets);
/*修改*/
notesModelData.setEvents(eventSets);
/*获取/查询关联数据*/
List<EventSet> eventSets1 = notesModelData.getEventSets();
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# (5)进度模板数据类[ProgressModelData]
可自由配置事件数据。
/*新建*/
List<EventSet> eventSets = new ArrayList<>();
eventSets.add(eventSet1);
eventSets.add(eventSet2);
ProgressModelData progressModelData = new ProgressModelData(eventSets);
/*修改*/
progressModelData.setEvents(eventSets);
/*获取/查询关联数据*/
List<EventSet> eventSets1 = progressModelData.getEventSets();
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# (6)报告模板数据类[ReportModelData]
可自由配置事件数据。
/*新增与修改*/
List<Long> eventIds = new ArrayList<>();
ReportModelData reportModelData = new ReportModelData();
reportModelData.setEventIds(eventIds);
reportModelData.setImgAlign(AlignType.Center);
reportModelData.setTextAlign(AlignType.Center);
reportModelData.setReportName("报告名称");
reportModelData.setShowEventName(true);
/*查询关联事件*/
reportModelData.queryEvents(new CsCallback<QueryResult<EventFeature>>() {
@Override
public void onSuccess(QueryResult<EventFeature> object) {
/*分页信息-查询方法特有*/
PageInfo pageInfo = object.pageInfo;//查询接口特有的分页信息
int totalCount = pageInfo.totalCount;//数据总数
int totalPage = pageInfo.totalPage;//总页数
int pageNo = pageInfo.pageNo;//当前页码(从1开始)
int pageSize = pageInfo.pageSize;//每页查询数量(注意!不一定和当前查询的数据总量匹配)
/*获取查询结果*/
List<EventFeature> eventFeatures = object.data;//查询结果可能为null
}
@Override
public void onFailure(ErrorMessage errorMessage) {
/*失败*/
int code = errorMessage.getCode();//错误码
String errMsg = errorMessage.getMessage();//错误信息
}
});
1
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
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