二次开发文档
- 格式:docx
- 大小:22.91 KB
- 文档页数:11
需求文档编写指南一份好的需求文档不仅可以使二次开发效果达到需求方预期的功能,还可以加快开发速度。
需求文档理应包括的信息:1.目前网站的版本号,如ShopEx 4.8.5;2.安装了哪些插件,做了哪些改动,为了详细了解需要提供ftp或者源码;3.请我们开发的功能图文描述。
下面给出三个描述开发功能图文需求例子,以作参考。
A.仿其他网站功能1.给出要仿的网站网址2.需要仿的功能截图例如:购物车添加删除按钮的功能需求,图文描述如下鼠标移到购物车文字上下方弹出购物车详细信息,如图所示这样简短的介绍,技术员就一清二楚了~B.在原有网站基础上新增修改功能(原始文档参考/9Xlt5A)1.需要改动界面的链接2.需要改动的界面详细介绍如忘记密码,手机短信取回密码功能描述用户点击忘记密码按钮后,如果填入手机号,则显示红色提示,替换方框内的文字填写完成信息后点击提交如果之前填写的是手机取回,则提示短信已经发送C.大改动的开发(原始文档参考下载链接/AxYCgo)需求是修改运费计算系统,该客户是家具厂自销模式,家具一般国内是通过体积重量来计费的。
首先用户提供了体积重量如何计算的公式介绍体积重量(kg)的计算方法为:长度(cm) x 宽度(cm) x 高度(cm) ÷ 6,000(如快件一般是以陆路运输, 其体积重量会以除数 12,000计算。
计算方法都是按地区及市场惯例决定, 当中可能各有差异。
)/cn/sc/delivery_step/enquiry/rate_enquiry.html根据计算公式可知,每个商品必须拥有长宽高体积重量等信息,作为计算运费的初始数据。
配送方式的界面需有填写运费单价的功能,与原系统计费单价区分。
下单运费显示页面显示出详细的包装信息给客户查看,展示运费是如何计算出来的最后犹豫计费方式复杂涉及到最优包装的选取还需写一个具体的计费例子/BhBHWa总而言之就是具体的图文描述加上耐心,认真的写需求文档,耐心的回复技术员的疑问,相信开发出来的功能一定会让您满意的。
二次开发报告模板篇一:二次开发合同拟稿二次开发合同甲方(盖章):乙方(盖章):授权代表签字:日期:年月日授权代表签字:日期:年月日附注:1、请加盖骑缝章,否则视为合同未签署或生效。
2、甲乙双方的签字代表应为法定代表人或授权代表。
一、项目要求1、项目名称:2、开发内容:3、技术指标二、成果交付1、研究开发成果交付的内容:1.1 文档:1.2 软件产品:2、交付形式、数量2.1 文档:电子文档份,纸质文档份。
2.2 软件产品:以当面形式提交正式软件,原件份。
3、研究开发成果交付的时间:乙方于本合同签订生效后将研究开发成果交付至交货地点。
4、研究开发成果交付的地点:。
三、系统验收1、系统安装调试完毕后,由甲方组织进行一次系统测试,测试通过后出具测试报告,同时进行系统验收,由双方授权代表确认签署《软件二次开发验收单》,乙方同时提供相关成果交付物。
2、如系统最终验收不合格,则乙方应在甲乙双方共同确认的工作日内修改完毕,并经甲方签字确认后验收合格,若甲方验收仍未通过,则按乙方违约责任处理。
四、服务费用与付款方式1、二次开发服务费用的计价方式:二次开发服务费用= 。
2、本项目二次开发服务费用:人*天,即元,大写:元整。
3、付款方式:3.1甲方于本合同生效之日起的个工作日内,向乙方支付本合同总费用的%,即元,大写:。
3.2在甲乙双方签字确认,乙方依据甲方开发需求完成附件一中的所有开发项目并通过甲方测试验收之日起的个工作日内,甲方向乙方支付本合同项下费用的%,即人民币元整,大写:元整。
3.3在甲乙双方签字确认,乙方完成本合同约定的所有开发项目并由甲方实际无问题运行个工作日后即通过项目总体验收。
通过项目总体验收之日起的个工作日内,甲方向乙方支付本合同项下全部费用的%,即人民币元整,大写:元整。
3.4经乙方增值研发部门评估,以上的工作内容的实际开发量为人*天,经甲乙双方相互协调,及考虑到甲乙双方多次合作的情况下,将费用折扣为以上价格,乙方增值开发部门开发计划仍以天的工作内容安排。
ShopExV4.8二次开发技术文档一、开发需求:ShopExV4.8网店系统是一套基于网上快速建店的标准化B2C电子商务系统。
系统集成了最基本最普通最常用的电子商务运作流程及使用功能,可以满足正常的开店需求。
定制可以根据客户的需求对网站进行相应功能的添加修改或者删除,同时定制也存在一定的弊端。
ShopExV4.8以前版本的定制是在原来的程序上修改的所以定制过的网站就不能使用该版本后发布的相关补丁。
ShopExV4.8版本采用MVC开发模式,二次开发解决了定制在原程序上进行修改导致程序不能升级的问题,使新的程序模块可以很好的融合到ShopExV4.8系统中同时也可以继承原有程序的所有功能。
二、技术描述:本着不与原程序冲突的原则,需要新建一个目录去存放二次开发所用的程序,这就要求在ShopExV4.8的配置文件中定义一个存放二次开发程序目录的常量。
同时为了使二次开发程序能够兼容原程序的所有功能也要求要包含原来的控制器文件或模型层文件,通过类继承和函数重载的方式实现原有功能的保留、修改和新功能的开发,当然如果该功能完全与原有功能没有联系则只需继承控制器文件或模型层文件的基类。
三、流程说明:1、配置config.php文件:define(‘CUSTOM_CORE_DIR’,’自定义文件路径’)[自定义文件路径建议和core同级]2、后台菜单新增规则(customSchema.php):格式参照原有后台菜单文件的书写格式但数组名必须为$cusmenu①、新增菜单项此处格式参照adminSchema.php即可,数组名称注意应为$cusmenu②、在已有菜单项中添加根据菜单出现的位置添加不同的参数如在“统计报表”下新增二级菜单“测试二次开发”$cusmenu['analytics']=array('items'=>array(array('type'=>'group','label'=>'测试二次开发','position'=>'after|begin|end|before','reference'=>'访问统计','items'=>array(array('type'=>'menu','label'=>'测试二次开发1','link'=>'index.php?ctl=vip/vote&act=index'),array('type'=>'menu','label'=>'测试二次开发2','link'=>'index.php?ctl=vip/vote&act=index')))));position值及说明:I、after:在某个菜单项的后面,此时reference必须为一个同级已存在的菜单项。
二次开发方案范文二次开发是指对已有软件或系统进行二次开发或功能扩展的过程。
在进行二次开发之前,首先需要明确开发的目标和需求,然后选择适合的开发平台和工具,制定详细的开发计划和任务,最后进行开发和测试工作。
下面是一个关于二次开发方案的具体内容,包括目标和需求分析、平台和工具选择、开发计划和任务制定、开发和测试工作。
一、目标和需求分析在进行二次开发之前,需要明确开发的目标和需求,确保开发的方向明确,确保二次开发能够满足用户的需求。
在目标和需求分析阶段,需要与用户进行充分的沟通和交流,以了解他们的需求和期望。
二、平台和工具选择在选择平台和工具时,需要考虑以下几个方面:1. 开发语言:根据项目需求和开发人员的技术背景选择合适的开发语言,常用的开发语言有Java、C#、Python等。
3. 数据库:根据项目需求选择合适的数据库,常用的数据库有MySQL、Oracle等。
4. 开发工具:选择合适的开发工具能够提高开发效率,例如Eclipse、Visual Studio等。
三、开发计划和任务制定在确定了目标和需求以及选择了合适的平台和工具后,需要制定详细的开发计划和任务,包括开发的阶段、时间和人力资源的分配等。
在制定开发计划和任务时,需要充分考虑项目的复杂度和开发人员的技术水平,确保开发进度和质量。
四、开发和测试工作在进行开发和测试工作时,需要按照开发计划和任务进行组织和安排,充分利用已有的资源和工具,以确保开发的进度和质量。
开发过程中需要遵循良好的开发规范和设计原则,编写高质量的代码和文档,进行充分的测试和调试工作,以确保开发的质量和可靠性。
五、验收和部署在开发完成后,需要进行验收和部署工作。
验收工作主要是对开发的软件或系统进行功能和性能测试,以确保满足用户的需求。
部署工作主要是将开发的软件或系统部署到生产环境中,确保能够正常运行和使用。
总结:二次开发是对已有软件或系统进行二次开发或功能扩展的过程,需要明确目标和需求,选择合适的开发平台和工具,制定详细的开发计划和任务,进行开发和测试工作,最后进行验收和部署。
项目二次开发源代码及详细说明I. 项目介绍本文档描述了一个二次开发项目的源代码及详细说明。
该项目是基于一个开源的企业资源管理系统进行二次开发,以满足特定客户的需求。
原始系统功能包括客户关系管理、订单管理、库存管理等,但客户需要在原始系统的基础上增加一些新的功能,比如业务报表的定制、权限管理的优化等。
为了满足客户的需求,我们需要对原系统进行二次开发,修改和添加一些功能,以适应客户的特定业务需求。
II. 项目目标1. 通过二次开发,实现客户需求的定制化功能,并满足特定的业务需求。
2. 优化原系统的权限管理模块,增强系统的安全性和稳定性。
3. 重构原系统的报表模块,实现业务报表的定制化功能。
4. 对原系统的库存管理模块进行优化,提高系统的性能和稳定性。
III. 项目源代码及详细说明1. 新增功能模块:客户需要系统新增一个产品价格管理模块,方便他们随时根据市场需求调整产品的价格。
我们在系统中增加了产品价格管理的功能模块,客户可以在这个模块中根据自己的需求,对产品的价格进行调整。
以下是新增功能模块的主要源代码及详细说明:```python# 产品价格管理模块import datetimefrom django.db import modelsclass Product(models.Model):name = models.CharField(max_length=100, verbose_name='产品名称')price = models.DecimalField(max_digits=10, decimal_places=2, verbose_name='产品价格') create_time = models.DateTimeField(default=datetime.now, verbose_name='创建时间')class Meta:verbose_name = '产品'verbose_name_plural = verbose_name# 增加产品价格调整记录模型class PriceAdjustRecord(models.Model):product = models.ForeignKey(Product, on_delete=models.CASCADE, verbose_name='产品')old_price = models.DecimalField(max_digits=10, decimal_places=2, verbose_name='调整前价格')new_price = models.DecimalField(max_digits=10, decimal_places=2, verbose_name='调整后价格')adjust_time = models.DateTimeField(default=datetime.now, verbose_name='调整时间')class Meta:verbose_name = '价格调整记录'verbose_name_plural = verbose_name```上面的代码是在原系统中新增的产品价格管理模块的源代码。
wps二次开发案例引言概述:WPS二次开发是指在WPS Office的基础上进行二次开发,根据个人或企业的需求,定制化开发一些功能或插件。
本文将通过五个大点来阐述WPS二次开发的案例,包括自动化任务、数据处理、界面定制、插件开发和云服务集成。
正文内容:1. 自动化任务1.1 自动化文档生成:通过WPS二次开发,可以实现自动化生成各类文档,如报告、合同等。
可以通过设置模板和自定义字段,将数据自动填充到相应位置,提高文档生成的效率。
1.2 批量处理:WPS二次开发可以实现对大量文档进行批量处理,比如批量修改格式、批量替换文本等。
通过编写脚本或插件,可以自动化完成这些操作,节省了大量的时间和人力成本。
2. 数据处理2.1 数据导入导出:通过WPS二次开发,可以实现与数据库的连接,实现数据的导入导出。
可以通过编写脚本或插件,将数据库中的数据导入到WPS Office中进行处理,或将处理后的数据导出到数据库中。
2.2 数据分析:WPS二次开发可以实现对数据的分析和统计。
通过编写脚本或插件,可以实现各种数据分析算法的应用,如排序、过滤、计算等,帮助用户更好地理解和利用数据。
3. 界面定制3.1 自定义菜单和工具栏:WPS二次开发可以实现对菜单和工具栏的自定义,根据用户需求添加或删除相应的功能。
可以通过编写脚本或插件,实现个性化的界面定制,提高用户的使用体验。
3.2 快捷键设置:WPS二次开发可以实现对快捷键的设置和修改。
通过编写脚本或插件,可以根据用户的喜好或习惯,自定义快捷键,提高操作效率。
4. 插件开发4.1 自定义插件:WPS二次开发可以实现自定义插件的开发,根据用户需求添加特定的功能。
可以通过编写脚本或插件,实现各种特定的功能,如自动翻译、图片处理等,扩展WPS Office的功能。
4.2 第三方插件集成:WPS二次开发可以实现与第三方插件的集成。
通过编写脚本或插件,可以将第三方插件集成到WPS Office中,实现更多的功能扩展,提供更多的选择。
Uniscope-二次开发文档APIUniscope Globe API 接口说明uniscope.globe空间方法:void createInterface (object div, function onCreated, function onCreateFail);参数: div: 控件创建的位置onCreated:创建成功响应的方法onCreateFail:创建失败响应的方法功能:创建一个新的Globe方法:void addEventListener (object targetObject, string eventID, function callbackListener); 参数: targetObject: 事件的触发者eventID:触发事件IDcallbackListener:响应事件的方法功能:添加一个全局事件方法:void removeEventListener(object targetObject, string eventID, function callbackListener); 参数: targetObject: 事件的触发者eventID:触发事件IDcallbackListener:响应事件的方法功能:移除一个全局事件属性:poiClickedHandler类型:eventHandler功能:poi被点击时触发的事件句柄属性:documentChangedHandler类型:eventHandler功能:文档被修改时触发的事件句柄uniscope.globe.measure方法:void clearResult();参数:无功能:清除所有的测量结果方法:void lineLength (function callbackOnResult);参数:callbackOnResult: 测量完成的响应函数功能:进行空间直线距离的测量功能:挖填方分析方法:void lineOfSight(double srcHeight, double destHeight, String pointString, function callbackOnResult );参数: srcHeight: 原始点的相对高度destHeight: 目标点的相对高度pointString: 视线的顶点集callbackOnResult: 完成后的回调函数功能:挖填方分析uniscope.search方法:void createInterface( String serverUrl);参数:serverUrl:服务的路径功能:uniscope.search初始化方法:void getPoiByKeyword(String keyword, String cityName, int pageIndex, int pageLength, function callbackOnResult );参数: keyword: 查询关键字cityName: 城市名pageIndex: 显示页号pageLength: 每页条数callbackOnResult: 完成后的回调函数功能:POI关键字查询方法:void getPoiByRect(String keyword, String cityName, double north, double south,double east, double west, int pageIndex, int pageLength, function callbackOnResult );参数: keyword: 查询关键字cityName: 城市名north, south, east, west: 矩形的参数pageIndex: 显示页号pageLength: 每页条数callbackOnResult: 完成后的回调函数功能:POI关键字查询方法:void getPoiByCircle(String keyword,String cityName, double centerLon, double centerLat, double radius, int pageIndex, int pageLength, function callbackOnResult );参数: keyword: 查询关键字cityName: 城市名centerLon: 圆形区域中心点经度centerLat: 圆形区域中心点纬度radius: 圆形区域半径pageIndex: 显示页号pageLength: 每页条数callbackOnResult: 完成后的回调函数功能:POI圆形区域查询方法:void getBuildingByKeyword(String keyword, String cityName, int pageIndex, int pageLength, function callbackOnResult );参数: keyword: 查询关键字cityName: 城市名pageIndex: 显示页号pageLength: 每页条数callbackOnResult: 完成后的回调函数功能:Building关键字查询方法:void getBuildingByRect(String keyword, String cityName, double north, double south, double east, double west, int pageIndex, int pageLength, function callbackOnResult );参数: keyword: 查询关键字cityName: 城市名north, south, east, west: 矩形的参数pageIndex: 显示页号pageLength: 每页条数callbackOnResult: 完成后的回调函数功能:Building矩形区域查询方法:void getBuildingByCircle(String keyword,String cityName, double centerLon, double centerLat, double radius, int pageIndex, int pageLength, function callbackOnResult );参数: keyword: 查询关键字cityName: 城市名centerLon: 圆形区域中心点经度centerLat: 圆形区域中心点纬度radius: 圆形区域半径pageIndex: 显示页号pageLength: 每页条数callbackOnResult: 完成后的回调函数功能:Building圆形区域查询方法:void getBuildingByPoint(String keyword,String cityName, double ptLon, double ptLat, int pageIndex, int pageLength, function callbackOnResult );参数: keyword: 查询关键字cityName: 城市名ptLon: 经度ptLat: 纬度pageIndex: 显示页号pageLength: 每页条数callbackOnResult: 完成后的回调函数功能:Building点选查询eventHandler对象方法:void addEventHandler(object targetObject, function callbackListener);参数: targetObject: 事件的触发者(可设置为null)callbackListener:响应事件的方法功能:添加一个响应函数方法:void removeEventHandler(object targetObject, function callbackListener); 参数: targetObject: 事件的触发者(可设置为null)callbackListener:响应事件的方法功能:移除一个响应函数方法:void clearEventHandler();参数: targetObject: 事件的触发者(可设置为null)callbackListener:响应事件的方法功能:清除所有的响应函数方法:void notifyEvent(object argument);参数:argument: 参数功能:触发事件IUSEarth对象属性:ImageLayers类型:IUSLayers功能:获得Image 图层的集合属性:ModelLayers类型:IUSLayers功能:获得Model图层的集合属性:POILayers类型:IUSLayers属性:VectorLayers:类型:IUSLayers功能:获得Vector 图层的集合属性:UserDocument类型:IUSUserDocument功能:获得用户数据文档属性:GlobeObserver类型:IUSGlobeObserver功能:获得摄像机属性:TrackControl类型:IUSTrackControl功能:获得飞行路线控制器属性:Factory类型:IUSFactory功能:对象工厂属性:Measure类型:IUSMeasure功能:测量模块属性:ShapeCreator类型:IUSShapeCreator功能:几何对象创建属性:Paint类型:IUSPaint功能:绘制简单几何图形的接口属性:HtmlBalloon类型:IUSHtmlBalloon功能:HTML弹出气泡属性:Event类型:IUSEvent功能:事件模块属性:RootPath类型:StringIUSLayers接口属性:Count类型:Int功能:获得图层的数量属性:Item类型:IUSLayer功能:获得某一图层;IUSLayer接口属性:Name类型:String功能:获得图层的名字属性:Visible类型:Boolean功能:获得/设置图层的可见性IUSUserDocument接口方法:void ImportXmlString(String xmlString, bool bAsync);参数:xmlString: 导入的XmlStringbAsync: 是否异步读入功能:将一个XmlString导入USEarth中方法:String LoadXmlFile(String xmlFilePath);参数:xmlFilePath: 文件的路径功能:从本地文件中读入xmlString方法:void SaveXmlFile(String xmlFilePath, String xmlString); 参数:xmlFilePath: 文件的路径xmlString: 需要写入的xmlString功能:将xmlString写入本地文件中方法:void DeleteXmlFile (String xmlFilePath); 参数: xmlFilePath: 文件的路径功能:删除本地文件中的xml方法:void DeleteXmlFile (String xmlFilePath); 参数: xmlFilePath: 文件的路径功能:删除本地文件中的xml IUSGlobeObserver接口方法:void Forward();参数:无功能:视点向前移动方法:void Backward();参数:无功能:视点向后移动方法:void MoveLeft();参数:无功能:视点向左移动方法:void MoveRight();参数:无功能:视点向右移动方法:void TurnLeft();参数:无功能:视点向左旋转方法:void TurnRight();参数:无功能:视点向右旋转方法:void LookUp();参数:无功能:视点向上旋转方法:void LookDown();参数:无功能:视点向下旋转方法:void ZoomIn();参数:无功能:视点靠近目标点方法:void ZoomOut();参数:无功能:视点远离目标点方法:void Resume();参数:无功能:视点返回全球状态方法:void NorthView();参数:无功能:视点返回到正北姿态方法:void TopView();参数:无功能:视点返回到顶视姿态方法:void Stop();参数:无功能:停止当前视点的运动状态方法:void FlyTo( double lon, double lat, double alt, double heading, double tilt, double range); 参数: lon: 目标点经度lat: 目标的纬度alt: 目标点高程heading: 朝向(与正北方向的夹角 0 <= heading <= 360 )tilt: 俯仰(垂直指向地心方向的射线的夹角。
二次开发文档介绍
一、程序简介二次开发文档是一种软件开发中常用的技术文档,它主
要是为了提供给程序的开发人员更加详细的程序规范、开发工具、程序架
构以及相关的详细说明等等,为程序开发人员提供统一的开发指南。
二、
二次开发文档的内容1、程序的结构说明:主要包括程序的整体架构、流
程模型、功能模型、数据模型等;2、程序的功能说明:主要描述程序实
现的功能及其功能性;3、程序的开发工具:主要说明程序开发所需要使
用的相关工具,以及如何使用;4、程序开发环境:主要介绍程序开发所
需要的软件环境、配置及相关文件;5、接口文档:主要包括程序与其他
程序、数据库之间的接口文档;6、安全文档:主要包括程序的安全设置、安全策略等;7、测试文档:主要包括程序的测试计划、测试环境、测试
用例、测试方法等。
三、二次开发文档的用途二次开发文档主要作为技术
文档使用,有助于程序开发过程中的更高级功能模块的把控和控制,在把
控这个模块的各个方面的同时,也能帮助开发人员更快的完成程序的开发、测试和维护等等。
单点登录二次开发指导文档目录1.概要信息 (3)1.1.目的 (3)1.2.范围 (3)2.二次开发实现步骤 (3)2.1.Visual Basic单点登录二次开发实现步骤 (3)2.1.1. Demo简介 (3)2.1.2. 实现步骤和流程 (4)2.1.3. 注意事项 (7)2.2.Visual C#单点登录二次开发实现步骤 (8)2.2.1. Demo简介 (8)2.2.2. 实现步骤和流程 (9)2.2.3. 注意事项 (12)单点登录二次开发实现步骤 (13)2.3.1. Demo简介 (13)2.3.2. 实现步骤和流程 (13)2.3.3. 注意事项 (17)1.概要信息1.1. 目的本文档主要描述如何在第三方系统中,使用K/3门户系统的单点登录功能,以方便与K/3各应用系统如K/3门户、K/3、K/3HR进行集成应用。
阅读本文需要具备一定的软件开发知识,最好具备相应语言如Visual Basic、Visual C#、 开发经验,同时也需要对单点登录的业务逻辑有一定的了解,关于单点登录业务逻辑的信息文档,请参见K/3门户的帮助系统。
1.2. 范围本文档描述单点登录的二次开发功能实现,主要分3种语言分包进行描述,分别为VB、C#、,当然,K/3门户系统的单点登录也支持其他开发语言,具体请参考已有语言的逻辑进行二次开发工作。
2.二次开发实现步骤2.1. Visual Basic单点登录二次开发实现步骤2.1.1.Demo简介正常安装K/3后,请在服务器打开(K3安装目录一般为C:\Program Files\Kingdee\K3ERP)/K3Portal/ PortalHelp/Demo/VB/目录,其中VBPassportDemo.vbp为采用Visual Basic 语言开发的单点登录Demo,运行时界面如下图:录入正确的用户和密码后,选择单点登录,进入正常的第三方业务系统,界面效果如下图:2.1.2.实现步骤和流程下面以Demo为例,详细讲解二次开发流程1、假定VBPassportDemo为第三方的业务系统,并具备自己的用户和登录系统,假定原登录界面为FrmLogin,原主控为frmMain2、在FrmLogin增加3个控件,首先增加一个GroupBox(登录方式),然后增加2个OptionButton,分别命名为opt1(命名用户登录),opt2(单点登录),其中命名用户登录为原有的登录方式,改进后增加了如下图的内容3、增加一个Module,命名为PassportLogin,假定原系统存在登录逻辑校验函数为LoginVB,则增加函数LoginPassword,该函数首先调用单点登录组件进行单点登录验证,当单点登录验证通过之后,再调用原有登录逻辑LoginVB进行登录具体如下:4、在登录界面FrmLogin中,调用单点登录函数,如下图5、注销功能实现,当退出主控台时,需要注销单点登录信息,注销实现如下图:6、在FrmMain界面调用注销功能,代码如下图:2.1.3.注意事项1、关于门户Url地址和门户用户关联:因为单点登录是使用K/3门户的用户进行登录的,而第三方系统有自己的用户系统,因此,需要进行两者的用户关联,本Demo默认使用K/3的用户关联系统,第三方系统需要替换成自己的用户关联处理函数下面介绍一下K/3的用户关联逻辑2、K/3系统的Url地址在安装有K/3的机器上,通过开始菜单-程序-金蝶K3-金蝶K3 服务器配置工具-帐套管理,进入后点击系统(&S)菜单-系统参数设置,见如下界面该参数在VB中通过下列代码可以获取3、K/3单点登录用户关联在安装有K/3的机器上,通过开始菜单-程序-金蝶K3-金蝶K3 服务器配置工具-帐套管理,选择具体的帐套,进入菜单帐套(&A)-用户管理,在用户管理界面中,选择一个用户,双击,弹出如下界面,其中包括“对应门户用户”的信息2.2. Visual C#单点登录二次开发实现步骤2.2.1.Demo简介正常安装K/3后,请在服务器打开(K3安装目录一般为C:\Program Files\Kingdee\K3ERP)/K3Portal/ PortalHelp/Demo/ C#/目录,其中CSharpPassportDemo.csproj为采用Visual C#语言开发的单点登录Demo,运行时界面如下图:录入正确的用户和密码后,选择单点登录,进入正常的第三方业务系统,界面效果如下图:2.2.2.实现步骤和流程下面以Demo为例,详细讲解二次开发流程1、假定CSharpPassportDemo为第三方的业务系统,并具备自己的用户和登录系统,假定原登录界面为FrmLogin.cs,原主控为FrmMain.cs2、在FrmLogin增加3个控件,首先增加一个GroupBox(登录方式),然后增加2个OptionButton,分别命名为opt1(命名用户登录),opt2(单点登录),其中命名用户登录为原有的登录方式,改进后增加了如下图的内容3、增加一个Class,命名为CPassportLogin.cs,假定原系统存在登录逻辑校验函数为LoginCSharp,则增加函数LoginPassword,该函数首先调用单点登录组件进行单点登录验证,当单点登录验证通过之后,再调用原有登录逻辑LoginCSharp进行登录具体如下:4、在登录界面FrmLogin中,调用单点登录函数,如下图5、注销功能实现,当退出主控台时,需要注销单点登录信息,注销实现如下图:6、在主控台FrmMain调用注销功能,代码如下图:2.2.3.注意事项1、关于门户Url地址和用户关联:因为单点登录是使用K/3门户的用户进行登录的,而第三方系统有自己的用户系统,因此,需要进行两者的用户关联,本Demo默认使用K/3的用户关联系统,第三方系统需要替换成自己的用户关联处理函数2、门户Url地址:本Demo未取实际的Url设置地址,实际应用中要增加门户Url设置界面,并调用相关接口提取门户Url地址,本Demo采取了简化处理,直接取本机,如下图3、单点登录用户关联如VB本版介绍,需要进行用户关联设置并提供相关接口进行用户映射2.3. 单点登录二次开发实现步骤2.3.1.Demo简介正常安装K/3后,请在服务器打开(K3安装目录一般为C:\Program Files\Kingdee\K3ERP)/K3Portal/ PortalHelp/Demo/ ASPNET/目录,其中包括Login.aspx和Default.aspx,该页面是采用语言开发的单点登录Demo,首先在IIS服务器建立一个虚拟目录为ASPNET,并将路径指向该目录。
接口开发文档一、开发包目录结构1.1demo 文件夹包含了s dk 接口调用源代码,可供二次开发参考。
使用C++开发的M FC 程序。
1.2dll 文件夹包含了二次开发所需的所有动态库,demo 编译好的e xe 文件需要放在该文件夹内才可以运行。
1.3include 文件夹包含了二次开发所需要的头文件。
1.4lib 文件夹包含了二次开发所需要的l ib 静态库。
1.5DSS 二次开发指南(C++).pdf指导二次开发用户如何新建V S2005 工程运行d emo 文件夹中的d emo。
1.6Version.xmldpsdk 开发包的程序版本信息。
1.7常见问题解答.pdf二次开发常见问题以及解决方式。
1.8大华平台S DK 开发手册(C++版).chm二次开发接口使用说明。
二、术语和缩略语1、D PSDK:DSS 平台二次开发S DK 包2、C MS:中心管理服务3、D MS:设备管理模块4、d emo:程序示例(功能类似D SS 平台客户端)5、w eb 管理员端:在浏览器中输入D SS 平台的i p 即可打开管理员端6、C ameraID:通道i d,形如:10000010$1$0$07、D eviceID:设备i d三、Demo 操作方法3.1 运行d emo把“demo/bin/”目录下面的3个文件,如下图所示拷贝到“dll”文件夹下面,运行Test_DPSDK_Core.exe。
3.2 登陆平台图 1 登陆界面登陆界面如图 1 所示,其中: IP:DSS 平台ip 地址;端口:9000;用户名:web 管理员端配置的用户;密码:web管理员端配置的用户对应的密码。
点击“登录”按钮,登陆平台。
登陆成功的界面如图2所示:123图2主界面上图选中的 5个模块分别是:1、组织树;2、实时视频;3、本地录像;4、云台操作;5、执行结果。
3.3 主界面功能介绍3.3.1、组织树操作步骤:点击“加载所有组织结构”按钮加载组织结构是其他操作的前提,是为了获取 DSS平台上所有的设备信息。
Jspxcms无侵入式插件开发(二次开发)教程之一:概述Jspxcms支持无侵入式插件和二次开发,无需修改系统原有代码,即可无缝整合Entity、Service、Controller、功能菜单、权限、标签、国际化等功能。
系统中“插件--简历管理”就是以这种方式实现的,下面就以“简历管理”讲解Jspxcms插件和二次开发的方法。
本帖隐藏的内容需要回复才可以浏览配置文件位置:/WEB-INF/conf/plugin。
所有的配置文件都必须在这个目录,在该目录下的配置文件会自动加载。
在该目录下新建自己的文件夹,可以是任何名字,如:abc、novel等,本例为plug。
即/WEB-INF/conf/plugin/plug配置文件说明application.properties:功能菜单、权限、国际化、Entity都与这个文件相关。
context-dao.xml:Dao的加载。
context-service.xml:Service的加载。
controller-back.xml:后台Controller的加载。
controller-fore.xml:前台Controller的加载。
context-directive.xml:标签的加载。
其他与插件开发相关的文件目录/WEB-INF/messages/plugin/plug:后台国际化文件位置/WEB-INF/messages/plugin/plugfore:前台国际化文件位置/WEB-INF/views/plug:后台jsp文件位置/files/1/bluewise/plug_resume.html:插件的前台模版插件源代码包名:com.jspxcms.plugJspxcms无侵入式插件开发(二次开发)教程之二:菜单与权限本帖隐藏的内容需要回复才可以浏览菜单和权限配置文件:/WEB-INF/conf/plugin/plug/application.properties一级菜单配置(分号为分割符)1.menu.650=navigation.plug;nav.do?menuId=650;nav_plug复制代码650:是后台导航一级菜单的编号,编号大小决定菜单的前后位置。
其值可以根据需要调整,如330、970,但不要与系统菜单或其他插件菜单重复。
系统菜单通常为menu.100,menu.200,menu.600等,系统菜单定义文件在/WEB-INF/conf/application.propertiesnavigation.plug:菜单名称。
这里使用了国际化,也可以直接用中文,比如“我的插件”。
nav.do?menuId=650:菜单链接地址。
其中650需与前面的值一样。
nav_plug:权限值。
其中plug通常与配置文件目录名称一样。
如目录为abc,则应为nav_abc。
也可不一样,但不能与其他一级菜单权限名称一样。
二级菜单配置(分号为分割符)1.menu.650.100=resume.management;plug/resume/list.do;plug:resume:list;create@plug:resume:create;copy@plug:resume:copy;edit@plug:resume:edit;save@plug:resume:save;update@plug:resume:update;delete@plug:resume:delete复制代码650:二级菜单所属的一级菜单编号。
100:二级菜单编号。
其值的意义和一级菜单编号一样,用于确定二级菜单的前后位置。
resume.management:二级菜单名称。
可以直接用中文,如“小说管理”。
plug/resume/list.do:功能菜单的链接地址。
需与Controller中的地址对应,否则会找不到页面。
plug:resume:list:功能菜单的权限。
需与Controller中list方法的权限对应,否则会报没有权限。
create@plug:resume:create:新增按钮的权限值。
其中create是国际化,可以用直接用中文,如“新增@plug:resume:create”。
其中plug:resume:create是该按钮的权限值,需与Controller中对应的create方法权限值一致。
copy@plug:resume:copy:意义和上面一样,后面的以此类推。
com.jspxcms.plug.web.back.ResumeController代码片段1.package com.jspxcms.plug.web.back;2.@Controller3.@RequestMapping("/plug/resume")4.public class ResumeController {5. @RequiresPermissions("plug:resume:list")6. @RequestMapping("list.do")7. public String list(......) {8. ......9. }10.11. @RequiresPermissions("plug:resume:create")12. @RequestMapping("create.do")13. public String create(......) {14. ......15. }16. ......17.}Jspxcms无侵入式插件开发(二次开发)教程之三:Entity本帖隐藏的内容需要回复才可以浏览实体类Entity配置文件:/WEB-INF/conf/plugin/plug/application.properties1.entityManagerFactory.packagesToScan.plug=com.jspxcms.plug.domain复制代码plug:通常与配置文件所在目录一样,也可不一样,但不能与其他相关配置同名。
com.jspxcms.plug.domain:Entity所在包名。
不使用主键自增策略,将主键放到数据库中的一个表里。
1.create table plug_resume2.(3. f_resume_id int not null,4. f_site_id int not null,5. f_name varchar(100) not null comment '姓名',6. f_post varchar(100) not null comment '应聘职位',7. f_creation_date datetime not null comment '投递日期',8. f_gender char(1) not null default 'M' comment '性别',9. f_birth_date datetime comment '出生日期',10. f_mobile varchar(100) comment '手机',11. f_email varchar(100) comment '邮箱',12. f_expected_salary int comment '期望薪水',13. f_education_experience longtext comment '教育经历',14. f_work_experience longtext comment '工作经历',15. f_remark longtext comment '备注',16. primary key (f_resume_id)17.)18.engine = innodb;19.alter table plug_resume comment '简历表';20.alter table plug_resume add constraint fk_plug_resume_site foreign key (f_site_id)21. references cms_site (f_site_id) on delete restrict on update restrict;复制代码1.@Entity2.@Table(name = "plug_resume")3.public class Resume implements java.io.Serializable {4. private Integer id;5.……6.7. @Id8. @Column(name = "f_resume_id", unique = true, nullable = false)9. @TableGenerator(name = "tg_plug_resume", pkColumnValue = "plug_resume", table = "t_id_table",pkColumnName = "f_table", valueColumnName = "f_id_value", initialValue = 1, allocationSize = 1)10. @GeneratedValue(strategy = GenerationType.TABLE, generator = "tg_plug_resume")11. public Integer getId() {12. return this.id;13. }14.15. public void setId(Integer id) {16. this.id = id;17. }18.……19.}复制代码需注意以下三个值,其中plug_resume为表名: = "tg_plug_resume", pkColumnValue = "plug_resume"2.generator = "tg_plug_resume"Jspxcms无侵入式插件开发(二次开发)教程之四:Dao本帖隐藏的内容需要回复才可以浏览Dao配置文件:/WEB-INF/conf/plugin/plug/context-dao.xml1.<jpa:repositories base-package="com.jspxcms.plug.repository"2. transaction-manager-ref="transactionManager"3. entity-manager-factory-ref="entityManagerFactory"4. factory-class="mon.orm.MyJpaRepositoryFactoryBean"5. repository-impl-postfix="Impl">6.</jpa:repositories>复制代码其中com.jspxcms.plug.repository为dao接口所在包。