当前位置:文档之家› ShareIdea编程开发指南

ShareIdea编程开发指南

Shareidea编程开发指南

(V2.0)

深圳市吉软科技有限公司

前言 (3)

第一章系统架构 (4)

1.1 系统架构图 (4)

1.2 支持的编程扩展范围 (4)

第二章软件扩展 (5)

2.1 软件扩展支持机制 (5)

2.2 表单皮肤实例 (6)

第三章数据库扩展 (17)

第四章接口设计原则 (17)

第五章表单接口 (17)

5.1 表单接口 (18)

5.1.1表单属性 (18)

5.1.2 表单方法 (20)

5.2 字段接口 (20)

5.2.1 字段属性 (20)

5.2.2 字段方法 (22)

第六章工作流接口 (22)

6.1 标准接口服务 (22)

6.2 自定义接口扩展 (23)

第七章数据表封装 (23)

7.1 新增 (23)

7.2 修改 (23)

7.3 删除 (24)

7.4 查询 (24)

前言

Shareidea来源于以下我们对软件的理念,即一个软件产品应该:

●帮助用户自动完成一些工作。对于一些可以预见的重复劳动,应该交给系统自动完成,

而不需要任何编码的工作。

●但无法完成用户所有的工作。没有一个产品能够在创建之初可以预见用户所有的工作,

特别是具有个性化的一些工作。这些工作是任何产品都无法自动完成的,但用户可以在已有的工作基础上进行完善,从而提高工作效率。

在深度考察企业信息化应用的基础上,我们得出企业信息化应用的两个核心问题:

●表单。表单是企业的数据核心,是企业运行、发展的根本。

●流程。流程的表单的流动载体,只有流动的数据才能产生价值。

根据我们的理念和对企业软件市场的把握,Shareidea被设计自动构建,同时支持编程扩展的智能系统。她具有以下功能。

●智能表单:将企业表单自动化。

●工作流:将企业流程自动化。

●编程扩展API:在自动化的基础上支持编程扩展。

通过这种设计,Shareidea不但可以满足企业的普遍化应用,还能支持企业应用的任意扩展。本文主要讲述使用Shareidea的API进行编程扩展开发,关于如何使用Shareidea的自动构建功能请参考《Shareidea管理员使用手册》一文。

在阅读完本文以下,您将可以:

●了解Shareidea支持编程扩展的机制

●开发自定义的表单界面和系统界面

●开发自定义的字段处理控件

●编写自定义的业务逻辑

为了顺利阅读本文,您必须具有以下专业知识:

●具有https://www.doczj.com/doc/4d15210207.html, 开发基本经验,包括了解Html,javascript语言

●具有数据库设计开发基本经验,包括数据表的设计,编写SQL语句。

第一章系统架构

1.1 系统架构图

系统支持自动构建的同时,也支持编程扩展,这是和系统架构有密切关系的。下面显示了系统架构图:

图1-1:系统扩展架构

从上图可以看出系统的使用流程,分为设计、解释两个阶段。

1、设计阶段。在设计阶段,使用表单设计器和流程设计器进行数据建模,并存储在数据库中。

2、解释阶段。当用户访问系统时,表单引擎和流程引擎根据用户的访问参数从数据层读取数据,经过表单引擎和流程引擎的解释,将处理后的数据发送给用户。

1.2 支持的编程扩展范围

从上图可以看出,系统通过两个预留的层支持扩展。这两个扩展层分别位于数据层和软件层。这两个扩展层以即插即用的方式对用户开放接口。如果需要对系统进行编程扩展,那么只需要使用系统接口来填充这两个扩展层,用户在访问系统的时候,就会自动调用。

第二章软件扩展

2.1 软件扩展支持机制

从用户访问的角度来说,用户登录系统后,可以与系统进行交互是系统表单,例如通过表单查看数据,提交数据等。软件扩展也就主要表现在对表单的扩展上。对于一个设计好的表单来说,如果使用系统默认的功能,无须作任何编程工作就可以完成普通的增删改查,但对于一些自定义要求比较高的用户来说,需要能够控制表单的各个方面,包括展现逻辑,业务逻辑,处理控件等,系统的软件扩展也表现在这三部分。

为了了解系统扩展机制,必须了解表单引擎的运作方式以及https://www.doczj.com/doc/4d15210207.html,的用户控件(user Control)。下图显示了表单引擎的运作方式。

图2-1:表单引擎运行原理

从上图中可以看出,当用户访问系统的时候,传递了两个参数,表单ID和记录ID,表单引擎根据传递的参数表单ID 从数据库中的表单模型和数据模型中提取关于对应的纪录,同时动态生成aspx页面,在这个aspx页面中包含了用以处理当前表单字段的对用的控件。然后根据请求参数记录ID 从应用数据中提起记录,并使用记录中的各个字段的值填充动态表单中相应的控件。然后经过https://www.doczj.com/doc/4d15210207.html,引擎的解释,生成html代码代码返回给客户端。

在上面的流程中,用以处理表单字段的各个控件都是在用户请求的同时动态生成的,如果可以在用户请求之前预先生成这样的控件,在用户请求的使用直接载入这些控件而不是在动态生成,这样就解决了系统扩展的问题。

系统正是基于这样的思路实现了软件层的扩展。下图描述了使用预先生成的控件来处理用户请求。

图2-2:软件层扩展原理

用上图中可以看出,预先生成了系统中所有表单对应的用户控件,这样,在用户请求的时候表单引擎就载入对应的用户控件来代替自动生成的控件。在下文中,将统一称这种表单对应的用户控件为表单皮肤。

表单皮肤是一个标准的.ascx页面,这个页面中包含了两个用以处理表单逻辑的所有控件,包括按钮和字段处理控件。

2.2 表单皮肤实例

在系统中设计好一个表单后,点击生成数据表按钮,系统将在数据库创建一个数据表,同时,在系统中生成一个表单皮肤文件,以请假单为例,在系统目录skins下面生成一个请假单文件夹,这个文件夹下面包含两个用户控件,分别是:

请假单_edit.ascx:用以表单编辑。

请假单_search.ascx:用以表单查询。

下面是请假单_edit.ascx 的源代码:

<%@Control Language="C#"ClassName="AutoFormEditSkin"AutoEventWireup="true"

Inherits="AutoForm.Web.UI.Skin.AutoFormSkin" %>

<%@Register Namespace="AutoForm.Web.UI.Control"TagPrefix="AutoForm"

Assembly="shareidealib" %>

<%@Register Src="~/control/notion.ascx"TagName="NotionHistoryList"TagPrefix="AutoForm" %> <%@Import Namespace="AutoForm.Utilily" %>

<%@Import Namespace="AutoForm.Const" %>

<%@Import Namespace="SubSonic" %>

<%@Import Namespace="AutoForm" %>

runat="server">

class="Edit-Row">

class="Edit-Row">

class="Edit-Row">

class="Edit-Row">

class="Edit-Row">

class="Edit-Row">

class="Edit-Row">

class="Edit-Row">

class="Edit-Row">

lang="AutoFormTR$ShareIdeaGroupID$663"

class="Edit-Row">

请假单ID

runat="server"TableName="请假单"

TextControlStyle="width:500px;"/>

申请人

申请时间

TextControlStyle="width:500px;"/>

请假天数

TextControlStyle="width:500px;"/>

请假原因

TextControlStyle="width:500px;"/>

审批通过

TextControlStyle="width:500px;"/>

创建人

TextControlStyle="width:500px;"/>

创建时间

runat="server"TableName="请假单"

TextControlStyle="width:500px;"/>

更新时间

runat="server"TableName="请假单"

TextControlStyle="width:500px;"/>

所属用户组

TableName="请假单"TextControlStyle="width:500px;"/>

处理意见

 

ListTableStyle="width:500px;"

runat="server"/>

 

MouseOverImageCssClass="Button-Save-Activity"

Visible="false"ID="btnSave"runat="server"Text="保存"OnClick="btnSave_Click"/>

MouseOverImageCssClass="Button-Delete-Activity"

Visible="false"ID="btnDelete"runat="server"Text="删除"

OnClick="btnDelete_Click"/>

MouseOverImageCssClass="Button-Agree-Activity"

Visible="false"ID="btnAgree"runat="server"Text="同意"OnClick="btnAgree_Click" />

MouseOverImageCssClass="Button-Disagree-Activity"

Visible="false"ID="btnDisagree"runat="server"Text="拒绝"

OnClick="btnDisagree_Click"/>

MouseOverImageCssClass="Button-Disagree-Activity"

Visible="false"ID="btnRollback"runat="server"Text="退回"

OnClick="btnRollback_Click"/>

MouseOverImageCssClass="Button-Transmit-Activity"

Visible="false"ID="btnTransmit"runat="server"Text="转派"/>

MouseOverImageCssClass="Button-Pause-Activity"

Visible="false"ID="btnPause"runat="server"Text="暂停"OnClick="btnPause_Click" />

MouseOverImageCssClass="Button-Continue-Activity"

Visible="false"ID="btnContinue"runat="server"Text="继续"

OnClick="btnContinue_Click"/>

Visible="false"ID="btnCancleTask"runat="server"Text="取消"

OnClick="btnCancleTask_Click"/>

Visible="false"ID="btnFinishedProcess"runat="server"Text="结束流程"

OnClick="btnFinishedProcess_Click"/>

MouseOverImageCssClass="Button-Print-Activity"

Visible="false"ID="btnPrint"runat="server"Text="打印"/>

MouseOverImageCssClass="Button-Cancel-Activity"

Visible="false"ID="btnCancel"runat="server"Text="关闭"/>

通过这个表单皮肤文件,用户可以对表单作出以下的扩展:

●界面修改

自定义界面就是自定义用户查询界面和用户编辑界面,包括自定义控件布局,页面样式等。可以使用两种方式进行自定义界面的修改。

?在系统提供的表单设计界面进行修改,如下图所示。

?在https://www.doczj.com/doc/4d15210207.html,中修改,如下图所示:

●业务逻辑修改。每一个皮肤文件都继承自皮肤基类

AutoForm.Web.UI.Skin.AutoFormSkin,而基类则实现了皮肤接口AutoForm.Web.UI.Skin.IAutoFormSkin,在接口中定义了表单引擎在处理

表单时的事件处理生命周期。可以通过覆盖这些方法来达到自定义业务逻辑

的目的。因为皮肤文件是一个标准的ascx文件,你也可以使用https://www.doczj.com/doc/4d15210207.html,用户控件的生命周期来编写业务逻辑

在表单皮肤中,用户可以使用以下技术:

●C#语言

●Javascript

●Html

●Css

●Aspx生命周期控制

等等

从上面的代码可以看出,系统对请假单表单生成了封装请假单操作的源代码文件,用户可以在这个源代码文件的基础上进行编程扩展,使用标准的aspx知识就可以完成任意的扩展,而无需增加学习成本。

第三章数据库扩展

数据库扩展包括存储过程,用户函数以及触发器。数据库扩展可以直接通过数据库管理工具进行操作,这里不再赘述。

第四章接口设计原则

Shareidea的数据库结构是开放的,用户可以通过sql server管理器对数据库进行管理,也可以通过程序对数据库进行访问。

Shareidea的数据持久化是通过数据库进行的,任何shareidea数据库都存储在数据库中,系统通过对数据库的操作进行封装形成了系统接口,同理,用户也可以通过对数据库来对于业务逻辑进行封装形成自定义的客户接口。

在shareidea中的系统接口基于两个原则进行设计:

●最小化系统接口:系统接口指的是shareidea本身自带的服务接口,这个接口设计的原

则是提供满足客户需求的最小范围内的接口。这样的设计是在满足客户需求的前提下,尽可能的减少接口的数量。

●最大化自定义接口:对于一些系统接口无法满足的需求,用户可以通过开放数据库接口

自定义接口。用户通过直接访问数据库来封装对数据库的操作,形成自定义的接口。在这种模式下,通过开放数据库接口,用户可以自己实现任意的扩展接口,满足客户自定义的需求。

关于数据库结构详细说明,请参考《Shareidea数据词典》一文。

第五章表单接口

表单接口主要涉及到两个类

●表单类AutoForm.Form。封装了表单的各种操作。

●字段基类AutoForm.Web.UI.Control.AutoBaseControl。封装了字段的各种操作。

一般情况下,用户无需使用这两个类来做编程,系统将根据配置信息完成各种操作。在用户需要对表单进行更多控制时,才使用这两个类的属性和方法。

5.1 表单接口

5.1.1表单属性

5.1.2 表单方法

5.2 字段接口5.2.1 字段属性

相关主题
文本预览
相关文档 最新文档