开源客户关系管理系统SplendidCRM下的二次开发
SplendidCRM是.net环境下比较优秀的开源客户关系管理系统。目前有关中文的资料比较少,在官方网站针对二次开发的内容也不多。结合网络中查到的相关资料和自己的实践,下面以一个新模块的开发过程为例,将SplendidCRM下的二次开发步骤及相关注意的地方描述如下,以供同行及感兴趣的参考。
1、 创建表,如需要定制字段,还要创建以_cstm结尾的表,如有多对多的关系,还要创建关系表。
表一般含有以下字段:ID(主键)、DELETED(是否删除标志)、CREATED_BY(创建人)、DATE_ENTERED(录入时间)、MODIFIED_USER_ID(修改用户的ID)、DATE_MODIFIED(修改时间)、ASSIGNED_USER_ID(指定的用户ID)、TEAM_ID(团队ID)。
_cstm一般含有以下字段:ID_C(主键)。
2、创建用于更新及删除数据的存储过程。
存储过程命名:sp模块名_Update、sp模块名_Delete。
然后调用_devtools/procedures.aspx可以自动产生调用存储过程的代码文件SqlProc.cs,此文件位于_code下,然后将此文件覆盖掉_code/DbLevel目录下的SqlProc.cs文件。
3、 创建视图:至少要包括核心视图、以_List和_Edit结尾的视图,视图一般以vw开头。
4、调用存储过程spMODULES_InsertOnly往系统中加入新模块信息。此存储过程参数说明:
Procedure dbo.spMODULES_InsertOnly
( @MODIFIED_USER_ID uniqueidentifier –修改有用户ID
, @MODULE_NAME nvarchar(25) –模块名称
, @DISPLAY_NAME nvarchar(50) --模块的显示名称,用术语来描述
, @RELATIVE_PATH nvarchar(50) --模块所处目录的相对路径
, @MODULE_ENABLED bit --是否启用此模块,也可以通过系统管理->工作室-> “配置模块”功能来改变此属性
, @TAB_ENABLED bit --是否在菜单上显示此模块,也可以通过系统管理->工作室-> “配置模块”功能来改变此属性
, @TAB_ORDER int --菜单上显示的次序,也可以通过系统管理->工作室-> “配置模块”功能来改变此属性
, @PORTAL_ENABLED bit –是否显示在门户的标志
, @CUSTOM_ENABLED bit --是否可以让使用者来定制字段(需要用以_cstm结尾的表)
, @REPORT_ENABLED bit –是否启用报表的标志
, @IMPORT_ENABLED bit -是否可以导入数据的标志
, @IS_ADMIN bit ----是否仅管理员使用标志
, @TABLE_NAME nvarchar(30) –模块对应的表名
)
5、调用存储过程spSHORTCUTS_InsertOnly创建快捷方式。或通过系统管理->工作室->管理捷径->创建快捷方式来创造快捷方式。此存储过程参数说明:
Procedure dbo.spSHORTCUTS_InsertOnly
( @MODIFIED_USER_ID uniqueidentifier --修改人的ID
, @MODULE_NAME nvarchar( 25) --模块名称
, @DISPLAY_NAME nvarchar(150) --显示名称,为术语名称
, @RELATIVE_PATH nvarchar(255) --快捷方式命令的相对路径
, @IMAGE_NAME nvarchar( 50) --图片的名称
, @SHORTCUT_ENABLED bit --是否启用的标志
, @SHORTCUT_ORDER int --快捷方式的显示次序
, @SHORTCUT_MODULE nvarchar( 25) --快捷方式权限控制的模块
, @SHORTCUT_ACLTYPE nvarchar(100) --权限的类型
)
6、调用存储过程spDYNAMIC_BUTTONS_CopyDefault创建动态按钮,需要调用二次分别创建EditView和DetailView的动态按钮。或通过系统管理->工作室->管理动态按钮->创建动态按钮来创造动态按钮。
一般需要调用以下语句:
exec dbo.spDYNAMIC_BUTTONS_CopyDefault '.EditView', ‘模块名.EditView', '模块名';
exec dbo.spDYNAMIC_BUTTONS_CopyDefault '.DetailView', '模块名.DetailView', '模块名';
此存储过程参数说明:
Procedure dbo.spDYNAMIC_BUTTONS_CopyDefault
( @SOURCE_VIEW_NAME nvarchar(50) –系统存在的默认的动态按钮名
, @NEW_VIEW_NAME nvarchar(50) –新的模块视图的名称
, @MODULE_NAME nvarchar(25) –模块名
)
7、创建列表的列的信息。
涉及到GRIDVIEWS与GRIDVIEWS_COLUMNS表。是主细表结构,插入列的信息与列的类型有关,分别调用spGRIDVIEWS_COLUMNS_InsBound、spGRIDVIEWS_COLUMNS_InsBoundDate、spGRIDVIEWS_COLUMNS_InsBoundList、spGRIDVIEWS_COLUMNS_InsField、spGRIDVIEWS_COLUMNS_InsHyperLink。这个可以通过界面来配置。
调用存储过程spGRIDVIEWS_InsertOnly创建列表的主表信息。
exec dbo.spGRIDVIEWS_InsertOnly '模块名.L名称istView', '模块名', '获取数据的视图(一般以_List结尾)';
然后调用系统管理->页面布局->网格的布局来创建列表的列的信息。
8、创建查看的列的信息。
涉及到三个表DETAILVIEWS、DETAILVIEWS_FIELDS、DETAILVIEWS_RELATIONSHIPS。一个主表,两个细表。一个是查看的列的信息表,一个是查看对象的关系表。列的信息根据类型不同,分别调用spDETAILVIEWS_FIELDS_InsBlank、spDETAILVIEWS_FIELDS_InsBound、spDETAILVIEWS_FIELDS_InsBoundList、spDETAILVIEWS_FIELDS_InsButton、spDETAILVIEWS_FIELDS_InsCheckBox、spDETAILVIEWS_FIELDS_InsertOnly、spDETAILVIEWS_FIELDS_InsHyperLink。
调用存储过程spDETAILVIEWS_InsertOnly插入查看的主表信息。
exec dbo.spDETAILVIEWS_InsertOnly '模块名.DetailView', '模块名', '获取数据的视图名称(一般以_Edit结尾)', '15%', '35%';
然后调用系统管理->页面布局->查看的布局来创建查看的列的信息。
9、创建编辑的列的信息。
涉及到两个表EDITVIEWS、EDITVIEWS_FIELDS。
调用存储过程spEDITVIEWS_InsertOnly插入编辑的主表信息。
exec dbo.spEDITVIEWS_InsertOnly '模块名.EditView', '模块名', ''获取数据的视图名称(一般以_Edit结尾)', '15%', '35%';
然后调用系统管理->页面布局->编辑的布局来创建编辑的列的信息。
10、在web site目录下创建模块的文件夹,将相似模块的文件夹下的文件拷贝到新的模块的文件夹下。重命名文件中的命名空间、文件及相关的类名。文件夹下的主要文件如下:
ListView.ascx 显示数据网格的控件。
DetailView.ascx显示数据的详细信息的控件。
EditView.ascx编辑数据的控件。
NewRecord.ascx创建新纪录的控件。
MassUpdate.ascx批量更新的控件。
必须要修改ListView.asc.cs、DetailView.ascx.cs、EditView.ascx.cs文件中InitializeComponent()、Page_Load()、Page_Command()函数中相应的地方,读一下代码就知道了。