BPM-XPDL
view release on metacpan or search on metacpan
lib/BPM/XPDL.pm view on Meta::CPAN
{ prefixes => { '' => NS_XPDL_21 }
}
, '2.2' =>
{ prefixes => { '' => NS_XPDL_22 }
}
);
#--------
sub new($)
{ my $class = shift;
$class->SUPER::new(direction => 'RW', @_);
}
sub init($)
{ my ($self, $args) = @_;
$args->{allow_undeclared} = 1
unless exists $args->{allow_undeclared};
$self->SUPER::init($args);
$self->anyElement('ATTEMPT');
$self->addCompileOptions(RW => sloppy_floats => 1, sloppy_integers => 1);
$self->addCompileOptions(READERS => mixed_elements => 'XML_NODE');
lib/BPM/XPDL.pm view on Meta::CPAN
$self->addPrefixes(xpdl20 => NS_XPDL_20);
push @xsds, glob "$xsd/xpdl-2.0/*";
$self->addKeyRewrite('PREFIXES(xpdl20)') if $prefix_keys;
}
$self->importDefinitions(\@xsds);
$self;
}
sub from($@)
{ my ($thing, $source, %args) = @_;
my $xml = XML::Compile->dataToXML($source);
my $top = type_of_node $xml;
my ($ns, $topname) = unpack_type $top;
my $version = $ns2version{$ns}
or error __x"unknown XPDL version with namespace {ns}", ns => $ns;
$topname eq 'Package'
or error __x"file does not contain a Package but {local}"
lib/BPM/XPDL.pm view on Meta::CPAN
$self->convert10to20($data)
if $self->version gt '1.0';
$self->convert20to21($data)
if $self->version gt '2.0';
}
(pack_type($self->namespace, 'Package'), , $data);
}
sub convert10to20($)
{ my ($self, $data) = @_;
trace "Convert xpdl version from 1.0 to 2.0";
# The conversions to be made are described in the XPDL specification
# documents. However, be aware that there are considerable additions.
my $ns = $self->namespace;
my $prefix
= $ns eq NS_XPDL_20 ? 'xpdl20'
lib/BPM/XPDL.pm view on Meta::CPAN
}
}
# Order in WorkflowProcess changed. This is a no-op for X::C
}
$data->{PackageHeader}{XPDLVersion} = '2.0';
$data;
}
sub convert20to21($)
{ my ($self, $data) = @_;
trace "Convert xpdl version from 2.0 to 2.1";
# Tool has been removed from the spec. However, it can still be
# used in the old namespace, and I do not know how to convert it
# to 2.1 structures (yet)
my $ns = $self->namespace;
my $prefix
lib/BPM/XPDL.pm view on Meta::CPAN
}
}
$data->{PackageHeader}{XPDLVersion} = '2.1';
$data;
}
#----------
sub version() {shift->{version}}
sub namespace() {shift->{namespace}}
#--------
sub create($)
{ my ($self, $data) = @_;
my $doc = XML::LibXML::Document->new('1.0', 'UTF-8');
my $wr = $self->writer('Package')
or panic "cannot find Package type";
my $root = $wr->($doc, $data);
$doc->setDocumentElement($root);
$doc;
}
( run in 0.348 second using v1.01-cache-2.11-cpan-65fba6d93b7 )