Flex_Viewer编程实战教程:从入门到精通

需积分: 9 0 下载量 121 浏览量 更新于2024-07-28 收藏 3.29MB DOC 举报
"Flex_Viewer编程的详细图解教程" 本教程面向使用SampleFlexViewer框架开发基于Flex的ArcGIS API应用程序的开发人员,提供了一步一步的详细指导。以下是关键知识点的概述: 1. **准备知识** - **技能与软件需求**: 开发者需要具备Flex编程基础,熟悉ActionScript语言,以及对GIS和ArcGIS API有一定的理解。此外,开发环境要求包括Adobe Flex Builder、Flex SDK以及ArcGIS Server的安装和配置。 2. **SampleFlexViewer架构** - **架构介绍**: SampleFlexViewer是一个可扩展的GIS应用程序框架,它允许开发者添加自定义的Widget来增强功能。 - **生命周期**: 深入理解SampleFlexViewer实例的生命周期有助于优化Widget的性能和交互性。 - **容器**: SampleFlexViewer包含一系列Widget容器,这些容器负责管理和展示Widgets。 3. **Widget开发** - **编程模型**: Widget是SampleFlexViewer的核心组件,遵循特定的编程模型,使得它们能够与地图和其他Widgets进行交互。 - **命名习惯**: 遵循统一的Widget命名规则,有利于代码的组织和维护。 - **创建项目**: 使用Flex Builder创建项目,可以是嵌入在SampleFlexViewer项目内,也可以独立开发然后集成。 4. **开发Widget** - **使用WidgetTemplate模板**: 提供了预定义的模板,简化了Widget的开发流程。 - **获取地图信息**: Widget可以访问并利用地图服务,如图层信息、地图坐标等。 - **显示数据**: 在地图上呈现Widget的数据,可以是图形、标注或其他可视化元素。 - **接收地图数据**: 通过监听地图事件(如点击、绘制)来获取用户交互数据。 - **控制导航**: Widget能够控制地图的平移、缩放等导航操作。 - **不使用模板开发**: 对于更复杂的Widget,可以直接编写自定义代码而不依赖预设模板。 - **开发自定义Widget模板**: 如果需要独特布局或功能,可以创建新的Widget模板。 - **修改或创建主题**: 改变Widget的外观和风格,适应不同的应用需求。 - **Widget配置**: 设置Widget的属性和行为,可以通过配置XML文件来实现。 5. **SampleFlexViewer核心代码** - **事件总线容器**: 事件驱动设计,使得不同组件之间能通过事件进行通信。 - **依赖注入 (DI)**: 控制反转机制,用于管理组件间的依赖关系,提高代码可测试性和可维护性。 - **国际化**: 实现Widget的多语言支持,包括使用Flex的内置国际化特性及本地化设置。 6. **部署与安全性** - **部署**: 学习如何部署SampleFlexViewer应用程序和单独的Widgets到目标服务器。 - **安全性考虑**: 考虑跨域策略(crossdomain.xml)和网络资源代理(Network Resource Proxy),确保跨域请求的安全和有效。 7. **Configuration XML** - **附录A**: 提供了关于配置XML文件的详细信息,这是控制SampleFlexViewer行为和Widget配置的关键文件。 通过这个教程,开发者将能够熟练地利用SampleFlexViewer构建富交互性的GIS应用,并且能够自定义和扩展其功能,以满足特定项目的需求。

以hive的角度检查语法: with cur_dim_comb as (SELECT DISTINCT t.dim_comb ,t.var_sub_class ,t.acc_value FROM gerp.cux_cst_data_alloc_his t WHERE t.top_var_type = '10' AND t.job_ver_id in (SELECT ver.job_ver_id AS p_job_ver_id FROM gerp.cux_cst_dist_jobs_all job INNER JOIN gerp.cux_cst_dist_jobs_vers_all ver ON job.job_id = ver.job_id )) select tp.bd_code --事业部编码 ,tp.bd_name --事业部名称 ,hp.ou_code --OU名称 ,hp.ou_name --OU编码 ,op.main_class_desc --差异大类 ,op.acc_value --科目代码 ,op.acc_desc --科目名称 ,op.dim_comb --区分维度 ,op.begin_amount --期初余额 ,op.accrual_amount --本期发生 ,op.balance_diff_alloc_amount --期末差异结存 ,op.var_sub_class ,op.main_class_value ,op.org_id ,op.period_name ,op.job_ver_id from (select up.* ,q1.* from (SELECT DISTINCT maincl.* ,t.* FROM t inner join (SELECT fv.flex_value ,fv.description FROM fv inner join fs on fv.flex_value_set_id = fs.flex_value_set_id AND fs.flex_value_set_name = 'CUX_CST_VARIANCE_TYPE' AND fv.enabled_flag = 'Y' AND fv.hierarchy_level = '2' AND fv.flex_value LIKE '10%' ) maincl on t.var_main_class = maincl.flex_value inner join cur_dim_comb on cur_dim_comb.var_sub_class = t.var_sub_class and cur_dim_comb.acc_value = t.acc_value WHERE 1 = 1 AND t.top_var_type = '10' AND t.job_ver_id in (SELECT ver.job_ver_id AS p_job_ver_id FROM gerp.cux_cst_dist_jobs_all job INNER JOIN gerp.cux_cst_dist_jobs_vers_all ver ON job.job_id = ver.job_id) ORDER BY maincl.description ,t.acc_value ,cur_dim_comb.dim_comb ) up inner join (SELECT t1.* ,SUM(t1.begin_amount) begin_amount ,SUM(t1.accrual_amount) accrual_amount ,SUM(t1.balance_diff_alloc_amount) balance_diff_alloc_amount FROM gerp.cux_cst_data_alloc_his t1 LEFT JOIN gerp.cux_cst_data_alloc_his t ON t1.top_var_type = '10' AND t1.var_sub_class = t.var_sub_class --p_var_sub_class AND t1.org_id = t.org_id --p_org_id AND t1.period_name = t.period_name --p_period_name AND t1.job_ver_id = t.job_ver_id --p_job_ver_id AND t1.acc_value = t.acc_value --p_acc_value WHERE t1.dim_comb in (select distinct dim_comb from cur_dim_comb) group by t1.org_id,t1.period_name,t1.job_ver_id,t1.var_sub_class,t1.acc_value ) q1 on q1.org_id = up.org_id --p_org_id AND q1.period_name = up.period_name --p_period_name AND q1.job_ver_id = up.job_ver_id --p_job_ver_id AND q1.var_sub_class = up.var_sub_class --p_var_sub_class AND q1.acc_value = up.acc_value --p_acc_value ) op

2023-05-26 上传