通达OA应用中心使用手册(脚本编写指南)

2023-05-16

   

   

脚本编写必备基础

   

   

1.1 什么是脚本

   

   

脚本是一段 PHP 代码,可以被应用中心执行以实现特定功能。应用中心支持通过脚本实现以下功能:

   

  • 自定义计算函数。

   

  • 自定义提取触发器。

   

  • 自定义回填触发器。

   

编写脚本对于应用中心来说不是必须的,但通过编写脚本却可以极大地增强应用中心的处理能力,这对于实施复杂度高、应用中心标准化功能满足不了的项目是一个很好的选择。

   

   

1.2 编写脚本需要具备哪些基础

   

   

除了要熟悉应用中心以及相关数据库表结构之外,编写脚本还需要有 PHP 编程基础, 写脚本的过程本质上写 PHP 代码的过程。因此,应用中心的实施人员需要补充些 PHP 编程知识,这对编写脚本是非常有帮助的。

   

   

1.3 应用中心库表结构

应用中心主要库表结构如下图所属:

 

1.4 应用中心控件数据结构

新版应用中心采取前后端分离方式实现,前端和后端采取规定好的数据结构进行通信, 因此用户自己编写脚本过程中读取和设置数据时要满足规定好的结构。

应用中心各控件数据结构说明如下: 单行文本、多行文本、数字文本、货币文本、自动编号:具体值,例如:

96,25.98,"2017110056"。 日期文本:类型为日期时,数据格式为 yyyy-M-d,例如:2017-11-20;类型为时间时, 数据格式为 HH:mm:ss,例如:11:07:01;类型为日期+时间时,数据格式为 yyyy-M-d HH:mm:ss,例如:2017-11-20 11:07:01。 单选框:选项值结构为:[["code","name"]],code 为代码保存值,name 为代码显示值,

例如:[["code"=>"01","name"=>"男"],["code"=>"02","name"=>"女"]];选定值为:选择后的 代码 code 值,例如:01。 多选框:选项值结构与单选框一样;选定值为:数组,数组里元素为选择后的代码 code 值,例如:["01","02"]。 下拉选择:选项值结构与单选框一样;不支持多选的选定值结构与单选框一致,支持多 选的选定值结构与多选框一致。

地址: 数 据 结 构 为 : ["prov"=>["id","name"],"city"=>["id","name"],"country"=>["id","name"],"street"],分别对应 省 、 市 、 县 以 及 详 细 地 址 , 例如: ["prov"=>["id"=>"110000","name"=>" 北 京 市"],"city"=>["id"=>"110100","name"=>"市辖区"],"country"=>["id"=>"110108","name"=>"海 淀区"],"street"=>"紫竹院路 69 号"]。 定位:数据结构为:["lat","lng","address"],分别对应纬度、经度以及具体地址,

例如: ["lat"=>39.9241,"lng"=>116.404,"address"=>"北京市东城区"]。 附件、图片:数据结构为:[["attach_id","attach_name"]],分别对应附件 ID 以及附件名 称 , 例 如 : [["attach_id"=>" 2873@1711_754692181","attach_name"=>" 报表需求开 发.docx"],["attach_id"=>" 2874@1711_303458136","name"=>" 17 版应用中心建议.docx"]]。 部门选择:数据结构为:[["dept_id","dept_name"]],分别对应部门 ID 以及部门名称, 例如: [["dept_id"=>"ALL_DEPT","dept_name"=>" 全 体 部 门 "]] , [["dept_id"=>1,"dept_name"=>"总经理"],["dept_id"=>2,"dept_name"=>"财务部"]]。

人员选择:数据结构为:[["uid","username"]],分别对应人员的 UID 以及人员真实姓名, 例如:[["uid"=>1,"username"=>"张三"],["uid"=>2,"username"=>"李四"]]。

列表:数据结构为:["flag","index","data"=>[["field_id","value"]]],解释如下: flag:新增行标识,新增行 flag 值为 new,非新增行时为空; 4 index:行 id; data:记录数据,是一个二维数组,每列数据包含 field_id 和 value,field_id 为该列 字段的 GUID,value 为该列的数值,数值结构参考之前的描述。

列表数据例子如下: [ ["flag"=>"new","index"=>" 1511236728561","data"=>[["field_id"=>"{4C022D90-83C4-5EBA-EE7B-ED1A98AFD7ED}","value"=> 2],["field_id"=>" {6FF2B352-A9D9-C1EC-414C-795016C2141D}","value"=>[11,12]]]], ["flag"=>"new","index"=>" 1511236715995", "data"=> [["field_id"=>"{4C022D90-83C4-5EBA-EE7B-ED1A98AFD7ED}","value"=>1],["field_id"=>" {6FF2B352-A9D9-C1EC-414C-795016C2141D}","value"=>[5,1]]]] ]

1.5 公共函数

系统内置了一系列公共函数可供自定义函数、自定义脚本插件使用,这些函数封装在一 个名为 APPPluginUtils 的类里,在运行时这个类会实例化为$PLUGIN_UTILS 对象,并以实 参或者变量形式传递给自定义函数、自定义插件。具体调用方式请参考后面例子。

1.5.1获得当前表单 id 方法:getFormId() 输入:无 输出:当前表单 id

1.5.2获得当前表单 guid 方法:getFormGuid() 输入:无。 输出:当前表单 guid。

1.5 1.5.3获得表单 guid 方法:getFormGuidById($i_id) 输入: $i_id 表单 id。 输出:指定表单 guid。

1.5.4 获得字段 guid 方法:getItemGuidByName($i_formid, $s_title, $s_subtitle = "") 输入:$i_formid 表单 id;$s_title 字段名称;$s_subtitle 列表子字段名称,可不传。 输出:字段 guid。

1.5.5 根据名称获得当前字段值 方法:getValueByName($s_item_name, $s_subitem_name = "", $i_seq = 1) 输入:$s_item_name 字段名称;$s_subitem_name 列表子字段名称,可不传;$i_seq 行 顺序号,默认取第一行数据。 输出:字段值。

1.5.6 获得当前字段值 方法: getValue($s_item_guid, $i_seq = 1) 输入:$s_item_guid 字段 guid;$i_seq 行顺序号,默认取第一行数据。 输出:字段值。

1.5.7 根据名称获得表单基本数据(非列表数据)或者 列表数据 方法:getRowByName($s_list_name = "", $i_seq = 0) 输入:$s_list_name 列表名称,可不传,不传时返回表单基本数据;$i_seq 行顺序号, 默认取所有数据。 输出:基本数据或者列表数据。

1.5.8 获得表单基本数据(非列表数据)或者列表数据 方法:getRow($s_list_guid = "", $i_seq = 0) 输入:$s_list_guid 列表 guid,可不传,不传时返回表单基本数据;$i_seq 行顺序号, 默认取所有数据。 输出:基本数据或者列表数据。

1.5.9 设置字段数据 方法:setValue($s_item_guid, $value, $i_seq = 1) 输入:$s_item_guid 字段 guid;$value 字段值;$i_seq 记录行顺序号。 输出:无。

1.5.10 设置字段选项数据 方法:setOptionValues($s_item_guid, $arr_options, $i_seq = 1) 输入:$s_item_guid 字段 guid;$arr_options 选项数组;$i_seq 记录行顺序号。 输出:无。

1.5.11 清除列表数据 方法:function clearDetailTable($s_item_guid) 输入:$s_item_guid 字段 guid。 输出:无。

1.5.12 获得应用中心数据库连接 方法:function getDb() 输入:无。 输出:应用中心数据库连接。 根据数据库连接操作数据库,常见方法举例如下: $command = $connection->createCommand('SELECT * FROM post'); $posts = $command->queryAll(); $post = $command->queryOne(); $command = $connection->createCommand('UPDATE post SET status=1'); $command->execute(); $command = $connection->createCommand('SELECT * FROM post WHERE id=:id'); $command->bindValue(':id', $_GET['id']); $post = $command->query();

1.5.13 获得数据源里配置的数据库连接 方法:function getOtherDB($s_sername, $s_db = "") 输入:$s_sername 数据源名称,在系统管理》数据源管理中设置;$s_db 数据库名称, 不传时使用数据源里设置的数据库。 输出:数据库连接。

1.5.14 根据表单名称获得表单 id 方法:function getFormIdByName($s_app, $s_form) 输入:$s_app 应用名称;$s_form 表单名称。 输出:表单 id。

1.5.15 根据表单 guid 获得表单 id 方法:function getFormIdByGuid($s_guid) 输入:$s_guid 表单 guid。 输出:表单 id。

1.5.16 根据字段 GUID 获得字段 ID 方法:function getItemIdByGuid($s_guid) 输入:$s_guid 字段 guid。 输出:字段 id。

1.5.17 根据字段名称获得字段 ID 方法:function getItemIdByName($i_formid, $s_title, $s_subtitle = "") 输入:$i_formid 表单 id;$s_title 字段名称;$s_subtitle 列表子字段名称,可不传。 输出:字段 id。 9 自定义函数

1.6 概述 应用中心提供了大量的标准函数,通过组合这些标准函数可以实现各种复杂度不一的数 据处理。此外,应用中心还提供了自定义函数功能,方便用户自行扩充数据处理功能。自定 义函数语法如下: MYFUNC():返回由指定的自定义函数处理后的结果。例如: MYFUNC("get_aux_quantity")。 处理引擎命名规则:XXX 名称.func,对应的实现文件为:XXX 名称.func.php,例如: MYFUNC("get_aux_quantity")指定处理引擎为 get_aux_quantity.func,对应的实现文件为: get_aux_quantity.func.php。 引擎实现文件存放路径为:webroot\general\appbuilder\modules\appcenter\plugin\表单 id, 例如:webroot\general\reportshop\utils\plugins\1。 如何查看表单 id?点击该表单设计界面,浏览器地址栏上会显示 formId=XXX,XXX 即为该表单 id。 注意:自定义函数只能用在填充表达式中,不能用在筛选条件中。

1.7 输入参数与输出结果 应用中心调用自定义函数时,将给自定义函数传递以下实参(即自定义函数的输入参 数): $PLUGIN_UTILS:插件公共对象,包含了访问公共函数接口; 自定义函数输出结果为计算结果值。

1.8 举例 以倍数换算为例,举例说明如何使用自定义函数。首先,定义如下提取触发器:

 

其中,MYFUNC("calculate_it")为自定义函数。处理引擎定义为:calculate.func。引擎实现文 calculate.func.php 包含自定义函数 calculate_it,其脚本如下: /** 计算基数根据陪数翻番后的结果 @param $PLUGIN_UTILS 插件公共对象,提供公共方法  

   

  • @return mixed

   

function calculate_it($PLUGIN_UTILS){

   

$i_basic = $PLUGIN_UTILS->getValueByName("基数"); $i_power = $PLUGIN_UTILS->getValueByName("倍数"); $i_result = $i_basic;

   

while($i_power > 1){

   

$i_result *= $i_basic;

   

$i_power--;

   

}

   

return $i_result;

   

}

   

运行一结果如下图所示:

   

自定义提取或回填引擎

   

   

1.9 概述

   

   

自定义函数仅在触发器的局部实现了自定义处理逻辑。除此之外,应用中心还支持在整个触发器范围内自定义处理逻辑。要实现整个触发器范围内的自定义处理,需要满足以下条件:

   

如果是提取触发器,填充方式里除了匹配之外,其他填充方式不得存在。

   

如果是回填触发器,则无需定义更新方式。

   

自定义提取或者回填处理引擎命名规则为:XXX 名称,对应的实现文件为:XXX 名称.php,例如:处理引擎为 get_goods_lot,对应的实现文件为:get_goods_lot.php

   

引擎实现文件存放路径为:webroot\general\appbuilder\modules\appcenter\plugin \模板 id例如:webroot\general\appbuilder\modules\appcenter\plugin \1

   

   

1.10 输入参数与输出结果

   

   

应用中心传递给脚本引擎的参数,即引擎文件输入参数为:

   

  • $PLUGIN_UTILS 插件公共对象,,包含了访问公共函数接口。

   

注意:由于自定义提取或回填脚本引擎是被嵌入到应用中心里一起执行的,因此引擎里用的变量尽可能加前缀" plugin_ "并采用小写形式,例如 $plugin_i $plugin_str $plugin_arr_datas 等,以区别于应用中心里所使用的变量。

   

   

1.11 举例

   

   

以初始化数据为例,举例说明如何使用脚本引擎实现自定义提取逻辑,触发器定义如下:

 

   

处理引擎定义为"fill_it",填充方式空着,即什么都不定义。 引擎脚本文件 fill_it.php 包含以下内容:

   

<?php

   

$plugin_s_select =

   

$PLUGIN_UTILS->getItemGuidByName($PLUGIN_UTILS->getFormId(), "寄送方式");

   

$PLUGIN_UTILS->setOptionValues($plugin_s_select,

   

[["code"=>"","name"=>""],["code"=>"01","name"=>"自提"],["code"=>"02","name"=>"邮寄"],["code"=>"03","name"=>"送达"]]);

   

$PLUGIN_UTILS->setValue($plugin_s_select, "01");

   

$plugin_s_list = $PLUGIN_UTILS->getItemGuidByName($PLUGIN_UTILS->getFormId(), "列表 ");

   

$plugin_s_guid = $PLUGIN_UTILS->getItemGuidByName($PLUGIN_UTILS->getFormId(), "列表 ", "发票名称");

   

$plugin_s_guid2 = $PLUGIN_UTILS->getItemGuidByName($PLUGIN_UTILS->getFormId(), "列表", "发票号");

   

$PLUGIN_UTILS->clearDetailTable($plugin_s_list);

   

$PLUGIN_UTILS->setValue($plugin_s_guid, "充值卡");

   

   

$PLUGIN_UTILS->setValue($plugin_s_guid2, 19918125); $PLUGIN_UTILS->setValue($plugin_s_guid, "物业费", 2); $PLUGIN_UTILS->setValue($plugin_s_guid2, 19918126, 2); $PLUGIN_UTILS->setValue($plugin_s_guid, "采暖费", 3); $PLUGIN_UTILS->setValue($plugin_s_guid2, 19918127, 3);

   

?>

   

以回写发票信息为例,举例说明如何使用脚本引擎实现自定义回填逻辑,触发器定义如下:

   

 回写条件和更新方式不定义。处理引擎写上 back_it。 脚本引擎文件 back_it.php 包含如下内容:

   

<?php

 //把本表单列表数据回填到目标表单的列表中

   

//回写目标

   

$plugin_i_target_formid = $PLUGIN_UTILS->getFormIdByName("特性展示", "test112102");//目标表单 id

   

$plugin_i_target_list_id =

   

$PLUGIN_UTILS->getItemIdByName($plugin_i_target_formid, "列表");//

   

目标列表 id

   

$plugin_i_target_fph_id =

   

$PLUGIN_UTILS->getItemIdByName($plugin_i_target_formid, "列表", "发票号");//目标字段发票号 id

   

$plugin_i_target_bz_id =

   

$PLUGIN_UTILS->getItemIdByName($plugin_i_target_formid, "列表", "

   

");//目标字段说明 id

   

//本表单

   

$plugin_i_source_fph_id =

   

$PLUGIN_UTILS->getItemIdByGuid("{C55A3264-04D4-297B-7685-26AFE7FE 10C2}");//本表单字段发票号 id

   

$plugin_i_source_fpmc_id =

   

$PLUGIN_UTILS->getItemIdByGuid("{B8240BDB-5A0B-21F3-D676-2E9A07DC 36CF}");//本表单字段发票名称 id

   

本表单列表数据

   

$plugin_arr_row = $PLUGIN_UTILS->getRowByName("列表"); if(!empty($plugin_arr_row)){

   

foreach($plugin_arr_row as $plugin_row){ $sql = "select id from

   

app_data_{$plugin_i_target_formid}_list_{$plugin_i_target_list_id}

   

where

   

col_$plugin_i_target_fph_id='{$plugin_row["col_$plugin_i_source_f

   

ph_id"]}'";

 $plugin_target_row =

   

$PLUGIN_UTILS->getDb()->createCommand($sql)->queryOne();

   

if(!empty($plugin_target_row)){

   

$plugin_s_value = "发票号:

   

{$plugin_row["col_$plugin_i_source_fph_id"]},发票项目:

   

{$plugin_row["col_$plugin_i_source_fpmc_id"]}";

   

$sql = "update

   

app_data_{$plugin_i_target_formid}_list_{$plugin_i_target_list_id}

   

set col_$plugin_i_target_bz_id='$plugin_s_value' where

   

id=$plugin_target_row[id]";

   

$PLUGIN_UTILS->getDb()->createCommand($sql)->execute();

   

}

   

}

   

}

   

?>

转载于:https://www.cnblogs.com/tongdaoa/p/8338300.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通达OA应用中心使用手册(脚本编写指南) 的相关文章

  • JavaScript 笔记(3) -- JSON

    JavaScript JSON JavaScript Object Notation 是一种轻量级的数据交换格式 JSON 是用于存储和传输数据的格式JSON 通常用于服务端向网页传递数据 JSON 使用 JavaScript 语法 xff
  • 【转载】Notepad++使用技巧

    一 安装notepad 43 43 notepad 43 43 的下载 安装非常easy 下一步下一步 xff0c 所有选项都默认就可以安装好 但有几点需要注意 截止到写这篇博文 xff0c notepad 43 43 的最新版本为7 5
  • 0.1+0.2为什么不等于0.3

    首先 xff0c 对于不同的进制数值系统 xff0c 分母为多少时能除干净 xff1f 答案是当以前进制数的质因子为分母时 xff0c 以十进制为例 xff0c 它的质因子为2 5 xff0c 因此1 2 1 4 1 5 1 8和 1 10
  • git tag

    git tag的用法 git的tag功能 git 下打标签其实有2种情况 轻量级的 xff1a 它其实是一个独立的分支 或者说是一个不可变的分支 指向特定提交对象的引用带附注的 xff1a 实际上是存储在仓库中的一个独立对象 xff0c 它
  • 对web前端这门课程的期望

    对于这门课程 xff0c 我只希望我能过就行 xff0c 因为我将来可能不会从事着方面的工作 xff0c 但为了丰富自己的知识 xff0c 我还是觉得要认真的对待每一门学科 xff0c 这一门也不例外 xff0c 我希望我可以学的尽量好一点
  • ArcEngine安装并注册后应用程序无法使用toc等控件的解决办法

    安装了ArcEngine xff0c 并且用ecp注册过 但当放置toolbarcontrol TOCControl等控件在窗体上时 xff0c 提示 this control require an esri designer licens
  • Debian中安装使用sudo命令

    Debian中安装使用sudo命令 sudo可以让非root用户具有管理员的权限 xff0c 安装好的Debian后还不能使用sudo 需要使用root用户登陆后安装sudo命令 span style color 000102 span s
  • linux breakpad 编译,linux 平台编译googlebreakpad并测试 demo

    Linux googlebreakpad 编译 1 下载源码 源码包括两部分 xff0c 分为依赖库和 breakpad xff0c 网址一般会被屏蔽 xff0c 需要墙一下 另 xff0c 编译器需要支持 c 43 43 11 我用的gc
  • 233

    include lt bits stdc 43 43 h gt define reg register int define il inline define fi first define se second define mk a b
  • 再探容斥好题——ROOK

    这个时候考过 xff1a 安师大附中集训 Day2 当时看shadowice1984的做法 xff0c 但是没有亲自写 xff0c xff0c xff0c 雅礼集训考试的时候鼓捣半天 xff0c 被卡常到80pts xff0c 要跑9s 卡
  • CF908G New Year and Original Order

    CF908G New Year and Original Order gzz讲过 xff0c 可我到今天还是不会 有点trick的数位DP 比较显然的思路是 xff0c 考虑所有数中排序后每一位的贡献 cnt i x 表示S 1 S x 第
  • 本地在不安装Oracle的情况下安装PLSQL客户端

    本文解决问题 xff1a 通常在本地安装PLSQL后 xff0c 如果本地没有安装Oracle数据库的话 xff0c PLSQL是不能使用的 xff0c 输入远程数据库登录信息会提示 xff1a Oracle Client没有正确安装 这个
  • Ubuntu的中文乱码问题

    目标 xff1a 使系统 服务器支持中文 xff0c 能够正常显示 1 首先 xff0c 安装中文支持包language pack zh hans xff1a sudo apt get install language pack zh ha
  • Python argparse 处理命令行小结

    Python argparse 处理命令行小结 1 关于argparse 是python的一个命令行解析包 xff0c 主要用于处理命令行参数 2 基本用法 test py是测试文件 xff0c 其内容如下 import argparse
  • 分布式系统心跳协议的设计

    分布式系统心跳协议的设计 应用层心跳必不可少 xff1a 1 操作系统崩溃导致机器重启 没有机会发送 FIN 分节 2 服务器硬件故障导致机器重启 也没有机会发送 FIN 分节 3 并发连接数很高时 操作系统或进程如果重启 可能没有机会断开
  • malloc vs memset

    malloc vs memset OS内存分配过程如下 xff1a 用户态程序使用malloc接口 xff0c 分配虚拟地址 用户程序访问该虚拟地址 xff0c 比如memset 硬件 xff08 MMU xff09 需要将虚拟地址转换为物
  • c++ rvo vs std::move

    c 43 43 rvo vs std move To summarize RVO is a compiler optimization technique while std move is just an rvalue cast whic
  • linux du

    1 显示当前目录及子目录每个文件占用的块数量 du 2 显示当前目录占用的块数量 du s 3 查看当前目录占用空间啊大小 xff08 空间大小 61 块数量 块大小 xff09 du sh 4 查看当前目录各个文件占用空间大小 du sh
  • python绘制散点图入门

    import matplotlib pyplot as plt x values 61 list range 1 1001 y values 61 x 2 for x in x values plt scatter x values y v
  • linux 配置 l2tp-client

    1 安装yum源 yum install epel release 1 安装xl2tpd和ppp yum y install xl2tpd ppp 3 配置xl2tpd conf xff0c 原始的xl2tpd conf里面有 lns de

随机推荐

  • ros开启快速转发模式

    RB CCR设备开启FastTrack ip firewall filter add chain 61 forward action 61 fasttrack connection connection state 61 establish
  • ROS的脚本多拨

    ros设置单网卡拨多ADSL 使用vrrp 有些版本有问题 xff0c 使用5 2破解版本测试成功 1 创建100个vrrp 并绑定到wan口下 for i from 1 to 100 do 61 interface vrrp add co
  • zabbix4.0 相关的拓扑图及centos的虚拟配置

    zabbix的拓扑图相关资料 https blog 51cto com qicheng0211 1591073 zabbix配合 grafana zabbix 安装好后 参考 grafana 官方文档 https grafana com g
  • 通过TCP协议发送DNS请求

    通过TCP协议发送DNS请求的方法 文章出处 xff1a http www bingtech net wordpress 2011 04 233 下载dnsapi dll文件 然后到Google xff0c 搜索 替换系统文件 replac
  • PLC实现积分的计算方法

    以电机运行转速来计算电机运行圈数为例 在PLC中定义定时器中断 xff0c 中断时间设置为200ms 转载于 https www cnblogs com chenpan6227 p 11558647 html
  • PLC中相关量的斜坡控制

    转载于 https www cnblogs com chenpan6227 p 11558750 html
  • PLC中m法计算电机转速

    转载于 https www cnblogs com chenpan6227 p 11558715 html
  • oauth2.0+jwt 源码探究之旅

    oauth2 0协议是一种对外开放式协议 xff0c 主要用于第三方登录授权 例如 xff1a 在豆瓣官网点击用qq登录 以及微信的授权都是基于oauth2 0协议做的 oauth2 0的认证流程 xff08 A xff09 用户打开客户端
  • 读取 appsettings.json

    Appsettings json 配置 xff1a 个配置文件就是一个json文件 xff0c 并且是严格的json文件 xff0c 所有的属性都需要添加 引号 下图是一个常规的代码示例 xff1a 34 UrlString 34 34 U
  • OVN学习整理

    部署OVN网络拓扑 OVN 安装软件包 etc yum repos d CentOS OpenStack ocata repo yum list installed grep openvswitch openvswitch x86 64 1
  • 关于python写文件时的回车符

    测试环境Windows 回车符是0x0D和0x0A俩个字符 xff0c 在python中记为 39 r n 39 写文件时 xff0c 如果文件打开格式为 39 w 39 xff0c 39 n 39 就按照0D 0A写入了文件 xff0c
  • 《对软件工程课程的期望》

    自我介绍 xff1a 各位老师 xff0c 同学大家好 我是软件三班 李德帅 xff0c 大三了我希望通过这学期学习软件工程这门课 xff0c 拓展丰富自己的知识领域 xff0c 提升自己的对软件编程的思维和素质 xff0c 并且还要在与小
  • 软件工程概论作业1

    1需要网站系统开发需要掌握的技术 1 gt html与css网页开发基础 2 gt jsp语言 3 gt javaBean技术 4 gt servlet技术 5 gt 数据库的操作技术 2本次课堂测试的程序源代码 1 xff09 登陆页面
  • lisp填写明细表对话框_中望机械绘图中,明细表功能的试用技巧

    在机械设计过程中 xff0c 明细表 即 BOM表 是CAD设计图纸中的重要组成部分 xff0c 它包含了图纸中所有零件的类型 序号 名称 材料 代号 规格 数量以及重量等信息 xff0c 是指导物流部门和生产部门采购的关键文件 xff0c
  • Ubuntu16.04 中文乱码问题解决

    Ubuntu16 04 中文乱码问题解决 要适配一个服务 xff0c 用了mysql5 7的版本 xff0c 最新的Ubuntu适配起来头秃 xff08 直接用mysql8 0又出现jdbc接口修改的问题 xff09 xff0c 所以直接切
  • Centos 安装 kubectl kubelet kubeadm

    cat lt lt EOF gt etc yum repos d kubernetes repo kubernetes name 61 Kubernetes baseurl 61 https mirrors aliyun com kuber
  • 51单片机 中断控制蜂鸣器

    51单片机 中断控制蜂鸣器 单片机通过使用外部中断控制蜂鸣器 include lt reg51 h gt define uint unsigned int define uchar unsigned char 定义蜂鸣器连接的引脚 sbit
  • 正则表达式的分组

    一 概念 分组 我们已经提到了怎么重复单个字符 xff08 直接在字符后面加上限定符就行了 xff09 xff1b 但如果想要重复一个字符串又该怎么办 xff1f 你可以用小括号来指定子表达式 也叫做分组 xff0c 然后你就可以指定这个子
  • linux 触控板 不识别,关于Ubuntu下触摸板失灵的解决方法一例

    最近突然发现Ubuntu下触摸板失灵了 xff0c 从网上找方法 xff0c 什么换驱动 xff0c 改代码 xff0c 都试过了 xff0c 结果不仅没修好反而系统瘫了 后来看到有人说重启电脑 xff0c 我就一遍一遍重启 xff0c 还
  • 通达OA应用中心使用手册(脚本编写指南)

    脚本编写必备基础 1 1 什么是脚本 脚本是一段 PHP 代码 xff0c 可以被应用中心执行以实现特定功能 应用中心支持通过脚本实现以下功能 xff1a 自定义计算函数 自定义提取触发器 自定义回填触发器 编写脚本对于应用中心来说不是必须