![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Butterfly API
DDRTDTD
这个作者很懒,什么都没留下…
展开
-
Butterfly代码新建BO
当用session.createobject 创建BO时候,要给域hs_stateflow 和hs_state 赋值。怎么找到这2个值呢?2种方法。1.如果此bo在用户数据库中已有创建的记录,直接到用户数据库里面找就行了。2如果此bo在用户数据库里面没有记录,那么要到 hs_bf_sdb数据库里面.先找hs_stateflow的值,再找hs_state的值。找到hs_statefl原创 2012-04-13 12:26:52 · 645 阅读 · 0 评论 -
前台的Project 里面加人员
前台Project 里面加人和 角色里面加人 是比较麻烦的,尤其是人员比较多的时候。之前我写了一篇javascript前台加人的文章。下面是原厂的加人代码 ProjectUtil.java package com.hansky.tools.util;import com.hansky.apps.butterfly.intf.IAddInManager;import com.转载 2012-11-15 16:32:40 · 1390 阅读 · 0 评论 -
butterfly CODE DEMO2( ABOUT SUM)
IDataQuery query = session.createDataQuery();query.setTarget(session.getObjectDef("time_record"));query.addFilter("hs_is_deleted", SATConstants.SQL_OP_EQUAL, Boolean.FALSE); //Boolean.FALSELon转载 2012-09-26 17:11:13 · 1421 阅读 · 0 评论 -
(严重)HBP oracle 环境,double field 必须设置初始值
场景: 新建流程,表单中有double 类型的字段,且未填数据,点击确定结果报错说数据下溢。 原因: double型的字段不use default value,前台新建流程该字段为空,API中getDoubleField()获得的值并不是0,而是4.9E-324,该大小已经超过了数据库字段类型所能存储的范围。 解决办法 以后designer中加 类型为double的字段,转载 2012-11-20 15:32:25 · 465 阅读 · 0 评论 -
Butterfly API 注意事项二
1. 有2个字段为级联关系。即字段A改变,字段B的可选值也会跟着改变。记住,字段A的SetDependentValue域脚本会覆盖字段B的SetReferenceList脚本。打个比方,字段A的SetDependentValue域脚本里面设置了字段B的可选值范围[A-S],且可选值范围都为false(即都没有选择),字段B的SetReferenceList脚本也是设置了字段B的值(有一个可选原创 2012-06-11 19:33:27 · 491 阅读 · 0 评论 -
关于我前任附件控制的做法
过了大半年了,现在终于知道前任是怎么做到附件隐藏的了。在这里不得不佩服下。这个tiny detail 都能找得到。原理 : 在 t_attachment 表里面,有个栏位f_type ,当 值为1 时 ,前台附件可见,值为3时附件不可见。然后在any 节点的can transit 里面控制,如果有权限则将f_type设为1,如果没有权限则设置为3. 大致就是这样。不过前任在判断完成后,起了个线原创 2012-12-03 13:45:29 · 373 阅读 · 0 评论 -
记录下运维一二事
1.public IStateflowObject getContainer()If this is a composite object under a stateflow object or business object, return its container.这个方法用来获取 composite bo 挂在哪个 sfo/bo下面记录下 在 fieldscript 里面无论如原创 2013-01-22 10:32:02 · 508 阅读 · 0 评论 -
随手记下通过API获取LOV名称和UUID的便捷方式
新建个文本文档,保存名字为 xxx.bsh.内容仿照如下: import java.util.*;import com.hansky.apps.butterfly.server.ButterflyServer;import com.hansky.intf.sat.IBusObject;import com.hansky.intf.sat.IDataCollection;原创 2013-03-04 10:00:19 · 867 阅读 · 0 评论 -
Butterfly UI 编写方式
Hansky/HBP/Server/rsrc/rsrc/chtml/uiext/udb.uuid/sfo.name/sf.name/ 目录下/show/ +/sf_show.bsh +/${state_name}.bsh/trshow/ +/${state_name}-{transition_name}.bsh +/submit.b转载 2012-11-15 15:39:34 · 528 阅读 · 0 评论 -
关于默认的邮件模板
估计导出sfo成xml 的时候默认把 email模板里面 类型为 ALL SFO 类型的email 模板全部导了出来。类型为该类 sfo 的模板也一并导出,其他类sfo的模板不导出。原创 2013-03-20 10:51:19 · 531 阅读 · 0 评论 -
关于在代码里面使用同一个Session创建的同一个DATAQUERY
场景: 在一个session下面创建了一个dataquery 对象,准备查询2次,查询第一个对象A,过后再settarget 想查询另一个对象B。数据库一直报错: == == java.sql.SQLException :ORA - 00904 :"A"."F_CHECK_TYPE":invalid identifier打印出查询第一个对象的SQL 是完全没有问题的,一直没原创 2013-04-03 14:53:15 · 532 阅读 · 0 评论 -
jointable 的用法
前任从来没有用过jointable, 官方的例子也少得可怜,先贴上一段代码IDataQuery dq1 = session.createDataQuery(); dq1.setTarget(session.getObjectDef("PMSF")); dq1.addFilter("hs_is_deleted", SATConstants.SQL_OP_E原创 2012-07-16 19:52:27 · 5913 阅读 · 0 评论 -
关于lov的option显示问题
注意几点:1.在designer 中以 中文模式 编辑lov,不要进入英文模式编辑。2.抓取option的代码 op.getText("zh_CN") ,这个“zh_CN”必不可少。 不加的话,默认抓取 hs_option 表的 f_display_name字段,加了的话,是hs_option表和hs_locale表关联,抓取hs_locale表的f_text字段。故这点需要注意下。3原创 2013-04-07 10:12:27 · 765 阅读 · 0 评论 -
关于域脚本影响性能的情况
举个例子,比如页面上有5个single reference字段,而且是只读的,(反映到前台就是5个只读的下拉列表)分别引用了5个不同类型的BO,而且每个类型的BO表里的数据都有上千条记录。那么页面显示的时候,就有可能加载得特别慢。看下页面源代码,就可以发下, select的option 很多,把BO里面的所有记录都筛选出来了。这样就会造成加载慢的情况。要解决也很简单,为这写字段加上 域脚本原创 2013-04-18 14:15:31 · 629 阅读 · 0 评论 -
记下另一种获取状态等UUID相关信息的方法
import java.util.*;import com.hansky.intf.stateflow.*;import com.hansky.intf.sat.*;import com.hansky.intf.butterfly.*;import com.hansky.sln.spdbank.extraclass.Common;import com.hansky.apps.butter原创 2013-05-21 11:14:44 · 660 阅读 · 0 评论 -
将代码写在Butterfly外部的方法
//Designer中用于获取脚本路径的方法/** * Get path of scripts. * @param args SFEventArgs * @return String */public String getScriptsPath(SFEventArgs args){ String stateflowName = args.getStateflo转载 2012-11-15 16:14:58 · 410 阅读 · 0 评论 -
Butterfly 操作 Tab页面等
Hansky/HBP/Server/rsrc/rsrc/chtml/uiext/udb.uuid/sfo.name/sf.name/ 目录下/show/ +/sf_show.bsh sf_show.bsh 里面的内容import java.util.*;import javax.servlet.*;import javax.servlet.http.转载 2012-11-15 15:43:17 · 620 阅读 · 0 评论 -
oracle的环境下判空
oracle 默认把 空字符串都当成 null 处理。mysql倒不一样。mysql 里面 执行select count(*) from t_usr_pmsf where f_p_projman select count(*) from t_usr_pmsf where f_p_projman = ''; 3select count(*) from t_usr_pmsf w原创 2012-11-27 16:19:15 · 875 阅读 · 0 评论 -
Butterfly 域脚本里面的SetSelectionList函数的 IFieldValueList 参数
public void testsel_SetSelectionList(IButterflyContext ctx, IFieldValueList fvl, SFFieldEventArgs args) { System.out.println("FLV222: "+fvl.size());}IFieldValueList 获取的是testsel该字段引用的类型的对象的总数(比如t原创 2012-04-16 13:36:07 · 352 阅读 · 0 评论 -
关于 type 是subtask 类型的transition
type 是subtask 类型的transition 里的beforetransition 和 aftertransition 里面的代码 不会执行,即 在里面写的任何代码都不会起作用。必须在 subsfo 里面的beforetransition 和 aftertransition 函数里面写代码,通过 getparent 方法获得父sfo。原创 2012-07-20 18:01:53 · 283 阅读 · 0 评论 -
记录下Butterfly似Bug非Bug的特性
一直以为Butterfly导出的xml文件完完整整地记录了xml中的所有变化,然后导入到其他机器就相当于弄了个副本到了其他开发机器上面。发现特定的情况下,并不一定是这样。依旧是举个例子:开发机A导出了XMLA到开发机B上,可以发现此时开发机B 的bo为开发机A的副本。此时你再改动开发机A上bo的某个SFO(暂且叫做SFOA)的任意一个Transition的英文名称,然后导出XMLB到开原创 2012-07-24 19:51:44 · 503 阅读 · 0 评论 -
关于自动流转是否会自动执行bofore和after里面的函数
试了下,代码自动流转居然是 这2个函数都会执行的。晕死,记录下。原创 2012-08-11 12:25:05 · 1898 阅读 · 0 评论 -
关于butterfly数据库中的t_parent_sfo_obj 表
t_parent_sfo_obj 这张表记录了 父流程和子流程的关联关系,你可以主动用代码创建 一条表里面的记录。如果要取消 父流程和子流程 的关联(即去掉tab页里面的子流程) ,在t_parent_sfo_obj 这张表找到具体的某条记录,设置hs_is_deleted =1 即可取消关联。部分代码如下:IBusObject bo = s.createObject("parent_原创 2012-07-17 18:23:21 · 465 阅读 · 0 评论 -
开发策略思考
经过前一段时间的开发发现自己的开发中有些不足,列出来,以后改进:1.某个节点的处理人 以后默认考虑的时候 都为 多人,不要限定成一人。2.程序中节点的cantransit函数的判断最好不要通过 某个字段来判断,而是动态地通过函数来判断。3.对于太大的流程尽量搞出几个子流程,便于后人维护。4. 做好对象为空引用的异常处理。5.如果流程需要用到用户的条线和中心等属性,如果为空的话,原创 2012-07-22 13:34:15 · 276 阅读 · 0 评论 -
代码SAMPLE 1
public static void substract (ISession session) throws PersistenceException { IDataQuery dq = session.createDataQuery(); dq.setTarget(session.getObjectDef("doc")); //IBinaryFunction用来计算加、减、乘、除转载 2012-08-23 17:35:37 · 910 阅读 · 0 评论 -
关于打开Designer中userdb explorer 面板 报错
1.在solutionDB(对应hs_bf_sdb数据库中) 的 hs_userdb表中的记录,每一条对应一个userdb。在打开designer ,点击 UserDB--->UserDB Explorer, designer就会查这张表里的记录,通过抓取 f_db_port,f_db_url,f_db_user_name,f_db_driver ,f_db_password,f_db_typ原创 2012-09-28 17:15:53 · 915 阅读 · 0 评论 -
butterfly报错日志分析
1.EOFException(java.net.SocketException: Connection reset by peer: socket write error)Connection reset by peer的原因:经常出现的Connection reset by peer: 原因可能是多方面的,不过更常见的原因是:①:服务器的并发连接数超过了其承载量,服务器会将其中一些连转载 2012-09-11 12:00:45 · 1059 阅读 · 0 评论 -
关于default owner,default role owner 与can transit 的联系
default owner,default role owner 与can transit 没有任何关系。看了下HBP文档 default owner:在实际项目中若应用某一状态流时,处于某个状态的SFO的实体会自动出现在Owner的HBP收件箱(Inbox)中,等待处理。当SFO的实体离开某个状态时,它也会自动从该状态Owner的HBP收件箱中消失。default role owner原创 2012-10-08 16:31:53 · 481 阅读 · 0 评论 -
获取字段的前值和后值的方法
有状态SA 和状态SB, 两状态之间的transition 为 TA bo.getOldXXX 和sfo.getBoChanges 适用从SA 至SB , BO的改变。普通字段的获取:bo.getOldXXX 方法 ,myeclipse 有智能提示,一看便知。点击 TA transition:bo.getOldXXX 方法只适用于 beforetransition 代码原创 2012-09-11 12:16:15 · 1447 阅读 · 0 评论 -
关于multireference 的筛选查询
比如有个字段 MRA,是 multireference 的类型。(比如我要删选MR 里面是否引用了一个BO )一般的做法是构造对 MRA的jointable,然后对这个jointable 添加过滤器 其实可以这样写 dq.addFilter("MRA",SATconstants.SQL_OP_EQUAL, BO.GetOid)代码自动实现了上述的功能。原创 2012-11-02 12:18:53 · 702 阅读 · 0 评论 -
userdb 的hs_business_object 表分析
这张表记录了userdb里面的BO 和对应的表。主要有以下几个字段 f_visible_flag , f_editable_flag ,f_is_sfo,f_name ,f_table_name 首先 f_name 对应的是BO的名称,f_table_name 对应的是 数据库的tablenamef_visible_flag 为 0 表示designer 一般模式下不可见,工原创 2012-11-02 12:41:32 · 823 阅读 · 0 评论 -
Butterfly API注意事项一
1.每当创建一个session的时候,不管有没有调用session.txBegin,最好最后用session.txClose 关闭下session,其次IDataCollection对象使用过后也要关闭。上述2种情况会造成数据库连接过多,可能造成死锁。2.尽量不要使用retrieveAllObjects 方法很耗资源。3注意jdk版本问题造成的语法问题。4.新建sfo后,hs_summ原创 2012-04-10 13:03:27 · 561 阅读 · 0 评论 -
Butterfly API 分析3
1.如下的例子: ISession session = ctx.createSession(); session.txBegin(); IDataQuery dq = session.createDataQuery(); dq.setTarget(session.getObjectDef("zbqdrelated")); dq.addFiel原创 2012-11-06 21:00:35 · 1009 阅读 · 0 评论 -
java 远程调试butterfly
因为大部分脚本写在了jar包里面,可以实现远程调试。做法:修改 nt-service下的 jsl.ini配置文件:[java]jrepath = D:\j2sdk1.4.2_14params = 12param00 = -Xmx512mparam01 = -Xms32m param02 = -Xdebug param03 = -Xrunjdwp:transport=原创 2012-08-04 13:34:54 · 660 阅读 · 0 评论