TIPTOP对接通达OA工作流解析
2016-08-18 11:21
465 查看
思路:
1、从OA中读取流程基本资料到TIPTOP(XML),在TIPTOP中开发程序维护表单字段对应关系。
2、tiptop中依基本资料从表中取出数据打包成XML格式传送到OA处理。
3、OA处理完流程后调用TIPTOP接口回写状态
详细请看代码
1、OA接口段
相关资料请到http://download.csdn.net/detail/wanjin6666/9606425下载!
1、从OA中读取流程基本资料到TIPTOP(XML),在TIPTOP中开发程序维护表单字段对应关系。
2、tiptop中依基本资料从表中取出数据打包成XML格式传送到OA处理。
3、OA处理完流程后调用TIPTOP接口回写状态
详细请看代码
1、OA接口段
<?php // Descriptions...: 通达工作流webservice接口 // Date & Author..: 2016/07 By 老万 // QQ:460048964 // 声明:抛砖引玉 只可用于研究,不可用于商业用途! include_once("inc/conn.php"); include_once 'inc/utility_flow.php'; include_once 'inc/utility_sms1.php'; include_once 'inc/workflow/inc/workflow.inc.php'; Class Workflow { /** * 传送表单资料到通达工作流并发起工作流 * @param string $num1 * @return string */ public function Sendingfromdata($str1){ $dom = new DOMDocument(); $dom->loadXML($str1); $xml = new DOMDocument(); $xml->formatOutput = true; $response = $xml -> createElement('Response');//新建节点 $status = $xml -> createElement('Status'); //$code = $xml -> createAttribute('code');//新建属性 //$code_value = $xml -> createTextNode('0');//新建TEXT值 //$code -> appendChild($code_value);//将$code_value文本设为$code属性的值 $sqlcode = $xml -> createAttribute('sqlcode');//新建属性 $sqlcode_value = $xml -> createTextNode('0');//新建TEXT值 $sqlcode -> appendChild($sqlcode_value);//将$code_value文本设为$code属性的值 $description = $xml -> createAttribute('description');//新建属性 $description_value = $xml -> createTextNode('OK');//新建TEXT值 $description -> appendChild($description_value);//将$code_value文本设为$code属性的值 //$status -> appendChild($code);//设置$code为$execution字节点 $status -> appendChild($sqlcode);//设置$sqlcode为$execution字节点 $status -> appendChild($description);//设置$description为$execution字节点 $response -> appendChild($status);//设置$description为$execution字节点 $xml -> appendChild($response);//设置根节点 //处理flow_run,读Head节点 $Root=$dom->getElementsByTagName('Head'); db_query('START TRANSACTION',TD::conn()) or exit(mysql_error()); //开启事物处理 foreach ($Root AS $item) { $Flow_id = $item->getAttribute('Flow_id'); //流程ID $Flow_name = $item->getAttribute('Flow_name'); //流程名称 //$Promoter = $item->getAttribute('Promoter'); //流程发起人 $Promoter = '75'; //$Gem01 = $item->getAttribute('Gem01'); //流程发起人 $Gem01 = '1'; $Stime = $item->getAttribute('Stime'); //发起时间 $Etime = $item->getAttribute('Etime'); //接收时间 $Stime = date("Y-m-d").' '.date("H:i:s"); $Etime = date("Y-m-d").' '.date("H:i:s"); //$aa = iconv("utf-8",MYOA_CHARSET,'->TIPTOP'); $Wenhao = "{$Flow_name}({$Stime})->TIPTOP"; $Nuser = $item->getAttribute('Nuser'); //下一步接收人 $rid=mysql_fetch_array(db_query("select max(run_id) from `flow_run` ",TD::conn( ))); $run_id=$rid[0]+1;//run_id //return $Wenhao; $l_sql = "INSERT INTO flow_run VALUES (null,'{$run_id}', '{$Wenhao}', '{$Flow_id}', '{$Promoter}','{$Gem01}', '{$Stime}', null, '', '', '0', '', '0', '', '', '', '', '0', '', '0','0000-00-00 00:00:00')"; $l_sql = iconv("utf-8",MYOA_CHARSET,$l_sql); //exequery(TD::conn(), $l_sql); $result = @db_query($l_sql,TD::conn()); if (!$result){ echo $l_sql.mysql_errno().":".mysql_error()."<br>"; //$status -> setAttribute('code','-1'); $status -> setAttribute('sqlcode',mysql_errno()); $status -> setAttribute('description',"insert flow_run error:".mysql_error()); $str = $xml-> saveXML();//转换为字符串 //截取XML档前面的头信息进行输出 $e1 = strpos($str,'?>',0); //>出现的位置 $e2 = $e1+strlen('?>'); //包含本身的位置 $str1 = substr($str,$e2); // 取消utf-8 db_query('ROLLBACK',TD::conn()) or exit(mysql_error()); //判断当执行失败时回滚 return iconv(MYOA_CHARSET,"utf-8",$str1); exit; } else { print $l_sql."<br />"; } } //写入表单单头 $Masters=$dom->getElementsByTagName('Master'); foreach ($Masters AS $Master) { $Mname = $Master->getAttribute('Tname'); //单头表名 $Fileds = $Master->getElementsByTagName('Filed'); foreach ($Fileds AS $Filed) { $MCname = $Filed->getAttribute('Cname'); //字段名 $MValue = $Filed->getAttribute('Value'); //值 $MCname = str_replace('`',",",$MCname); $MValue = str_replace('`',"','",$MValue); $l_sql = "INSERT INTO {$Mname} (id,run_id,run_name,begin_user,begin_time,flow_auto_num,flow_auto_num_year,flow_auto_num_month, $MCname) VALUES (null,'{$run_id}', '{$Wenhao}','{$Promoter}','{$Stime}','0','0','0','{$MValue}')"; $l_sql = iconv("utf-8",MYOA_CHARSET,$l_sql); $result = @db_query($l_sql,TD::conn()); if (!$result){ echo $l_sql.mysql_errno().":".mysql_error()."<br>"; $status -> setAttribute('sqlcode',mysql_errno()); $status -> setAttribute('description',"insert {$Mname} error:".mysql_error()); $str = $xml-> saveXML();//转换为字符串 //截取XML档前面的头信息进行输出 $e1 = strpos($str,'?>',0); //>出现的位置 $e2 = $e1+strlen('?>'); //包含本身的位置 $str1 = substr($str,$e2); // 取消utf-8 db_query('ROLLBACK',TD::conn()) or exit(mysql_error()); //判断当执行失败时回滚 return iconv(MYOA_CHARSET,"utf-8",$str1); exit; } else { print $l_sql."<br />"; } } } $mid=mysql_fetch_array(db_query("select max(id) from $Mname",TD::conn( ))); $Tname_id=$mid[0];//表头id //写入表单单身 $Details=$dom->getElementsByTagName('Detail'); foreach ($Details AS $Detail) { $Dname = $Detail->getAttribute('Tname'); //单身表名 $Fname = $Detail->getAttribute('Fname'); //对应单身字段 $Fileds = $Detail->getElementsByTagName('Filed'); $l_cnt=1; foreach ($Fileds AS $Filed) { $DCname = $Filed->getAttribute('Cname'); //字段名 $DValue = $Filed->getAttribute('Value'); //值 if (!empty($Fname)) { if ($l_cnt == 1) { $Uvalue = "{$DValue}`\r\n"; } else { $Uvalue = "{$Uvalue}{$DValue}`\r\n"; } } $DCname = str_replace('`',",",$DCname); $DValue = str_replace('`',"','",$DValue); $l_sql = "INSERT INTO {$Dname} (id,run_id,main_table,main_id,$DCname ) VALUES (null,'$run_id','$Mname','$Tname_id','$DValue' )"; $l_sql = iconv("utf-8",MYOA_CHARSET,$l_sql); $result = @db_query($l_sql,TD::conn()); if (!$result){ echo $l_sql.mysql_errno().":".mysql_error()."<br>"; $status -> setAttribute('sqlcode',mysql_errno()); $status -> setAttribute('description',"insert {$Dname} error:".mysql_error()); $str = $xml-> saveXML();//转换为字符串 //截取XML档前面的头信息进行输出 $e1 = strpos($str,'?>',0); //>出现的位置 $e2 = $e1+strlen('?>'); //包含本身的位置 $str1 = substr($str,$e2); // 取消utf-8 db_query('ROLLBACK',TD::conn()) or exit(mysql_error()); //判断当执行失败时回滚 return iconv(MYOA_CHARSET,"utf-8",$str1); exit; } else { print $l_sql."<br />"; } $l_cnt = $l_cnt+1; } //更新单身栏位 if (!empty($Fname)) { $l_sql = "update $Mname set $Fname='$Uvalue' where run_id=$run_id and id=$Tname_id"; $l_sql = iconv("utf-8",MYOA_CHARSET,$l_sql); $result = @db_query($l_sql,TD::conn()); if (!$result){ echo $l_sql.mysql_errno().":".mysql_error()."<br>"; $status -> setAttribute('sqlcode',mysql_errno()); $status -> setAttribute('description',"update {$Mname} error:".mysql_error()); $str = $xml-> saveXML();//转换为字符串 //截取XML档前面的头信息进行输出 $e1 = strpos($str,'?>',0); //>出现的位置 $e2 = $e1+strlen('?>'); //包含本身的位置 $str1 = substr($str,$e2); // 取消utf-8 db_query('ROLLBACK',TD::conn()) or exit(mysql_error()); //判断当执行失败时回滚 return iconv(MYOA_CHARSET,"utf-8",$str1); exit; } else { print $l_sql."<br />"; } } } //发起 $l_sql="INSERT INTO flow_run_prcs VALUES (null, '$run_id', '1', '$Promoter', '$Stime', '$Etime', '3', '1', '1', '0', '0', '0', '', '', '', '', '0', '$Stime', '', '0000-00-00 00:00:00', '', '1', '0', '0', '0', '0', '0', '', '', '0', '0', '0')"; $l_sql = iconv("utf-8",MYOA_CHARSET,$l_sql); $result = @db_query($l_sql,TD::conn()); if (!$result){ echo $l_sql.mysql_errno().":".mysql_error()."<br>"; $status -> setAttribute('sqlcode',mysql_errno()); $status -> setAttribute('description',"insert flow_run_prcs error:".mysql_error()); $str = $xml-> saveXML();//转换为字符串 //截取XML档前面的头信息进行输出 $e1 = strpos($str,'?>',0); //>出现的位置 $e2 = $e1+strlen('?>'); //包含本身的位置 $str1 = substr($str,$e2); // 取消utf-8 db_query('ROLLBACK',TD::conn()) or exit(mysql_error()); //判断当执行失败时回滚 return iconv(MYOA_CHARSET,"utf-8",$str1); exit; } else { print $l_sql."<br />"; } //下一步 $l_sql="INSERT INTO flow_run_prcs VALUES (null, '$run_id', '2', '$Promoter', '0000-00-00 00:00:00', '0000-00-00 00:00:00', '1', '2', '1', '0', '1','0', '', '', '', ',', '0', '$Stime', '', '0000-00-00 00:00:00', '', '1', '1', '0', '0', '0', '0', '', '', '0', '0', '0')"; $l_sql = iconv("utf-8",MYOA_CHARSET,$l_sql); $prcs_id = mysql_fetch_array(db_query("select max(id) from flow_run_prcs where run_id={$run_id} and prcs_id=2",TD::conn( ))); $prcs_keyid = $prcs_id[0];//id $result = @db_query($l_sql,TD::conn()); if (!$result){ echo $l_sql.mysql_errno().":".mysql_error()."<br>"; $status -> setAttribute('sqlcode',mysql_errno()); $status -> setAttribute('description',"insert flow_run_prcs error:".mysql_error()); $str = $xml-> saveXML();//转换为字符串 //截取XML档前面的头信息进行输出 $e1 = strpos($str,'?>',0); //>出现的位置 $e2 = $e1+strlen('?>'); //包含本身的位置 $str1 = substr($str,$e2); // 取消utf-8 db_query('ROLLBACK',TD::conn()) or exit(mysql_error()); //判断当执行失败时回滚 return iconv(MYOA_CHARSET,"utf-8",$str1); exit; } else { print $l_sql."<br />"; } $str = $xml-> saveXML();//转换为字符串 $e1 = strpos($str,'?>',0); //>出现的位置 $e2 = $e1+strlen('?>'); //包含本身的位置 $str1 = substr($str,$e2); // 取消utf-8 db_query('COMMIT',TD::conn()) or exit(mysql_error());//提交事务 //此处不能执行消息推送,会导致接口返回错误 //$REMIND_URL = "1:workflow/list/input_form/?RUN_ID={$run_id}&FLOW_ID={$Flow_id}&PRCS_ID=2&FLOW_PRCS=2&PRCS_KEY_ID={$prcs_keyid}"; //$SMS_CONTENT = "您有新的工作需要办理,流水号:{$run_id},工作名称/文号:".iconv("utf-8",MYOA_CHARSET,$Wenhao); //@send_sms($Stime, $Promoter, $Promoter.',', '7', $SMS_CONTENT, $REMIND_URL); return iconv(MYOA_CHARSET,"utf-8",$str1); } public function Getformdata($str1){ //取出流程资料 if (!$str1) { $str1='1=1'; } $query = "select * from flow_type where ".$str1; $cursor = exequery(TD::conn(), $query); $xml = new DOMDocument('1.0', 'utf-8'); $xml->formatOutput = true; $response = $xml -> createElement('Response');//新建节点 $execution = $xml -> createElement('Execution');//新建节点 $data = $xml -> createElement('Document');//新建节点 //$flist = $xml -> createElement('FLOWLIST');//新建节点 $status = $xml -> createElement('Status'); if (!mysql_num_rows($cursor)){ $a1='-1'; $a2='0'; $a3='错误:无资料!'; } else { $a1='0'; $a2='0'; $a3=''; } $code = $xml -> createAttribute('code');//新建属性 $code_value = $xml -> createTextNode($a1);//新建TEXT值 $code -> appendChild($code_value);//将$code_value文本设为$code属性的值 $sqlcode = $xml -> createAttribute('sqlcode');//新建属性 $sqlcode_value = $xml -> createTextNode($a2);//新建TEXT值 $sqlcode -> appendChild dc46 ($sqlcode_value);//将$code_value文本设为$code属性的值 $description = $xml -> createAttribute('description');//新建属性 $description_value = $xml -> createTextNode($a3);//新建TEXT值 $description -> appendChild($description_value);//将$code_value文本设为$code属性的值 //循环取出资料 $id=0; while($ROW = mysql_fetch_array($cursor)){ $id=$id+1; $RecordSet = $xml -> createElement('RecordSet');//新建节点(流程明细表) $id_n=$xml -> createAttribute('id'); $cnt=$xml -> createTextNode($id); $id_n->appendChild($cnt); $RecordSet -> appendChild($id_n); $Master = $xml -> createElement('Master');//新建节点 $flow_id=$xml -> createAttribute('FLOW_ID'); $flow_id_value=$xml -> createTextNode($ROW['FLOW_ID']); $flow_id->appendChild($flow_id_value); $Master -> appendChild($flow_id); $RecordSet -> appendChild($Master); $flow_name=$xml -> createAttribute('FLOW_NAME'); $flow_name_value=$xml -> createTextNode($ROW['FLOW_NAME']); $flow_name->appendChild($flow_name_value); $Master -> appendChild($flow_name); $RecordSet -> appendChild($Master); $table=$xml -> createAttribute('TABLE'); $table_value=$xml -> createTextNode('flow_data_'.$ROW['FLOW_ID']); $table->appendChild($table_value); $Master -> appendChild($table); $RecordSet -> appendChild($Master); $form_id=$xml -> createAttribute('FORM_ID'); $form_id_value=$xml -> createTextNode($ROW['FORM_ID']); $form_id->appendChild($form_id_value); $Master -> appendChild($form_id); $RecordSet -> appendChild($Master); /* $flow_field=$xml -> createAttribute('FLOW_FIELD'); $flow_field_value=$xml -> createTextNode(''); $flow_field->appendChild($flow_field_value); $Master -> appendChild($flow_field); $RecordSet -> appendChild($Master); */ ////处理表结构与表单对应资料(表头) start $Record = $xml -> createElement('Record');//新建节点(表单表结构字段资料【单头】) $query1 = "select print_model from flow_form_type where form_id=".$ROW['FORM_ID']; $cursor1 = exequery(TD::conn(), $query1); if ($ROW1 = mysql_fetch_array($cursor1)) { $RELATION = $ROW1['print_model']; } //取表单中控件总数 $input = substr_count($RELATION,'input name="'); $img = substr_count($RELATION,'img name="'); $textarea = substr_count($RELATION,'textarea name="'); $select= substr_count($RELATION,'select name="'); $button= substr_count($RELATION,'button name="'); $fieldcount = $input + $img + $textarea; //取总个数,按个数取实际位置进行截取字符串 $n=0; //$field=array(); $filelen_a = strlen('input name="'); $filelen_b = strlen('img name="'); $filelen_c = strlen('textarea name="'); $filelen_d = strlen('select name="'); $filelen_e = strlen('button name="'); $b = 0; for ( $i = 1 ; $i <= $input ; $i++ ) { $a = strpos($RELATION,'input name="',$b); $b = $a + $filelen_a; $d = strpos($RELATION,'"',$b); $text = substr($RELATION,$b,$d-$b); $n=$n+1; $d = strpos($RELATION,'" title="',$b) + strlen('" title="'); $e = strpos($RELATION,'"',$d); $text1 = substr($RELATION,$d,$e-$d); $Field = $xml -> createElement('Field');//新建节点(表单和表结构栏位资料) $tname=$xml -> createAttribute('tname'); $tname_value=$xml -> createTextNode($text); $tname->appendChild($tname_value); $Field -> appendChild($tname); $Record -> appendChild($Field); $fname=$xml -> createAttribute('fname'); $fname_value=$xml -> createTextNode($text1); $fname->appendChild($fname_value); $Field -> appendChild($fname); $Record -> appendChild($Field); } //img name需进行判断,有的不存在表结构,有的是明细表 $b = 0; for ( $i = 1 ; $i <= $img ; $i++ ) { $a = strpos($RELATION,'img name="',$b); $b = $a + $filelen_b; $d = strpos($RELATION,'"',$b); $text = substr($RELATION,$b,$d-$b); if(substr($text,0,4) == 'DATA') { //将单身排除出去 $a1 = strpos($RELATION,'/>',$b); //找出<img标签对应结束标签的位置 $Detail_text=substr($RELATION,$b,$a1-$b); //截取单身HTML的代码块 if(strstr($Detail_text,"lv_field")) { //判断是否包含字符,确定是否为单身 continue; //退出 } else { $n=$n+1; $d = strpos($RELATION,'" title="',$b) + strlen('" title="'); $e = strpos($RELATION,'"',$d); $text1 = substr($RELATION,$d,$e-$d); $Field = $xml -> createElement('Field');//新建节点(表单和表结构栏位资料) $tname=$xml -> createAttribute('tname'); $tname_value=$xml -> createTextNode($text); $tname->appendChild($tname_value); $Field -> appendChild($tname); $Record -> appendChild($Field); $fname=$xml -> createAttribute('fname'); $fname_value=$xml -> createTextNode($text1); $fname->appendChild($fname_value); $Field -> appendChild($fname); $Record -> appendChild($Field); } } } $b = 0; for ( $i = 1 ; $i <= $textarea ; $i++ ) { $a = strpos($RELATION,'textarea name="',$b); $b = $a + $filelen_c; $d = strpos($RELATION,'"',$b); $text = substr($RELATION,$b,$d-$b); $n=$n+1; $d = strpos($RELATION,'" title="',$b) + strlen('" title="'); $e = strpos($RELATION,'"',$d); $text1 = substr($RELATION,$d,$e-$d); $Field = $xml -> createElement('Field');//新建节点(表单和表结构栏位资料) $tname=$xml -> createAttribute('tname'); $tname_value=$xml -> createTextNode($text); $tname->appendChild($tname_value); $Field -> appendChild($tname); $Record -> appendChild($Field); $fname=$xml -> createAttribute('fname'); $fname_value=$xml -> createTextNode($text1); $fname->appendChild($fname_value); $Field -> appendChild($fname); $Record -> appendChild($Field); } $b = 0; for ( $i = 1 ; $i <= $select ; $i++ ) { $a = strpos($RELATION,'select name="',$b); $b = $a + $filelen_d; $d = strpos($RELATION,'"',$b); $text = substr($RELATION,$b,$d-$b); $n=$n+1; $d = strpos($RELATION,'" title="',$b) + strlen('" title="'); $e = strpos($RELATION,'"',$d); $text1 = substr($RELATION,$d,$e-$d); $Field = $xml -> createElement('Field');//新建节点(表单和表结构栏位资料) $tname=$xml -> createAttribute('tname'); $tname_value=$xml -> createTextNode($text); $tname->appendChild($tname_value); $Field -> appendChild($tname); $Record -> appendChild($Field); $fname=$xml -> createAttribute('fname'); $fname_value=$xml -> createTextNode($text1); $fname->appendChild($fname_value); $Field -> appendChild($fname); $Record -> appendChild($Field); } $b = 0; for ( $i = 1 ; $i <= $button ; $i++ ) { $a = strpos($RELATION,'button name="',$b); $b = $a + $filelen_e; $d = strpos($RELATION,'"',$b); $text = substr($RELATION,$b,$d-$b); $n=$n+1; $d = strpos($RELATION,'" title="',$b) + strlen('" title="'); $e = strpos($RELATION,'"',$d); $text1 = substr($RELATION,$d,$e-$d); $Field = $xml -> createElement('Field');//新建节点(表单和表结构栏位资料) $tname=$xml -> createAttribute('tname'); $tname_value=$xml -> createTextNode($text); $tname->appendChild($tname_value); $Field -> appendChild($tname); $Record -> appendChild($Field); $fname=$xml -> createAttribute('fname'); $fname_value=$xml -> createTextNode($text1); $fname->appendChild($fname_value); $Field -> appendChild($fname); $Record -> appendChild($Field); } $Master -> appendChild($Record); //处理表结构与表单对应资料 end ////处理表结构与表单对应资料(表身) start //img name需进行判断,有的不存在表结构,有的是明细表 $b = 0; for ( $i = 1 ; $i <= $img ; $i++ ) { $a = strpos($RELATION,'img name="',$b); $b = $a + $filelen_b; $d = strpos($RELATION,'"',$b); $text = substr($RELATION,$b,$d-$b); if(substr($text,0,4) == 'DATA') { $a1 = strpos($RELATION,'/>',$b); //找出<img标签对应结束标签的位置 $Detail_text=substr($RELATION,$b,$a1-$b); //截取单身HTML的代码块 if(strstr($Detail_text,"lv_field")) { //判断是否包含字符,确定是否为单身 //处理单身对应的资料 $Detail = $xml -> createElement('Detail');//新建节点(表单表结构字段资料【单身】) $Record1 = $xml -> createElement('Record');//新建节点 //$Field = $xml -> createElement('Field');//新建节点(表单和表结构栏位资料) $flow_id=$xml -> createAttribute('FLOW_ID'); $flow_id_value=$xml -> createTextNode($ROW['FLOW_ID']); $flow_id->appendChild($flow_id_value); $Detail -> appendChild($flow_id); $t1=strpos($Detail_text,'title="',0)+strlen('title="'); $t2=strpos($Detail_text,'"',$t1); $t_name=substr($Detail_text,$t1,$t2-$t1); $tablen=$xml -> createAttribute('TABLE_NAME'); $tablen_value=$xml -> createTextNode($t_name); $tablen->appendChild($tablen_value); $Detail -> appendChild($tablen); $tn=substr($text,5); //取出控件名称后数值 //取出控件名称作为table名title=" $table=$xml -> createAttribute('TABLE'); $table_value=$xml -> createTextNode('flow_data_'.$ROW['FLOW_ID'].'_list_'.$tn); $table->appendChild($table_value); $Detail -> appendChild($table); $flow_field=$xml -> createAttribute('FLOW_FIELD'); $flow_field_value=$xml -> createTextNode(''); $flow_field->appendChild($flow_field_value); $Detail -> appendChild($flow_field); $RecordSet -> appendChild($Detail); //修改属性-Master节点FLOW_FIELD # $Master1=$xml->getElementsByTagName("Master")->item(4); $Detail -> setAttribute('FLOW_FIELD','DATA_'.$tn); //截取字符进行处理单身字段资料lv_title lv_field $d1 = strpos($Detail_text,'lv_field="',0); //lv_field出现的位置 $d2 = $d1+strlen('lv_field="'); //包含本身的位置 $d3 = strpos($Detail_text,'"',$d2); //“出现的位置 $lv_field = substr($Detail_text,$d2,$d3-$d2); // lv_field的值 //$lv_field = substr($lv_field,0,strlen($lv_field)-1); //截取掉最后一个` $d1 = strpos($Detail_text,'lv_title="',0); //lv_field出现的位置 $d2 = $d1+strlen('lv_title="'); //包含本身的位置 $d3 = strpos($Detail_text,'"',$d2); //“出现的位置 $lv_title = substr($Detail_text,$d2,$d3-$d2); // lv_field的值 //$lv_title = substr($lv_title,0,strlen($lv_title)-1); //截取掉最后一个` //$filelen_e = strlen('button name="'); //字符串拆解 $d4 = substr_count($lv_field,'`');//取出有多少个值 $character1 = explode('`', $lv_field, $d4);//分割到数组 $character2 = explode('`', $lv_title, $d4);//分割到数组 for ($ii=0;$ii<count($character1);$ii++) { $Field1 = $xml -> createElement('Field');//新建节点(表单和表结构栏位资料) $tname1=$xml -> createAttribute('tname'); if ($ii==count($character1)-1) { //为最后一项时截取字符后一位的`字符 $filed_v1=substr($character1[$ii],0,strlen($character1[$ii])-1); $filed_v2=substr($character2[$ii],0,strlen($character2[$ii])-1); } else { $filed_v1=$character1[$ii]; $filed_v2=$character2[$ii]; } $tname1_value=$xml -> createTextNode('item_'.$filed_v1); $tname1->appendChild($tname1_value); $Field1 -> appendChild($tname1); $Record -> appendChild($Field1); $fname1=$xml -> createAttribute('fname'); $fname1_value=$xml -> createTextNode($filed_v2); $fname1->appendChild($fname1_value); $Field1 -> appendChild($fname1); $Record1 -> appendChild($Field1); } $Detail -> appendChild($Record1); $RecordSet -> appendChild($Detail); } else { continue; //退出 } } } //$Detail -> appendChild($Record1); //$RecordSet -> appendChild($Detail); //处理表结构与表单对应资料 end $data -> appendChild($RecordSet); } //$data -> appendChild($RecordSet); $status -> appendChild($code);//设置$code为$execution字节点 $status -> appendChild($sqlcode);//设置$sqlcode为$execution字节点 $status -> appendChild($description);//设置$description为$execution字节点 $execution -> appendChild($status);//设置$description为$execution字节点 $response -> appendChild($execution);//设置execution为response字节点 $response -> appendChild($data);//设置data为response字节点 $xml -> appendChild($response);//设置根节点 $str = $xml-> saveXML();//转换为字符串 //截取XML档前面的头信息进行输出 $e1 = strpos($str,'?>',0); //>出现的位置 $e2 = $e1+strlen('?>'); //包含本身的位置 $str1 = substr($str,$e2); // lv_field的值 return iconv(MYOA_CHARSET,"utf-8",$str1); } public function Getwfexecution($str1){ return iconv(MYOA_CHARSET,"utf-8","成功!"); } public function Upworkflowstate($str1){ return iconv(MYOA_CHARSET,"utf-8","成功!"); } } ?>2、回写状态
<?php include_once("inc/conn.php"); include_once 'inc/auth.inc.php'; //include_once 'inc/utility_sms1.php'; //include_once("inc/utility_flow.php"); include_once( "general/workflow/plugin/plugin.inc.php" ); ob_end_clean(); //include_once '../plugin.inc.php'; //取出工作流表单中的关键值 $data=getRunData($RUN_ID); //$data=getRunData('26'); //var_dump($data); $prog_id = $data["prog_id"]; $arg1 = $data["单据编号"]; if (array_key_exists("序号",$data)) { $arg2 = $data["序号"]; } else { $arg2 = NULL; } //$prog_id="csft001"; //$arg1="RBB-2015100009"; //$arg2=11; echo $prog_id; echo $arg1; echo $arg2; try { $client = new SoapClient("http://192.168.1.2/cgi-bin/fglccgi/ws/r/aws_ttsrv2_toptest?WSDL"); if ($arg2==NULL) { $xml = "<Access> <Authentication user=\"tiptop\" password=\"tiptop\"/> <Connection application=\"test\" source=\"192.168.1.2\"/> <Organization name=\"DICOLOR\"/><Locale language=\"zh_cn\"/> <RequestContent> <Parameter> <Record> <Field name=\"command\" value=\"exe2 {$prog_id} '{$arg1}' 'efconfirm' \"/> </Record> </Parameter> </RequestContent> </Access> "; } else { $xml = "<Access> <Authentication user=\"tiptop\" password=\"tiptop\"/> <Connection application=\"test\" source=\"192.168.1.2\"/> <Organization name=\"DICOLOR\"/><Locale language=\"zh_cn\"/> <RequestContent> <Parameter> <Record> <Field name=\"command\" value=\"exe2 {$prog_id} '{$arg1}' {$arg2} 'efconfirm' \"/> </Record> </Parameter> </RequestContent> </Access> "; } $xml=iconv(MYOA_CHARSET,"utf-8",$xml); print_r("14"); print_r($xml)."<br />"; $return = $client->Exe2Command(array('request' => $xml)); } catch (SOAPFault $e) { print_r('Exception:'.$e); } ?>
相关资料请到http://download.csdn.net/detail/wanjin6666/9606425下载!
相关文章推荐
- TIPTOP ERP与通达OA工作流集成案例
- 通达OA2015版工作流插件和列表控件数据解析
- Activiti工作流REST方式访问URI的解析
- 通达OA 小飞鱼工作流在线培训教程(四)HTML的frameset和iframe
- 微信公众号开发:PHP,对接微信公众账号的测试文档wx_sample.php的解析
- 通达OA工作流插件--保存OA流程中的所有附件+流程表单到指定目录(2013adv,2015,2016)
- 通达OA 打通工作流与其他系统数据关联,系统整合新思路
- 通达OA工作流-表单设计
- 通达OA 工作流流转过程中使用系统自带的提醒功能设置(图文)
- 通达OA 小飞鱼老师OA工作流设计课程教学网络公开课之HTML基础(一)
- 通达OA二次开发 桌面信息中心工作流按紧急级别排序(图文)
- 通达OA 小飞鱼工作流在线培训教程目录及意见征集
- Asp.net IO流发送Post请求详细解析(通常用于和其他系统对接例如微信公众号)
- 通达OA 小飞鱼工作流在线培训教程(四)HTML的frameset和iframe
- 通达OA触发器--压缩保存工作流中的表单文件和所有附件到服务器的指定目录(2013adv,2015,2016)
- 通达OA二次开发,自动发起流程的函数解析与使用实例
- activiti工作流,驳回问题详细解析(尤其会签的驳回问题)
- 通达OA 测试2015新版工作流触发器(插件)的系统兼容性(图文)
- 通达OA二次开发 小飞鱼工作流业务流程分级管理系统(图文)
- 通达OA 小飞鱼工作流在线培训教程目录及意见征集