阅读:1947 回复:9
实名用户_21165d0a
3

帖子

7

跟帖

1006

积分

初级榴莲
初级榴莲

文件审批

楼主#
更多 发布于:2018-05-29 11:57
谁知道在H3BPM中按照文件分类上传经过经理审核之后才能上传到该分类的存储地方。这个怎样做的
岩竹玉雨
20

帖子

840

跟帖

205241

积分

论坛版主
论坛版主
  • 社区居民
  • 忠实会员
1楼#
发布于:2018-05-29 15:36
最首先的:我要先问你什么版本等问题。。。我才能给你给给出具体的设置以及部分代码截图。所以这部分你忽略,那我也就忽略了。
首先你先明白两个问题?
1:H3上传后的文件在哪里?
2:你知不知到流程表单中可以自己写代码、在哪里写、怎么写、写什么代码(看过使用教程后再来看下面的问题2)
以下回答均按照net V10.X作答
问题1;H3默认文件存储方式是在数据库中的。OT_Attachment表中,存的是进制文件,可以将其保存为正常的文件。其他存储方式,自己设置自己体验,但是由于版本不同,设置位置可能有些不同。你自己找找吧。
问题2:首先你先创建一个流程。并且使用自定义表单。(不使用默认表单的原因是因为现版本中存在request.form 潜在危险检测,所以后台自己写的代码根本提交不了)。将默认表单的代码拷贝到你的自定义表单中。
其中你会发现这个页面的类继承了 OThinker.H3.Controllers.MvcPage这个类。F12进去看看。
其中有 SaveDataFields 和Submit方法我们可以利用一下。
在你的后台页面中重写其中一个方法。
 public override void SaveDataFields(MvcPostValue MvcPostValue, MvcResult MvcResult){
  //这样我们在这里就可以写一些自己的逻辑了。
           //后台常用参数代码
           //this.ActionContext.ActivityCode;    // 当前活动节点(对应编号)
            //this.ActionContext.ActivityTemplate.DisplayName    // 当前活动节点名称
            //this.ActionContext.BizObject;       // 当前数据模型对象
            //this.ActionContext.Engine;          // 引擎接口
            //this.ActionContext.IsOriginateMode; // 是否发起模式
            //this.ActionContext.IsWorkMode;      // 是否工作模式
            //this.ActionContext.SchemaCode;      // 当前数据模型编码
            //this.ActionContext.User;            // 当前用户对象
            //this.ActionContext.BizObjectID          // 当前表单数据实例id
            //this.ActionContext.InstanceId                //当前流程实例id
            //MvcPostValue.Command                                   //提交方式

                        
                        //已经写到这里了,那么你的问题是不是已经越来约清晰了呢?
                        //判断经理审批环节 并且 是提交操作
                        if(this.ActionContext.ActivityTemplate.DisplayName=="经理审批" && MvcPostValue.Command=="Submit"){
                        //那么经理已经同意了,我们是不是可以写些文件拷贝的操作了?
                        //但是文件在数据库中。怎么从数据库中取数据呢?
                        //获取当前表单实例对应的附件
                        var FileData= this.ActionContext.Engine.Query.QueryTable("select Content,FileName,ContentLength from  [dbo].[OT_Attachment] where BizObjectId='“+this.ActionContext.BizObjectID+”'");
                        //附件也有了。怎么把它拷贝到相应的地方去?这就是你该操心的了。
                        
                        }
  base.SaveDataFields(MvcPostValue, MvcResult);
 }

OThinker.H3.Controllers.MvcPage 中的其他方法也可以用override重写以达到自己的逻辑目的。
发问题贴的时候,可以@一下我,我就能更快的知道了
实名用户_21165d0a
3

帖子

7

跟帖

1006

积分

初级榴莲
初级榴莲
2楼#
发布于:2018-05-29 15:49
是H3bpmV10我的意思是经过经理审核之后上传到服务器中去
岩竹玉雨
20

帖子

840

跟帖

205241

积分

论坛版主
论坛版主
  • 社区居民
  • 忠实会员
3楼#
发布于:2018-05-29 15:58
实名用户_21165d0a:是H3bpmV10我的意思是经过经理审核之后上传到服务器中去回到原帖
哎。知不知道什么叫回复。你就当我刚才啥都没说。我也不知道你要问什么。再见
发问题贴的时候,可以@一下我,我就能更快的知道了
实名用户_21165d0a
3

帖子

7

跟帖

1006

积分

初级榴莲
初级榴莲
4楼#
发布于:2018-05-29 16:01
大神,我知道了,但是不知道在哪写
武汉技术支持团队
40

帖子

1181

跟帖

3860

积分

论坛版主
论坛版主
5楼#
发布于:2018-06-01 18:42
实名用户_21165d0a:大神,我知道了,但是不知道在哪写回到原帖
你先看一下产品基础知识培训的视频吧,第三天自定义表单培训
果冻栋吖
104

帖子

755

跟帖

2622

积分

论坛版主
论坛版主
  • 社区居民
  • 忠实会员
  • 优秀斑竹
6楼#
发布于:2018-06-02 08:05
岩竹玉雨:哎。知不知道什么叫回复。你就当我刚才啥都没说。我也不知道你要问什么。再见回到原帖
需要技术支持请添加QQ1772829123,提供H3产品定制开发,IT技术支持。
果冻栋吖
104

帖子

755

跟帖

2622

积分

论坛版主
论坛版主
  • 社区居民
  • 忠实会员
  • 优秀斑竹
7楼#
发布于:2018-06-02 08:12
武汉技术支持团队:你先看一下产品基础知识培训的视频吧,第三天自定义表单培训回到原帖
老大,问一句。自己在WebService中写更新SQL,前台表单可不可以不走缓存啊?用了好多都有缓存,重启服务才生效
需要技术支持请添加QQ1772829123,提供H3产品定制开发,IT技术支持。
岩竹玉雨
20

帖子

840

跟帖

205241

积分

论坛版主
论坛版主
  • 社区居民
  • 忠实会员
8楼#
发布于:2018-06-02 09:13
果冻栋吖:老大,问一句。自己在WebService中写更新SQL,前台表单可不可以不走缓存啊?用了好多都有缓存,重启服务才生效回到原帖
BizObjectManager.ReloadBizObject("流程编码","表单数据id")
http://wiki.h3yun.com/Default.aspx?code=IBizObjectManager10
发问题贴的时候,可以@一下我,我就能更快的知道了
果冻栋吖
104

帖子

755

跟帖

2622

积分

论坛版主
论坛版主
  • 社区居民
  • 忠实会员
  • 优秀斑竹
9楼#
发布于:2018-06-09 13:45
岩竹玉雨:BizObjectManager.ReloadBizObject("流程编码","表单数据id")
http://wiki.h3yun.com/Default.aspx?code=IBizObjectManager10
回到原帖
老哥,不是这个吧!
SetPropertyValue
不过问题来了,主表的可以。子表的不行哇!咋办呢?
@奥哲黄杰 @岩竹玉雨 @武汉技术支持团队
需要技术支持请添加QQ1772829123,提供H3产品定制开发,IT技术支持。
游客

返回顶部