晓鸥 的个人资料Single Running照片日志列表 工具 帮助

日志


2月12日

金山海事案例小结

1、通过AS Matrix平台的面向对象化开发,效率十分高。需求分析出大约需要逻辑上50多个表单,实际消耗单人3个工作日即可完成表单的开发工作。表单具备了基本的查询、新增、修改、删除以及权限分配。

2、方法配置依然低效。方法无法与表单的逻辑层开发那么迅速,还是依靠快速的存储过程比较方便。事实上,通过写存储过程然后再逻辑层调用的方式,比我们配置一个完成同样工作的方法要更高效。但是,如果这个方法是需要派生的,则逻辑层配置明显具备优势。由此可见,如果是抽象成的方法在派生类中需要重载,那么还是在逻辑层比较合适。如果是复杂的运算并修改数据,则存储过程有优势。

3、插件化新体验。本次的海图模块,就是作为平台本身的一个插件开发的。完成各种需要的功能,通过插件的开发,更完善了平台本身对于插件的设计和开发工作。

4、测试工作的缺失,本次案例中,多次出现提交给用户的版本存在各种系统错误。这个完全是因为我们的测试不够充分的原因。另外,开发过程中的版本管理混乱,也给我们的测试工作带来不小的麻烦。

5、关键用户的作用很大。海事处指派一个年轻有责任心,并且熟悉业务的用户,作为对口的关键用户。通过关键用户,我们可以更加直接的获取业务知识,并且对需求有更准确的把握。同时,在测试工作中,关键用户的反复使用,也免却了我对每个用户的操作培训的工作,关键用户完全可以在后期替代我们去教其他用户操作。

6、第三方合作的模式也可以作为今后的发展方向。我们团队目前更擅长技术部分,也就是开发,以及后续的升级工作。而技术以外的沟通,不是我们的强项,通过这次的合作,感觉到但技术以外的工作被合理分配到合作人手里后,我们虽然少了很多的主动性,但也免去了很多的不擅长不必要的非技术工作。可以更加集中精神完成需求。事实上,我们应该考虑这样的合作模式可以固定化,经常化,并且规范化。

7、工作计划的缺失,导致我们的实施变得很“土八路”,缺少正规军的风范。正规军的做法也许很教条,很冗余。但是,计划的详细,步骤的明确,确实可以让整个案例(项目)进行的更加顺利。本次没有详细的工作计划,导致更多的随意性,以至于我们本来应该及时完成的工作没有及时完成。

8、貌似会开车很重要。由于客户的位置离开我们有18公里,而我们不会开车,所以几次都需要合作人开车送我们过去。如果会开车,貌似自己借一个车开过去也会很方便。免去很多公交的浪费时间,也免去受到交通制约。

 

------------------------------------------------------------------------------------

2月5日

金山海事修正需求05

今天再次修正,根据新需求,日报告是从昨日的8点到今日8点的统计。

1、将所有需要统计的表单日期改为datetime类型,方便进行统计。

2、修改日报生成的存储过程,主要增加

,@dt1 datetime
,@dt2 datetime

SET @dt1=dateadd(hour,8,@crdate)
SET @dt2=dateadd(hour,8,@Today)

这样就都是早点8点了。

然后修改where子句

CRDAT=@crdate)替换为( CRDAT>=@dt1 AND CRDAT<@dt2 )

最后,修改insert语句,插入新记录的时候改用@Today参数。

3、修改日报生成的任务,修改为每日早上7点50分执行该任务,考虑海事处每日早上8点开会,因此有10分钟供用户进行统计汇总报告,比较合理。

----------------------------------------------------------------------------------

经过测试,该存储过程可以使用,现在需要拼接数据,将原有分离的日期和时间,整合在一起,通过3条update实现:

update dbo.M_REGISTER
set CRDAT=dateadd(hour,datepart(hour,crtim),crdat)

update dbo.M_REGISTER
set CRDAT=dateadd(minute,datepart(minute,crtim),crdat)

update dbo.M_REGISTER
set CRDAT=dateadd(second,datepart(second,crtim),crdat)

分别增加时 分 秒,完成这样的拼接

-----------------------------------------------------------------------------------

现在的任务是进行集成测试,主要测试新版本的海图是否稳定,如果不稳定,则仅仅提供稳定版本,只是修改元知识的而已。

2月4日

金山海事开发04

完成了一些小需求的调整和修改,重点还是在船舶的图形移动问题上。

1、修正了船舶航行报告中对船舶当前位置报告的更新代码。

2、增加船舶类型主数据表,船舶类型为下拉选择。

3、增加船舶离港操作按钮button,逻辑层为一个方法,调用存储过程。

用户需要输入:出口、航速、目标港口等参数,即可更新船舶当前数据,在图形中船舶即可开始从指定的出口滑行移动。

4、增加灯标的主数据表,更新了数据字典目录的层次结构,把类别和固件进行分离。

---------------------------------------------------------------------------------

现在需要对灯标图标进行绘制,以求美观。

image

这个鸟是从红警3中截图出来的,感觉不错,就用上了。

image

点击“离港”

image

输入出口,出口位置可以作为主数据进行更新配置,这个后说了。

执行方法后,得到如下结果:

image

通过存储过程,更新了船舶数据,船舶的目标就成为区域外的经纬度,在海图中就会慢慢的离开了哦。

image

嘿嘿,这个鸟就在航线上动发动发的。

----------------------------------------------------------------------------------

12月11日

金山海事处信息平台开发03

今天完成了所有元知识的导入工作,开始进行物理层的工作。

发现导入后PHNAME和CAPTION位置对换了,于是在元知识中,得把做反的PHNAME搞回来。原来打算恢复一下数据库,结果在网络上找到了那么一句SQL命令,一试大爽,哈哈。

update [JinshanMaritime].[dbo].[DEF_F]
      set [PHNAME] = CAPTION,
            CAPTION = [PHNAME]
  where PHNAME like   N'%[啊-座]%' 

对,就是这么简单的把中文字符的PHNAME和英文字符的CAPTION置换位置了,呼呼。

------------------------------------------------------------------------------------

完成了物理表的构建,以及派生继承,现在就是要对针对具体的派生类关闭或者打开具体的字段以满足派生类的个性。

然后是针对各个派生类进行对应的六个主数据表的外键关系建立,FK_GROUP的做法,我都快忘记了,哈哈。还好,曾经,貌似有自己写的配置手册,结果这个手册本来是用来教别人的,现在正好自己教自己一把把。

------------------------------------------------------------------------------------

争取今天晚上9点之前完成外键关系,以及派生类的个性化,导航树的建立。这样基本就搞定了。

那么从周一开始算,一共4个工作日,就完成了这些表的从需求到基本维护的工作。

12月9日

金山海事处信息平台开发02

今天基本确定了大部分表单的结构,并且设计了继承派生的层次结构。

表单名: 签证  
逻辑名 名称 物理名
MariVisa 海事签证 M_VISA

分别派生出如下几个签证类别:

Category 枚举 VisaCat
1 进口签证 vcIn
2 出口签证 vcOut
3 定期签证 vcRegular
4 船舶报港 vcShip
5 国际船舶进口 vcInterShipIn
6 国际船舶出口 vcInterShipOut
7 海事签证 vcMaritime

-------------------------------------------------------------------------------

逻辑名 名称 物理名
MariRegister 海事申报 M_REGISTER

申报类,派生船/货申报:

类别: RegCategory 申报类别
1 货申报 rcCargo
2 船申报 rcShip

-------------------------------------------------------------------------------

表名: 许可  
逻辑名 名称 物理名
MariPermission 海事许可 M_PERMISSION

海事许可分派生出:

1 安全作业报备 pcSecure
2 使用化学消油剂许可 pcOilSpill
3 舷外拷铲及油漆作业许可 pcPaint
4 冲洗甲板许可 pcWashDeck
5 危险货物水上过驳作业许可 pcDangerCargo
6 残油签证 pcRemOil
7 三水排放作业 pcPour

另外,水上水下施工作业许可比较特殊,因此没有做派生类,而是直接做一个独立的表。

------------------------------------------------------------------------------

安全检查    
逻辑名 名称 物理名 类型
SecureCheck 安全检查 M_SECURE 普通表

派生为:

类别: CheckCategory 检查类别
1 船舶安全检查 ckcShip
2 外国籍船舶PSC检查 ckcPSC
3 水工作业安全检查 ckcWaterJob
4 船舶防污染检查 ckcPolution
5 船舶围油栏布设检查 ckcOilEnclousure
6 液货船过驳检查 ckcLiqShip

-----------------------------------------------------------------------------

表名 巡航  
逻辑名 名称 物理名
MaritimeCruise 海事巡航 M_CRUISE

无派生类。

-----------------------------------------------------------------------------

表名 海事调查  
逻辑名 名称 物理名
MaritimeInvestigation 海事调查 M_INVESTIGATION

无派生类

-----------------------------------------------------------------------------

表名 船舶护航  
逻辑名 名称 物理名
ShipEscort 船舶护航 M_ESCORT

无派生类

-----------------------------------------------------------------------------

表名 船舶通航指挥  
逻辑名 名称 物理名
NavigateCommand 船舶通航指挥 M_NAVCOMMAND

 

表名 船舶航行安全信息播发  
逻辑名 名称 物理名
NavigateBroadcast 船舶航行安全信息播发 M_BROADCAST

无派生类

----------------------------------------------------------------------------

主数据表,如果确认结果相对简单,就采用统一格式,派生若干字典表即可:

主数据表      
逻辑名 名称 物理名 类型
MetaData 主数据表 M_METADATA 普通表
       
逻辑名 所属结构 物理名 标签
ID   ID ID
CODE   CODE 代码
CAPTION   CAPTION 名称
CATEGORY   CATEGORY 类别
       
Category 类别    
1 Berth 泊位  
2 Agency 代理单位  
3 Company 企业/公司/单位  
4 CargoType 货物类别  
5 PourType 排放作业类别  
6 PourPostion 排放地点  

-----------------------------------------------------------------------------

后续任务:

1、确认主数据表格式;

2、创建各个表单的元知识信息;

3、批导入元知识,生成表单;

4、将表单中外键字段与主数据表进行关系创建;

5、批导入若干测试数据;

------------------------------------------------------------------------------

本次数据库为SQL Server 2000,数据库名为“金山海事”

image

12月7日

金山海事处信息平台开发01

今日开始全面进行金山海事处的工作任务。

1、配置数据库,准备功能树;

2、设计所有已经确认的表单的格式,字段;

3、设计主数据表;

-----------------------------------------------------------------------------------

名称 上层功能 编码
金山海事   11
政务受理 金山海事 111
船舶签证 政务受理 1111
进口签证 船舶签证 11111
出口签证 船舶签证 11112
定期签证 船舶签证 11113
船舶报港 船舶签证 11114
国际船舶进口岸 船舶签证 11115
国际船舶出口岸 船舶签证 11116
海事签证 船舶签证 11117
船货申报 政务受理 1112
货申报 船货申报 11121
船申报 船货申报 11122
许可类 政务受理 1113
残油签证 许可类 11131
三水排放作业许可 许可类 11132
水上水下施工作业许可 许可类 11133
安全作业报备 许可类 11134
使用化学消油剂许可 许可类 11135
舷外拷铲及油漆作业许可 许可类 11136
冲洗甲板许可 许可类 11137
危险货物水上过驳作业许可 许可类 11138
违章处理 金山海事 112
船舶管理 金山海事 113
船舶安全检查 船舶管理 1131
外国籍船舶PSC检查 船舶管理 1132
     
通航管理 金山海事 114
巡航 通航管理 1141
海事调查 通航管理 1142
船舶护航 通航管理 1143
船舶通航指挥 通航管理 1144
船舶航行安全信息播发 通航管理 1145
水工作业安全检查 通航管理 1146
     
     
     
危防管理 金山海事 115
船舶防污染检查 危防管理 1151
船舶围油栏布设检查 危防管理 1152
液货船过驳检查 危防管理 1153
     
应急反应 金山海事 116
专项行动 金山海事 117
海事督查 金山海事 118
锚地船舶 金山海事 119
     
数据字典 金山海事 11D
泊位 数据字典 11D1
检查地点 数据字典 11D2
作业类别 数据字典 11D3
签证种类 数据字典 11D4
船舶检查地点 数据字典 11D5
三水排放地点 数据字典 11D6
国际船舶代理单位 数据字典 11D7
货/船申报代理 数据字典 11D8
三水排放申请单位 数据字典 11D9

-------------------------------------------------------------------------------------

功能树目录基本确定如上表格。

现在针对已经确认的数据表单进行开发和配置。通过分析,基本可以抽象为如下几类:

1、签证类:日期、时间、船舶、泊位、港口、单位、备注、货物、数量、备注;

2、许可类:日期、时间、船舶、泊位、申请人/单位、开始时间、结束时间、备注;

3、检查类:日期、记录时间、船舶、泊位、检查类别、检查地点、检查结果、检查人员、备注;

4、主数据:编码、类别、名称、备注;

-------------------------------------------------------------------------------------

具体任务:

1、完成主数据表;

2、完成表单的继承派生关系,以及表的详细设计。