X5对多维组织和矩形组织的支持
X5对多维组织和矩形组织的支持.doc
X5对多维组织和矩形组织的支持.doc
1、在Action的执行前后事件中获得调用Action的所有参数 调用ContextHelper.getActionContext().getParameter("参数名");方法,获得Action的某个参数的值 例如 Table table = (Table)ContextHelper.getActionContext().getParameter("table"); String ip = (String)ContextHelper.getActionContext().getParameter("ip"); 2、在Action的执行后事件中获得Action的返回值 调用ContextHelper.getActionContext().getActionResult();方法,获得Action的返回值。 ContextHelper.getActionContext().getActionResult(); 本文由WeX5君整理,WeX5一款开源免费的html5开发工具,H5 App开发就用WeX5! 阅读其他app 开发相关文章:http://doc.wex5.com/?p=3443
在分页显示数据的时候,只能看到当前页的记录,在界面上只能计算出当前页数据的合计。如果希望显示全部数据的合计,可以在queryAction中设置aggregate参数,在界面上就可以调用data组件的getAggregateValue方法获得全部数据的合计。 1、在queryAction中设置aggregate参数 说明:sum(ER_CGSQMXB.fSL) as totalQuantity表示计算fSL列的合计,并起名为totalQuantity,用于访问这个合计值 可以计算多个合计值,中间用逗号分隔,例如sum(ER_CGSQMXB.fSL) as total1,sum(ER_CGSQMXB.fMoney) as total2计算合计使用sum,计算平均值使用avg,计算记录数使用count 2、调用data组件的getAggregateValue方法 mainActivity.dataDetailAfterRefresh = function(event){</li> $("#sumValue").html(justep.xbl("dataDetail").getAggregateValue("totalQuantity")); }; 说明:在data组件的onAfterRefresh事件中,通过调用data组件的getAggregateValue方法,并传入合计值的别名,即可获得合计值 这个值是从数据库中计算出来的值,如果在界面上修改了相关的字段里面的值,需要写代码维护界面上的这个合计值。可以在data组件的onValueChanged事件中通过event.originalValue获得原值,event.value获得新值来维护合计值。 本文由WeX5君整理,WeX5一款开源免费的html5开发工具,H5 App开发就用WeX5! 阅读其他app 开发相关文章:http://doc.wex5.com/?p=3443
无论是BIZ模型还是UI模型中,在java代码中获取模型中的文件时,建议通过平台提供的FileSystem来实现,不建议直接使用自己拼装路径的方式实现。 具体方法如下: FileSystem fileSystem = FileSystemWrapper.instance(); String real = fileSystem.getRealPath("/SA/task/customFile.xml"); File file = new File(real); 其中getRealPath方法接收的参数就是资源文件的路径,以"/"开头, "/"表示BIZ目录。 本文由WeX5君整理,WeX5一款开源免费的html5开发工具,H5 App开发就用WeX5! 阅读其他app 开发相关文章:http://doc.wex5.com/?p=3443
流转给一个人 用 relationValue 取到人员的id,再用 findPersonMembersByID 方法根据人的ID获取人员成员 流转给多个人 需要自己定义一个函数,将多个人的ID转成一个ID List,再调用 findPersonMembersByIDListfindPersonMembersByIDList(list(list('组织ID', '人ID'), list('组织ID', '人ID')))其中组织ID可以为空,人ID可以到SA_OPPerson中查找sID的值。具体步骤如下 1、自定义一个函数返回执行者的list <fn name="dyExcutorFn" category="自定义" code-model="/demo/misc/logic/code" code="Zx.dyExecutor" type="List<List<String>>"> <label language="zh_CN">自定义执行者</label> </fn> public static List<List<String>> dyExecutor() { List<List<String>> list1=new ArrayList<List<String>>(); List<String> list2=new ArrayList<String>(); [...]
发的邮件是文本格式,只有标题 实现通知功能 本例子是在请假申请环节流转后向总经理发邮件 如图: 1. 用附件中的mail.jar替换runtime\BusinessServer\WEB-INF\lib里面的mail.jar 2. 将附件中的MailSenderInfo.java MyAuthenticator.java SimpleMailSender.java三个文件(发邮件用)复制到流程目录下的dsrc目录下 3. 在请假申请环节的onAfterAdvance事件中获取信息发邮件 代码如下: import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import com.justep.system.opm.api.Person; import com.justep.system.process.*; import com.justep.system.opm.api.PersonHelper; public class EmailProcess { public static void businessActivity1AfterAdvance() { [...]
可以在js和java中写代码控制流程的启动、流转、回退、终止、结束 启动流程Java 需要引入 import com.justep.system.process.ProcessControl; import com.justep.system.process.ProcessUtils; 方法一介绍 Document startProcess (String processFullName, String name, String sData1, String executor) 返回的Document内容如下 <items> <item> <process>/x5demo/rich/process/applyGoods/applyGoodsProcess</process> <activity>applyActivity</activity> <task>EC9BF028AAC64BDCA0809AC2689AA5B4</task> </item> </items> 示例——传入任务标题、业务主键、执行者,启动流程后可以得到task String sData1 [...]
由流程向导生成的功能是一打开功能,就显示一个流程的信息,有时候需要一打开功能,就显示多个流程的信息,例如下面的界面 在这个功能中,可以新建一个流程、启动流程、流转、回退,也可以多选后,进行批量操作,例如:批量启动流程,批量流转流程还通过定义了公共事件,在启动和流转之后,将该流程的处理环节和处理人回写到业务数据中,这个例子是在综合案例里面的订单流程基础上扩展的,在/UI/demo/misc/process/order目录下新建listActivity.w文件 启动流程 在listActivity.w文件中放一个process组件,调用这个组件的start方法,启动流程 不需要设置process组件的data属性,auto-start、auto-close、auto-filter、auto-save都设置为false代码如下,第3个参数传列表data的行ID justep.xbl("process1").start( null, null, justep.xbl("listData").getID(), null); 因为已经启动了的流程不能再次启动,所以,为避免重复启动,应添加适当的判断代码 新建流程 在listActivity.w文件中,放一个windowRunner组件,调用它的open方法,打开订单流程的启动界面,代码如下 justep.xbl("detailRunner").open(null,"/demo/misc/process/order/mainActivity.w","订单"); 这样就实现了在列表流程中新建一个流程,至于在保存时是否需要启动流程,就通过设置/UI/demo/misc/process/order/mainActivity.w里面的process组件(flwcOrder)的属性auto-start来控制,设置为true,则保存后启动流程,设置为false,则不启动流程 处理流程 处理流程就是对流程进行流转、回退等操作,方法是点击处理流程按钮时,调用windowRunner组件的open方法打开流程当前环节对应的w文件,在界面上进行流转、回退等操作。 例如:流程的当前环节如果是订单申请(orderReportActivity),就打开/UI/demo/misc/process/order/orderReportActivity.w文件 流程的当前环节如果是部门经理审核(deptActivity),就打开/UI/demo/misc/process/order/deptActivity.w那么,如何获得流程的当前环节等信息呢这就需要,访问sa_task表,在listActivity.w中放一个bizdata组件(dataTask),概念concept属性设置为sa_task,设置过滤条件为 (SA_Task.sKindID='tkTask' or SA_Task.sKindID='tkExecutor' or SA_Task.sKindID IS NULL) and (SA_Task.sStatusID='tesReady' or SA_Task.sStatusID='tesExecuting') and (SA_Task.sTypeID IS NULL [...]
流程流转后的事件中获取: public static void bizActivity1AfterAdvance() { ProcessControl flowControl = (ProcessControl)ContextHelper.getActionContext().getParameter("control"); for (ProcessControlItem to : flowControl.getFlowTos()) { for (OrgUnit ect : to.getExecutors()) { System.out.println("=========fid--->"+ect.getFID()); System.out.println("=========fname--->"+ect.getFName()); } } } [...]
一. 流程的批启动 使用场景:针对某个data中的数据,为每一条记录启动一个流程实例。 接口协议:输入data中多个记录的id,启动多个流程实例;返回这些流程实例的第一个环节的待办任务(注意:要求每个流程实例有且只有一条待办任务,后续才能执行批流转); 实现方式:有两种方式 1. 使用process组件来启动多个流程实例 1.0 设置process组件的属性: auto-close=true; auto-start=false; auto-save=true; auto-filter=false; 1.1 声明一个全局变量,用来存储流程启动后的待办任务 var tasks = []; //用于存在流程启动后关系的待办,将会在process的start commit事件中赋值 1.2 遍历data中的数据,分别启动流程 function batchStartProcess(dataID, processID){ var data = justep.xbl(dataID); if (data.getCount()<1){ alert("当前业务数据为空!"); return; [...]