attachment(非attachmentSimple)相关的附件组件上传会在SA_DocNode中产生记录,记录中存的有提交者相关的信息如:提交者FID(sCreatorFID)
因此在删除的时候可以获取这个关系的值跟当前人的fID做比较控制删除

附件组件中的文件在删除的时候会触发组件的onDelete事件,此事件中可以获取到删除文件的docID
可以通过获取到的docID到SA_DocNode中(sID的值)查找对应记录的sCreatorFID
本例定义action查找sCreatorFID并返回,action中定义一个参数docID
如下:
action的定义

<action name="getDocCreatorAction" global="false"
		procedure="getDocCreatorProcedure">
		<label language="zh_CN">获取附件上传者</label>
		<public type="String" name="docID"></public>
	</action>

Procedure的定义

  <procedure name="getDocCreatorProcedure" code-model="/appdemo/test/logic/code" code="Test.getDocCreator"> 
    <parameter name="docID" type="String"/> 
  </procedure> 

对应的java代码的定义

	public static String getDocCreator(String docID){
		String ksql = "select doc.sCreatorFID from SA_DocNode doc where doc ='"+docID+"'";
		Table table = KSQL.select(ksql, null, "/system/data", null);
		String sCreatorFID = "";
		if(table.size()>0){
			Row r = table.iterator().next();
			sCreatorFID = r.getString("sCreatorFID");
		}
		return sCreatorFID;
	}

在组件的onDelete事件中获取当前人的fID,并调用action获取提交者fID进行比较控制删除

	Model.prototype.attachmentPC7Delete = function(event){
		var docID = event.data.docID;//获取删除文件的docID
		var personFID = this.getContext().getCurrentPersonMemberFID();//获取当前人员成员的fID
		if(event.source.$activeDoc.get()){
		//调用action传入docID的值获取返回值
			var actiomParam = new biz.Request.ActionParam();
			actiomParam.setString('docID', docID);
			biz.Request.sendBizRequest({
				"context" : this.getContext(),
				"action" : "getDocCreatorAction",
				"parameters" : actiomParam,
				"callback" : function(callbackData) {
					if (callbackData.state) {
					   if(personFID !== callbackData.response){//当前人员成员的fID与action返回的提交者fID进行比较
						   alert("不允许删除他人上传的文件");
						   event.cancel = true;//两个fID的值不等时中断删除操作
					   }
					} else
						alert("执行失败");
				}
			});		
		}
	};